R Flashcards
Histogramm plotten
Beispiel:
hist(Renditen,
breaks = 100,
main = “Zufällige Renditen”
xlab = “Rendite”,
ylab = “Anzahl”,
col = “grey”,
cex.main = 1.5
cex.lab = 1.2)
Leeren Vektor erstellen
Numerischer Vektor
Leerer_Vektor = numeric(length = “number”)
Allgemein
Leerer_Vektor = vector(mode, length)
Vektor definieren
Beispiele:
Über c()-Funktion
Vektor = c(2,5,9,14)
Über seq()-Funktion
Vektor = seq(9,12,1)
Bei Charakter-Vektoren müssen Begriffe in Anführungszeichen gesetzt werden!
Vektoren addieren
Add.Vektor = Vektor.1 + Vektor.2
Matrix definieren
Beispiele:
Über seq-Funktion
Matrix = matrix(seq(1,9,1),
nrow = 3,
ncol = 3,
byrow = TRUE)
Über c()Funktion
Matrix = matrix(c(1,2,8,6,9),
nrow = 2,
ncol = 3,
byrow = TRUE)
Über cbind-Funktion
Matrix = cbind(x, y,z)
cbind erstellt aus mehreren Vektoren eine Matrix. Jeder Vektor bildet dabei eine Spalte
Auch cbind kann in matrix() verpackt werden
Gauss Copula definieren
Beispiel:
Gauss.C = ellipCopula(family = “normal”,
param = c(rho1, rho2, rho3),
dim = 3,
dispstr = “un”))
Als Parameter werden die linearen Korrelationskoeffizienten übergeben.
Ziehen von Zufallszahlen aus einer Copula (in eine Matrix)
Beispiel:
U = rCorpula(10000, Gauss.C)
Es werden 10.000 Zufallszahlen aus der Copula namens Gauss.C gezogen. Gauss.C muss zuvor definiert werden. Daten werden in einer Matrix U gespeichert, deren Spaltenzahl der Dimension der Copul entspricht
Variablen definieren
x = 14
y = 0.12
z = “Affe”
a = TRUE
Matrix Spaltenname und Reihennamen zuweisen
Beispiel:
Spaltenname = colnames(Matrix)
Reihenname = rownames(Matrix)
Reihen- und Spaltenname sind zwei Vektoren, die zuvor definiert werden müssen
Matrix indizieren (und in Vektor speichern)
Beispiele:
Zeile indizieren:
Vektor = Matrixname[2, ]
Spalte indizieren
Vektor = Matrixname[ ,3]
Liste erstellen
Liste = list(Objekt1, Objekt2, Objekt3)
Liste indizieren
Name_Liste[[ObjektNr]] [Element]
z.B.
Liste[[1]] [2]
Workspace ausgeben
getwd()
CSV einlesen und Objekt zuweisen
Beispiel
Mietspiegel = read.csv(“Mietspiegel.csv”)
Funktioniert nur, wenn vorher der Workspace ausgegeben und csv im Workspace liegt. Eine csv wird als Matrix eingelesen
Vektor aus Matrixspalte erstellen
Vektor.Spalte = Matrixname[ ,2]
Merge Funktion
Beispiel
Mietspiegel.all = merge(Mietspiegel, Mietspiegel2, by = “Miete”)
*Merge setzt mehrere Data Frames “nebeneinander”. Doppelte Einträge werden gelöscht”
Datensatz (data frame) erstelle
Beispiel
Mietspiegel2 = data.frame(Bewohner, Anzahl, Mietspiegel)
Data Frames sind im Prinzip Matrizen, die unterschiedliche Datentypen enthalten können. In einem Data Frame müssen Vektoren gleich viele Elemente bzw. Matrizen gleich viele Zeilen haben, da alles “nebeneinander” angeordnet wird
Subset aus Datensatz
Beispiel:
subset(Mietspiegel.all, Miete < 600)
Datensatz sortieren
Name_Datensatz[order(NameDatensatz$Kategorie),]
Csv in Verzeichnis speichern
write.csv(Name_Datensatz, file = “Adresse”)
Zufällige normalverteilte Stichprobe erstellen
Beispiel:
Renditen = rnorm(1000, mean = 0.06, sd = 0.12)
Minimum, Maximum, Mittelwert, Median und Standardabweichung einer Stichprobe
Beispiele:
min(Renditen)
max(Renditen)
mean(Renditen)
median(Renditen)
sd(Renditen)
Linien in Diagramme zeichnen
Beispiele:
Vertikal:
abline(v = median(Renditen),
col = “red”,
lwd = 2)
Horizontal:
abline(h = mean(Renditen,
col = 2,
lwd = 1.5)
Grafik als metafile in Verzeichnis ausgeben
win.metafile(“Verzeichnis”)
Plot erstellen
Beispiel
plot(Renditen,
type = “l”,
main = “Verlauf Renditen”,
xlab = “Zeit”,
ylab = “…”,
cex.main = 1.5,
cex.lab = 1.5)
type = “l” steht für das plotten von Linien (lines)
Aus Matrix
Vektor über for-Schleife füllen
for(i in 1:length) {
results[i] = input[i]
}
Funktion definieren
Name_Funktion = function(Variable) {
}
Erzeugen/Ziehen von Zufallszahlen mit normalverteilten Daten
Über rnorm()
Zufallszahlen = rnorm(10000, mean, sd)
Anwenden der get.hist.quote() Funktion
Beispiel:
get.hist.quote(instrument = “DPW.DE”,
start = “2010-01-01”,
end = “2020-01-01”,
quote = “Adjusted”,
provider = “yahoo”,
compression = “w”)
Gibt das Ergebnis als Zeitreihenformat zurück!
Anwendung der fit.distr() Funktion
Fit.Vektor = fitdistr(Vektor.Renditen, densfun = “normal”)
Matrizen multiplizieren
Matrix.1 %% Matrix.2
Mehrere Grafiken auf einmal ausgeben
par(mfrow = c(2,2))
Vektor für Auszahlung der Rückversicherung
X.Re = numeric(length(S.1))
for(i in 1:length(X.Re) {
X.Re[i] = beta.Re * S.1[i]
}
Die Rückversicherung zahlt bei einem Schaden einen bestimmten Anteil (beta) des Schadens zurück
Erzeugen/Ziehen von gleichverteilten Zufallszahlen
z = runif(x, min, max)
z = runif(1000, 0, 1)
Funktion in R
Beispiele:
expinv = function(n, lamda) {
- log(1-runif(n)) / lamda)
}
(Wahre) exponentielle Verteilungsfunktion plotten
Beispiel:
curve(pexp,
min = 0,
max = 4,
lwd = 2)
Dieser Aufruf würde auch mit plot funktionieren
Empirische Verteilungsfunktion plotten
Beispiele:
plot(ecdf(expinv(100, 1))
Vektor übergeben:
plot(ecdf(z),
main = “Verteilungsfunktion”,
ylab = “F(x)”)
Standardfehler berechnen
SF = SA / sqrt(n)
SA ist in diesem Fall die Standardabweichung diese muss zuvor bestimmt/definiert werden. n ist die Anzahl der Zufallszahlen
Empirische Dichtefunktion der Normalverteilung plotten
plot(density(z),
main = “Dichtefunktion”,
xlab = “x”,
ylab = “f(x)”)
Funktioniert nur über plot NICHT mit curve
(Wahre) Dichtefunktion der Normalverteilung plotten
curve(dnorm(x, 5, 5)
-15, 25,
main =
xlab =
ylab =
add = TRUE)
add fügt die Funktion zur vorherigen Grafik hinzu
Bei Ausgabe der fitdistr() Schätzung
curve(dnorm(x, fit$estimate[1], fit$estimate[2])
-15, 25,
main =
xlab =
ylab =
add = TRUE)
(Wahre) Verteilungsfunktion der Normalverteilung plotten
Beispiel
curve(pnorm(x,5,5),
-15, 25,
add = T,
col = 2)
Obere Dreiecksmatrix der Cholesky-Zerlegung
C = matrix(c(1, 0, rho, sqrt(1-(rho^2))), ncol = 2)
Standardnormalverteile Zufallszahlen in normalverteilte Zufallszahlen konvertieren
N1 = Z1*sigma1 + mu1
Matrix als Zeitreihe definieren (in fPortfolio)
NTS = as.timeSeries(N)
Mindestrendite festsetzen (in fPortfolio)
setTargetReturn(spec) = E
Effizientes Portfolio berechnen (in fPortfolio)
efficientPortfolio(NTS, spec, constraints=”LongOnly”)
Zeitreihe in Vektor konvertieren
Telekom = as.vector(Telekom, mode = “numeric”)
Normalverteilte Daten in standardnormalverteilte Daten konvertieren
Stand.norm = (Rendite - mean(Rendite)) / sigma(Rendite)
Erzeugen/Ziehen von Zufallszahlen mit lognormalverteilten Daten
S.1 = rlnorm(10000, meanlog = m, sdlog = v)
Funktion, die Wert einer Präferenzfunktion in Abhängigkeit von alpha ausgibt
fkt = function(vars){
alpha = vars[i]
A.1= A.0exp(alphar.low + (1-alphar.high))
Ü.1 = A.1 - S.1
präf = mean(Ü.1) - b*sd(Ü.1)
return(-präf)
}
Lineare Korrelationskoeffizienten aus Kendalls Tau berechnen
rho = sin(pi * Kendall.Tau / 2)
Assests in t=0 eines VU
A.0 = EK.0 + pi.S - pi.Re
Assests zum Zeitpunkt t=0 bestehen aus dem Eigenkapital zuzüglich der Prämieneinnamen (pi.S) und abzüglich den Prämienausgaben für die Rückversicherung (pi.Re)
Assests in t=1 eines VU
A.1 = A.0 * exp(mu.1 * alpha.1 + mu.2*alpha.2)
Überschuss eines VU
RBC.1 = A.1 - S.1 + X.Re
Gibt einen Vektor zurück
Schadensprämie eines VU
pi.S = mean(S.1) * (1+load.S)
Rückversicherungsprämie eines VU
Pi.Re = mean(X.Re) * (1 + load.Re)
Prämie setzt sich zusammen aus dem durchschnittlich zu erwartenden Schaden für die Rückversicherung und einem Loadfaktor.
Schadensvektor S.1
S.1 = qlnorm(u[ 3], meanlog = m, sdlog = v )
Immer die quantil ln-Verteilung nehmen!
Auszahlung an Rückversicherung als Vektor
X.Re = numeric(length(S.1))
for(i in 1:length(S.1)){
X.Re[i] = beta * S.1[i]
}
Ausfallwarhscheinlichkeit als Vektor und Durchschnitt
SP.1 = numeric(length(RBC.1))
for(i in 1:length(RBC.1)) {
if(RBC.1[i] < 0){SP.1[i] = 1}
else{SP.1[i] = 0}
}
SP.1 = mean(SP.1)
*Ausfallwahrscheinlichkeitist abhängig vom Überschuss RBC.1. Ist der Überschuss negativ kommt es zu einem Ausfall (= 1)
Quantil des VAR
VAR = quantile(RBC.1, 0.005)
TVAR berechnen
T.VAR.help = numeric(length(RBC.1))
for(i in 1:length(RBC.1)){
if(RBC.1[i] <= vAR) {T.VAR.help[i] = RBC.1[i]}
else{T.VAR.help[i]= 0}
}
T.VAR = numeric(length(RBC.1))
for(i in 1:length(RBC.1)){
if(RBC.1[i] <= VAR) {T.VAR[i] = 1}
else{T.VAR.help[i]= 0}
}
T.VAR = sum(T.VAR.help) / sum(T.VAR)
Mittelwert des Überschusses im Verhältnis/relativ zur Ausfallwahrscheinlichkeit
RBC.SP = mean(RBC.1) / SP.1
Korrelation einer Matrix berechnen
cor(Matrix)
cor(Matrix, method = “kendal”)
Theoretische/wahre Dichtefunktion aus fitdistr()-Funktion in Histogramm hinzufügen
curve(dnorm(x, fit$estimate[1], fit$estimate[2]),
add = T,
col = “red”)
qqplot erstellen
qqnorm(Rendite)
DEoptim Funktion verwenden
library(DEoptim)
Optim = DEoptim(fkt,
lower = c(0),
upper = c(1),
control = DEoptim.control(NP = 200, itermax = 200))
optimize(fkt, c(0,1))
Wert einer Präferenzunktion in Abhängigkeit von alpha
fkt = function(vars){
alpha = vars[1]
A.1 = A.0exp(alphar.low + (1-alpha)r.high)
RBC.1 = A.1 - S.1
präf= mean(RBC.1)- b*sd(RBC.1)
return(-präf)
}
Expression bei Achsenbeschriftung verwenden
plot(alpha, res,
type = “l”,
xlab = expression(alpha),
ylab = “”,
main = expression(paste(“E(Ü) - b*”, sigma, “(Ü)”)))