Table of Contents

Freifach Statistik

lekti

Lektion 14

Ziele

Aufträge

Theorie

Beim «Rekodieren» oder «recoden» geht es darum, Variablen einen anderen Wert zuzuordnen. Gründe können können sein, dass ordinale Daten kardinal interpretiert werden. In Excel geht das am einfachsten mit suchen und ersetzen (Achtung bei der Reihenfolge: Wenn eine Teiltext ein Suchtreffer ist, wird dieser ersetzt). In R gibt es verschieden Möglichkeiten:

Daten einlesen und recodieren in R

Idealerweise werden die Zeilenspaltentitel bereits in Excel angepasst. Damit hat man kurze Variabelnamen und man kann dann mit read.table(file('clipboard'), sep='\t',header=T) die Daten einlesen.

Sind die Daten eingelesen, kann mit

gluecksdata <- read.table(file('clipboard'), sep='\t',header=T)
# Recodieren
# Annahme die 8. Spalte hat neu den Titel 'allinall'
gluecksdata$allinall <- gsub("sehr unglücklich",5,glueckdata$allinall)

Mögliche Lösung

Mögliche Lösung

data <- read.table(file("clipboard"),sep="\t",header=T)
head(data)
library(ggplot2)
names(data)
#gesamtglück
data$overall <- with(data,(insgesamt.+lately.+happylife+happymonth+happyoverall)/5)
#glück vs. aussehen
ggplot(data,aes(y=overall,x=looks))+geom_point()+geom_smooth(method="lm",se = F)
#glück vs. gesundheit
ggplot(data,aes(y=overall,x=health))+geom_point()+geom_smooth(method="lm",se = F)
#glück vs. sleep
ggplot(data,aes(y=overall,x=sleep))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(subset(data,sleep<30),aes(y=overall,x=sleep))+geom_point()+geom_smooth(method="lm",se = F)

with(subset(data,sleep<30),cor(overall,sleep,use = "pairwise.complete"))
ggplot(data,aes(y=overall,x=free))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(subset(data,free<30),aes(y=overall,x=free))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(data,aes(y=overall,x=social))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(subset(data,social<30),aes(y=overall,x=social))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(data,aes(y=overall,x=sport))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(data,aes(x=overall))+geom_histogram(position = "identity")+facet_grid(gender~.)
ggplot(data,aes(x=overall,y=gender))+geom_boxplot()
ggplot(data,aes(y=overall,x=age))+geom_point()+geom_smooth(method="lm",se = F)
ggplot(data,aes(x=meanin,y=overall))+geom_boxplot()
ggplot(data,aes(x=morning,y=overall))+geom_boxplot()
ggplot(data,aes(x=morning,y=overall))+geom_violin()
ggplot(data,aes(x=important,y=overall))+geom_boxplot()
library(corrplot)
relvar <- sapply(data,is.numeric)
corrplot(cor(subset(data[,relvar],free<30),use="pairwise.complete")) 
ggplot(da)

Lektion 13

Ziele

Autrag

Histogramm

Histogramm

Die Zufallsvariable $X$ «Anzahl Zahl» kann die Werte $0$, $1$, $2$ und $3$ annehmen. Es geht jetz also darum (siehe Blätter), die relative Häufigkeit $h(x)=\frac{n_x}{n}$ zu berechnen und die Werte aufzuzeichnen

Tipps R

Tipps R

Mit R könnte das entweder mit der Funktion sample(…) gelöst werden oder mit ifelse(…) und runif. Bei beiden Varianten kann die Wahrscheinlichkeit gewählt werden.

Erklärungen

Die Formel BINOM.VERT kann in Excel verwendet werden, um die Wahrscheinlichkeit zu berechnen bei $n$ Durchführungen eines Experiments genau $k$ mal Erfolg zu haben wobei der Erfolg mit Wahrscheinlichkeit $p$ eintritt. Man muss dann BINOM.VERT(k;n;p; FALSCH) aufrufen. FALSCH ist dabei notwendig, dass man die Wahrscheinlichkeit erhält. Würde WAHR stehen, erhielte man die Summe aller Wahrscheinlichkeiten mit Anzahl Erfolgen kleiner gleich $k$. In R kann genau das gleiche mit dbinom(k, n, p) erreicht werden.

Lektion 12

Ziel

Aufträge

Lektion 11

Ziele

Aufträge

Lösungen

Lösungen

Die Intervalle berechnen sich jeweils aus Mittelwert $\pm$ $2\sigma$:

  • Geburtsgewichte: $[2024.9, 4499.4]$
  • Autopreise: $[-4731.3, 95521.4]$
  • Aktienrenditen: $[-0.02345, 0.02378]$

Theorie

Normalverteilung

Grosse Teile der Statistik beruhen auf der sogenannten Normaleverteilung. Eine Grösse resp. ein Merkmal ist normalverteilt, wenn die Ableitung der Verteilungsfunktion durch $f(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}$ gegeben ist. Für unsere Zwecke erscheint das aber kryptisch und wir beschränken uns darauf, festzuhalten, dass ein Histogram einer Standard-Normalverteilten Zufallsvariable wie folgt aussieht:

Aussehen Normalverteilung

Dabei ist wichtig festzuhalten, dass die Anzahl der Klassen in Histogramm offensichtlich willkürlich ist. Der theoretische Unterbau besagt aber, dass die Klassen beliebig klein gewählt werden können und das Histogramm zum Schluss (bei unendlich kleiner Klassenbreite und unendlich vielen Beobachtungen) dem Graphen der Funktion $f$ von oben entspricht.

Standardnormalverteilung und Standardisieren

Um nun sicher zu stellen, dass man immer von der gleichen Normalverteilung spricht, transformiert man Merkmale. Wenn $\mu_X=\frac1n\sum_{i=1}^n x_i$ und $\sigma_X=\sqrt{\frac1{n-1}\sum_{i=1}^n(x_i-\mu_X)^2}$ ist, dann sagt man, dass das Merkmal $Z=\frac{X-\mu}{\sigma}$ das standardisierte Merkmal von $X$ ist. Man kann dann jede Beobachtung $x_i$ zu $z_i=\frac{x_i-\mu}{\sigma}$ standardisieren.

$x_i$$x_i-\mu_X$$\frac{x_i-\mu_X}{\sigma_X}$
-5-9-1.21
510.13
510.13
0-4-0.54
15111.48
$\mu$400
$\sigma$7.417.411

Berechnet man nun den Mittelwert von $Z$ (geschrieben: $\mu_Z$) und die Standardabweichung von $Z$ (geschrieben: $\sigma_Z$) so kommt – egal wie $X$ ursprünglich verteilt ist – heraus, dass $\mu_Z=0$ und $\sigma_Z=1$ ist.

Beweis

Beweis

Es gilt ja $\mu_z=\frac{1}{n}\sum_{i=1}^n z_i = \frac{1}{n}\sum_{i=1}^n (x_i-\mu_x) = \frac{1}{n}\sum_{i=1}^n x_i -n\cdot\frac1n \mu_x = \mu_x-\mu_x=0$.

Das gleiche Arugment kann für $\sigma_Z$ geführt werden: Die Rechnung wird etwas garstiger, funkioniert aber genau gleich.

Ist nun ein Merkmal $X$ normalverteilt so ist das standardisierte Merkmal standardnormalverteilt, das heisst, es ist normalverteilt Standardabweichung $\sigma=1$ und Mittelwert $\mu=0$.

Wahrscheinlichkeiten

Für standard-normalverteilte Merkmale – und damit auch für normalverteilte Merkmale – können sehr starke Aussagen über die Verteilung gemacht werden. So gilt z.B., dass im Intervall $[\mu_X-\sigma_X,\mu_X+\sigma_X]$ $68\%$ der Daten liegen. Für andere Vielfachen gilt die Tabelle unten:

k Prozent in $[\mu_x-k\cdot\sigma_X,\mu_x+k\cdot\sigma_X]$
1 $68.3\%$
2 $95.4\%$
3 $99.7\%$
4 $\approx 100\%$

Hat ein normalverteiltes Merkmal zum Beispiel den Mittelwert $\mu_X=11.2$ und $\sigma_X=3.1$ dann liegen ca. $68\%$ der Daten im Intervall $[8.1,14.3]=[11.2-3.1,11.2+3.1]$, das heisst in einem Intervall der Breite $2\sigma$, zentriert um den Mittelwert, liegen ca. $68\%$ der Daten.

Relevanz

Der Begriff einer (Standard-)normalverteilten Variable ist sehr wichtig: Einerseits, weil theoretisch gezeigt werden dann, dass die Summe vieler gleichartiger und unabhängiger Zufälle immer normalverteilt ist und andererseits weil eben gerade die Eigenschaft dazu führt, dass viele Daten in der “Welt da draussen” normalverteilt sind.

Aus einer mathematischen Sicht gilt noch anzumerken, dass zum Teil auch der Logarithmus eines Merkmals normalverteilt sein kann. Dies ist dann der Fall, wenn davon auszugehen ist, dass das Merkmal das Produkt vieler gleichartigen und unabhängigen Zufällen ist.

Daten in R

#Daten aus Clipboard
inputdata <- read.table(file("clipboard"), sep="\t") #returns dataframe from excel clipboard separated by tab
#oder
inputdata <- readClipboard(file("clipboard")) #if single column
#oder
inputdata <- read.csv2("filenname.csv") #separation by semicolon

Lektion 10

Ziele

Autrag

Daten Lektion 10

Für diese Lektion sind den ursprünglichen Daten mehrere Kolonnen (Alter in Tagen, Alter in Jahren, Diesel Ja) hinzugefügt worden, die in dieser Lektion zu verwenden sind. Diese finden sich hier als Excel-Datei.

Theorie

Teil 1

Beim letzten Mal haben wir die univariate Regression besprochen. Dabei geht es darum eine Variable ($Y$, Preis) auf eine andere Variable ($X$, Kilometer) zu regressieren. Zum Schluss haben wir ein Modell erhalten, dass einen Zusammenhang der Form \[ Y=q+m\cdot X \] beschreibt. Man sagt auch $Y$ ist die abhängige Variable, $X$ die erklärende Variable.

Mathematisch genau

Mathematisch genau

Dabei ist zu beachten, dass $Y$ und $X$ die Variablen sind. Das Modell müsste eigentlich lauten: \[ Y_i=q+m\cdot X_i+\varepsilon_i. \] Dabei ist $X_i$ und $Y_i$ die $i$-te Beobachtung und $\varepsilon_i$ ein Fehler, der die Ungenauigkeit oder eben die Abweichung vom Modell beschreibt. $m$ und $q$ sind nun so bestimmt worden, dass eben die Summe dieser beobachten quadrierten Fehlern minimal ist.

Man könnte jetzt noch weiter gehen und eine Variable ($Y$, Preis) auf mehrere andere Variablen ($X_1$, Kilometer; $X_2$, Alter) regressieren. Das Modell in diesem Fall würde dann lauten: \[ Y=q+m_1\cdot X_1 + m_2\cdot X_2. \] Der Preis ($Y$) ist dann also eine lineare Funktion der gefahrenen Kilometern ($X_1$) sowie des Alters ($X_2$).

Man kann diese Überlegung nun auf beliebig viele erklärende Variablen ausweiten um ein allgemeines Modell mit $k$ Variablen der Form \[ Y=q+m_1\cdot X_1 + \cdots+m_k\cdot X_k \] zu erhalten. Die Idee ist dabei dieselbe wie bei der univariaten Regression (Lektion 09): $q$, $m_1\ldots,m_k$ werden so bestimmt, dass die Summe der quadratischen Abweichungen der Modellvorhersage vom beobachteten Wert minimal ist. Die Werte $q$, $m_1\ldots,m_k$ heissen auch Koeffizienten. In statistischen Kontext verwendet man dafür auch oft die Buchstaben $\beta$: Es ist dann $\beta_0=q$ und $\beta_i=m_i$.

Mathematisch genau

Mathematisch genau

Das Problem der Lektion 09 konnten wir uns im zweidimensionalen Fall $\mathbb{R}^2$ vorstellen: Wir suchen eine Gerade, welche optimal durch die Punktewolke läuft. Das Problem dieser Lektion ist analog: Wir haben nun einen dreidimensionalen Fall in $\mathbb{R}^2$, wenn wir zwei Variablen verwenden, um den Preis zu erklären. Entsprechend könnte man $Y=q+m_1\cdot X_1 +m_2\cdot X_2\Leftrightarrow 0=q+m_1\cdot X_1 +m_2\cdot X_2-Y$ als Koordinatenform einer Ebene verstehen ($0=Ax+By+Cz+D$ wobei $x=X_1$, $y=X_2$ und $z=Y$), welche eben wiederum optimal durch die Punktewolke verläuft. $q$, $m_1$ und $m_2$ werden nun so bestimmt, dass diese Optimalität eben erfüllt ist.

Das Kriterium für die Optimalität ist in beiden Fällen die minimale Summe der quadrierten Abweichungen.

Das Problem kann nun generalisiert werden ist aber dann kaum mehr schwer vorstellbar. Möchte man eine Variable (Preis) mit anderen $n$ Variablen erklären, kann man das im $n+1$-dimensionalen Raum machen und sich eine sogenannte Hyperebene suchen, welche eben die Summe der quadrierten Abweichungen minimiert.

Teil 2

Alle bisher betrachteten Variablen waren kardinaler Natur (Preis, Kilometer, Verbrauch, etc.). Möchte man nun nominale Variablen als erklärende Variablen verwenden (z.B. Farbe, Getriebeart, Treibstoff etc.) so muss man diese erst in sogenannte Dummy-Variablen umwandeln.

Für den Treibstoff könnte man unterscheiden zwischen «Diesel» und «Nicht Diesel»: Man kreiert also eine neue Variable diesel_ja welche den Wert $1$ annimmt, wenn das Fahrzeug mit Diesel ist und $0$ sonst. Damit ist dann der Wert des zur Variable diesel_ja gehörenden Koeffizienten, eben genau dieser Betrag, um welcher der Preis erhöht wird, wenn das Auto mit Diesel fährt. Genau gleich kann man mit allen nominalen Variablen verfahren, die zwei Ausprägungen haben (z.B. Schaltung/Manuell, Unfall/kein Unfall, etc.)

Für Variablen, die mehr als zwei Ausprägungen haben. Man erstellt in diesem Fall einfach mehrere Dummy-Variablen. Z.B. könnte man um die Farben rot, grün, blau in einer Regression folgende zwei Dummy-Variablen berüchichtigen um dann die ursprünglichen Farben zu codieren

rot_ja grün_ja
rot 1 0
grün 0 1
blau 0 0

Der Koeffizient von rot_ja ist dann die Preisdifferenz eines roten Autos; der Koeffizient von grün_ja ist die Preisdiffernez eines grünen Autos. Offensichtlich wird dabei immer die Preisdifferenz zu einem Basisauto angenommen, welches im Fall der obigen Codierung blau ist.

Um eine Nominale-Variable mit $n$ Ausprägungen zu codieren, braucht man also $n-1$ Dummy-Variablen.

Durchführung

Excel kann genau gleich wie univariate Regression auch multivariate Regression durchführen. Für die Beispieldaten könnte ein Modell, welches Preis auf die Variablen Alter, Kilometer, Alter (Jahren) und Verbrauch regressiert, wie folgt über den Assistenten eingegeben werden:

Wichtig dabei ist, dass alle erklärenden Variablen in nebeneinanderliegen Spalten sind (Oben: In den Spalten Z bis AC, für die Zeilen 1 [Titel] bis 3931).

Caveat: Excel ist nicht die optimale Lösung für solche Probleme. Dies äussert sich auch in z.T. ungenauen / falschen Berechnungen. Für weiterführende Zwecke, sollte ein Statistikprogramm verwendet werden.

R-Lösung

R-Lösung

bmwdata <- read.table(file("clipboard"), sep = "\t", header = T)
head(bmwdata)
regressionsmodell <- lm(preis ~ kilometer + alter_jahre + verbrauch + diesel_ja, data = bmwdata)
summary(regressionsmodell)

Lektion 09

Ziele

Aufträge

Theorie

Bei der Regression geht es letztendlich darum, den Zusammenhang, der in der letzten Lektion mit der Korrelation beobachtet worden ist, genauer zu beschreiben.

Die Idee der Regression ist, die Summe der quadratischen Abstände einer Geraden zu den beobachteten Datenpunkten zu minimieren. Dabei ist wichtig zu beachten, dass nur die vertikalen Abstände betrachtet werden:

Jede lineare Funktion $g$ kann als $g:y=mx+q$ beschrieben werden. Man sucht also $m$ und $q$ so, dass die quadrierte Summe der Längen der gestrichelten Linien minimal ist.

Streng mathematisch ausgedrückt hat man die Wertepaare $(x_1,y_1),\, (x_1,y_1),\,(x_3,y_3), \ldots,(x_n,y_n)$. Hat man nun einen beobachtete $x$-Wert $x_i$ so ist die Vorhersage der Gerade für den $y$-Wert $mx_i+q$. Für ein gegebenes $m$ und $q$ ist damit der Abstand des $i$-ten Datenpunktes also $y_i-(mx_i+q)$, entsprechend ist der quadrierte Abstand des $i$-ten Datenpunktes $y_i-(mx_i+q))^2$.

Schliesslich sucht man eben $m$ und $q$ so, dass die Summe $$ (y_1-(mx_1+q))^2+(y_2-(mx_2+q))^2+(y_3-(mx_3+q))^2+\cdots (y_n-(mx_n+q))^2=\sum_{i=1}^n (y_i-(mx_i+q))^2 $$ minimal ist, das heisst, dass die Summe der quadrierten Abstände möglichst klein ist.

Betrachtet man diese Summe genauer, stellt man fest, dass dieser Ausdruck ein quadratischer Ausdruck ist, wenn man $m$ und $q$ als Variablen betrachtet. In anderen Worten, würde man – für gegebene Datenpunkte werden $x_i$ und $y_i$ zu Zahlen – diesen Ausdruck als Graph darstellen, erhielte man eine Parabel. Für Parabeln kann der Scheitelpunkt, welcher das Minimum der Parabel ist, einfach mit der Scheitelpunktformel berechnet werden.

Mit dieser Feststellung kann dann $m= \frac{\sum\limits_{i=1}^n (x_i - \bar x)(y_i - \bar y)}{\sum\limits_{i=1}^n (x_i - \bar x)^2}$ und $q=\bar y-m\bar x$ berechnet werden. Die Berechnung von $m$ und $q$ mit diesen Formeln führt zum Ziel, ist aber umständlich. Alle vernünftigen Datenanalyse-Programme können sogenannte Regressionsanalysen – oder eben Ausgleichsgeraden – berechnen.

R-Code

R-Code

regressionanalyse.r
## Bsp Video Daten aus Excel in der Zwischenablage:
regdf <- read.table(file("clipboard"), sep = "\t", header = T)
lm(y ~ x, data = regdf)
summary(lm(y ~ x, data = regdf))
 
## Syntethische Daten
# Parameter um Daten zu generieren
nobs <- 40
m <- 3
q <- -2
 
# Generieren der Daten
 
# Zufällige x Werte
xdat <- runif(nobs) * 10
# y Werte gemäss y=mx+q plus Zufall
ydat <- m * xdat + q + rnorm(nobs, sd = 4)
 
# Zusammenfassen in dataframe
regdf <- data.frame(x = xdat, y = ydat)
 
# Regressionsmodell
lm(y ~ x, data = regdf)
# Übersicht Regressionsmodell
summary(lm(y ~ x, data = regdf))

Lösungen

Click to display ⇲

Click to hide ⇱

Berechnet man für die normalen Preise (nicht $\log$) die Regressiongerade, erhält man:

  • x1: $y = -0.3029\cdot x+47132$
  • x3: $y = -0.2412\cdot x+52607$
  • x4: $y = -0.3317\cdot x+65518$
  • x5: $y = -0.35\cdot x+78561$
  • x6: $y = -0.3912\cdot x+82847$

Für den X1 «kostet» also ein gefahrener Kilometer ca. 30 Rp, für den X6 kostet dieser ca. 39 Rp

Lektion 08

Ausfall: Auftrag siehe Teams resp. Mail.

Lektion 07

Ziele

Auträge

Theorie

Wird ein Zusammenhang zwischen zwei kardinalen Merkmalen vermutet, sollte als erstes ein sogenannter Scatterplot erstellt werden. Zu diesem Zweck, wird das eine Merkmal auf der $x$-Achse und das andere Merkmal auf der $y$-Achse abgetragen.

Nun gibt es ein Mass für diesen Zusammenhang: Die Stärke wie auch die Richtung des Zusammenhangs der Mermkale $X$ und $Y$, $R_{xy}$, wird mit der Korrelation gemessen: $$R_{xy}=\frac{\sum\limits_{i=1}^n (x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum\limits_{i=1}^n (x_i-\bar{x})^2 \sum\limits_{i=1}^n (y_i-\bar{y})^2}}$$ Die Korrelation nimmt nur Werte zwischen $-1$ und $1$ an. In Excel wie auch in R sind Funktionen zur Berechnung der Korrelation hinterlegt. Wichtig dabei ist zu beachten, dass die Korrelation nur einen linearen Zusammenhang misst:

Möchte man die Stärke der Korrelation messen, quadriert man $R_{xy}$ zur $R^2=R_{xy}^2$. Man spricht von einem «starken Zusammenhang» wenn $0.5\leq R^2\leq 1$ ist, von einem «moderaten Zusammenhang» wenn $0.25\leq R^2 < 0.5$ ist, und schliesslich von einem «schwachen Zusammenhang» wenn $0.1\leq R^2<0.25$ ist. Ist schliesslich $R^2$ kleiner so liegt kein Zusammenhang vor. $R^2$ wird auch Bestimmtheismass genannt.

Zusammenfassend kann gesagt werden, dass Richtung und Stärke eines linearen Zusammenhangs gemessen werden kann:

Korrelation und Kausalität

Auch wenn $R^2$ sehr gross ist, muss das nicht heissen, dass in Tat und Wahrheit wirklich ein Zusammenhang dieser beiden Variablen vorliegt. Es kann durchaus sein, dass die Korrelation zufällig zu Stande gekommen ist. Man spricht dann auch von Scheinkorrelation oder in Englisch von spurious correlation.

Kausalität in diesem Zusammenhang besagt, dass ein Merkmal ein anderes bedingt: So ist zum Beispiel bei der Thematik Schuhgrösse und Körpergrösse wirklich davon auszugehen, dass ein kausaler Zusammenhang besteht.

Korrelationen BMW Datensatz nach Modell

R-Code

R-Code

library(corrplot)
png("C:/temp/corrbmw.png",width=300,height=1500)
par(mfrow=c(2,3))
for(mod in sort(unique(bmw$model))){
  tbmw = subset(bmw,model==mod)
  corbmw <- tbmw[,sapply(tbmw,is.numeric) & sapply(tbmw,function(inv){sd(inv,na.rm=T)>0})]
  corrplot(cor(corbmw,use="pairw"),main=mod,mar=c(0,0,1,0))  
}
dev.off()

Lektion 06

Ziele

Aufträge

Theorie

Auf Grund der Lorenzkurve kann ausgesagt werden, wie stark die Merkmale (resp. deren Ausprägung) konzentriert sind (ein Konzentrationsmass). Das klassische Beispiel dabei ist die Einkommenverteilung. Die Frage, die dabei gestellt, resp. beantwortet wird, ist “Wie viel Prozent der Leute (Köpfe) verdienen wie viel Prozent des Gesamteinkommens?»

Einkommen Anzahl Personen Kumululierte relative Anzahl Einkommenssumme Kumululierte relative Einkommenssumme
2317 10 0.20 23'170 0.17
2552 11 0.42 28'072 0.37
2787 14 0.70 39'018 0.65
3022 8 0.86 24'176 0.83
3257 3 0.92 9'771 0.90
3492 4 1.00 13'968 1.00
Total 50 138'175

Zeichnet man nun die Punkte $(\text{Kumulierte relative Anzahl},\text{Kumulierte relative Einkommenssumme})=(x,y)$ und verbindet diese, erhält man die Lorenzkurve:


Zwischenfrage: Wo würden die Punkte liegen, wenn alle gleich viel verdienen würden?

Lösung

Lösung

Würden alle gleich viel verdienen, lägen die Punkte auf der Winkelhalbierenden.


Als Mass der Ungleichverteilung verwendet nun die Fläche, welche die Lorenzkurve mit der Winkelhalbierenden einschliesst. Diese Fläche nennt man auch Gini–Koeffizient

Gini-Koeffizient. Quelle: https://www.fuw.ch/wp-content/uploads/2015/01/

Als Beispiel für die Lorenzkurve wiederum die 5 BMW Modelle und ihre Preise. Achtung: Es handelt sich dabei nicht um ein Einkommen!

Die Lorenzkurve macht im Allgemeinen nur Sinn für Merkmale, mit positiven Werten (Preis, Einkommen, etc.)

R Code

R Code

computeLorenzCurve <- function(x, plot = T) {
    nobs <- length(x)
    sortedx <- sort(x)
    abscissa <- (1:nobs)/nobs
    ordinate <- cumsum(sort(x))/sum(x)
 
    if (plot) {
        plot(ordinate, abscissa, main = "Lorenzkurve")
        abline(a = 0, b = 1)
    }
 
    return(cbind(abscissa, ordinate))
}

Lektion 05

Ziele

Aufträge

Boxplot

Ein Boxplot besteht aus einer Box, welche durch das erste und dritte Quartil ($Q_{25\%}$ und $Q_{75\%}$) begrenzt ist. Damit liegen $50\%$ der Daten in der Box. Der mittige Strich ist der Median ($q_{50\%}$), die Whiskers (Antennen oder Schnäuze) sind $w_1=Q_{50\%}-1.5\cdot IQA$ und $w_2=Q_{50\%}+1.5\cdot IQA$. $w_1$ und $w_2$ sind dabei zum Teil auch durch den grössten (resp. kleinsten für $w_1$) Wert eines Datenpunktes ersetzt, welcher gerade noch kleiner (resp. grösser für $w_1$) ist als $w_2$. Die Whiskers sind dann nicht symmetrisch. Die Punkte, die ausserhalb der Whiskers liegen, nennt man Outlier oder Ausreisser. Man kann zeigen, dass bei normalverteilten Daten, ca. $95\%$ der Beobachtungen innerhalb der beiden Whiskers zu liegen kommen.

Boxplot der Preise nach Modell

# x1

# x3

# x4

# x5

# x6

Interpretation Boxplot

ggplot(bmwdat)+geom_boxplot(aes(x=energieeffizienz,y=preis))+labs(x=“Preis”)+facet_wrap(~model)

Anwendungen Boxplot

Löhne in der Stadt Zürich

Lektion 04

Ziele

Auftrag

Lösung

Lösung

  • Mittelwert: -0.16
  • Modus: Nicht eindeutig.
  • Standardbweichung: 20.70
  • Varianz: 428.53
  • Median: 0.55
  • IQA: 33.3

Definitionen Lektion 04

Quantil

Ein Quantil gibt den dem Prozentrang zugehörigen Wert der Verteilung wieder. Der Median ist z.B. das 50% Quantil. Das 25%-Quantil z.B. ist der Wert, für welchen gilt, dass 25% der Werte kleiner und 75% der Werte grösser sind. Mathematisch kann man das wie folgt festhalten:

Möchte man das Quantil $\alpha=35\%=0.35$ von den $n=15$ Daten 10.6, 16.9, -27.3, 9.6, 18.1, -6.4, 34.4, 42.7, -3.6, 5, -3.2, 11.1, 46.1, 19.4, 2.4 berechnen, so muss man diese zuerst aufsteigend sortieren: -27.3, -6.4, -3.6, -3.2, 2.4, 5, 9.6, 10.6, 11.1, 16.9, 18.1, 19.4, 34.4, 42.7, 46.1. Die sortierten Werte werden mit $x_{(1)},x_{(2)},\ldots,x_{(n)}$ bezeichnet. Man sucht dann diesen Wert so, dass der gefundene Wert dem geforderten Prozentrang von $\alpha=0.35$ am nächsten kommt.

Genauer: Sei $K=\lfloor\alpha\cdot n\rfloor+1$ wobei $\lfloor\cdot\rfloor$ auf die nächste ganze Zahl abrundet. Für uns ist also $K=\lfloor0.35\cdot 15\rfloor+1=\lfloor5.25\rfloor+1=5+1=6$. Wir nehmen also den 6. Wert: Damit ist $Q_{0.35}=x_{(6)}=5$

Ist aber $\alpha\cdot n$ eine natürliche Zahl so, so nehmen wir wegen des Abrundens den mittleren der beiden Werte $x_{(K-1)}$ und $x_{(K)}$: Für $\alpha=0.3$ ist $K=3+1=4$ und damit $Q_{0.2}=\frac12((-3.6)+(-3.2))=-3.4$. $$Q_\alpha=\begin{cases}x_{(K)}\text{ wenn $\alpha\cdot n$ nicht ganzzahlig}\\\frac12\left(x_{(K)}+x_{(K-1)}\right)\text{ wenn $\alpha\cdot n$ ganzzahlig}\end{cases}$$

Quartile

Quartile sind die $25\%$, $50\%$ und $75\%$ Quantile einer Verteilung. Für das erste Quartil gilt also, dass $25\%$ der Beobachtungen kleiner sind, $75\%$ der Beobachtungen sind grösser.

Bei der Berechnung der Quantile kommen bei unterschiedlichen Softwarelösungen unterschiedliche Methoden zum Einsatz. Das heisst, u.U. stimmen die Quantile zweier unterschiedlichen Softwarelösungen nicht überein.

Interquartilsabstand (IQA)

Der Interquartilsabstand ist ein Mass für die Skala einer Verteilung. Wie weit sind das erste und dritte Quartil auseinander: $\text{IQA}=Q_{0.75}-Q_{0.25}$.

In Buch R-Reader:

R-Code

R-Code

#Daten sind aus Excel in die Zwischenablage kopiert.
bmw <- read.table(file("clipboard"),sep="\t",header = T)
library(ggplot2)
library(plyr)
ggplot(bmw,aes(x=preis))+geom_histogram()+facet_wrap(~model)+xlab("Preis")+ylab("Anzahl")
names(bmw)
ddply(bmw,.(model),summarise,median(preis))
ddply(bmw,.(model),summarise,mean(preis))
ddply(bmw,.(model),summarise,sd(preis))
ddply(bmw,.(model,zylinder),summarise,mean(preis))
#oder
tapply(bmw$preis,bmw$model,median)
tapply(bmw$preis,bmw$model,mean)
tapply(bmw$preis,bmw$model,sd)
tapply(bmw$preis,bmw$model,var)
tapply((bmw$preis,bmw$model,quantile,probs=0.25)
tapply((bmw$preis,bmw$model,quantile,probs=0.75)
tapply((bmw$preis,bmw$model,quantile,probs=0.75)-tapply((bmw$preis,bmw$model,quantile,probs=0.25)
#gibt das gleiche wie 
tapply(bmw$preis,bmw$model,IQR)
mean(bmw$preis[bmw$model=="x1"])

Lektion 03

Ziele

Aufträge:

Histogramm Eile mit Weile bei 1'000'000 Würfeln

R Code Simulation Eile-mit-Weile

eilemitweile.R
rollDie <- function() {
    isSix <- TRUE
    sum <- 0
    while (isSix) {
        thissample <- sample(6, 1)
        if (thissample + sum > 18) 
            break
        sum <- sum + thissample
        isSix <- thissample == 6
 
    }
    if (sum == 18) {
        sum <- 0
    }
    return(sum)
}
dice <- replicate(1e+06, rollDie())
hist(dice breaks = seq(-1, 17), main = "Histogramm Eile mit Weile", xlab = "Augenzahl", ylab = "Absolute Häufigkeit", col = "lightblue")

Lektion 02

Ziele

Aufträge

Einführung Pivot

ddplystattpivot.R
library(plyr) #Zusatzpaket 'plyr' laden (vorgänig mit install.packages("plyr") installieren)
head(cardata) #Erste Zeilen anzeigen
?ddply #Hilfe zu ddply
ddply(cardata,.(model),summarise,preis=mean(preis)) #Mittelwert des Preises nach Modell anzeigen
ddply(cardata,.(model),summarise,preis=median(preis)) #Median des Preises nach Modell anzeigen
ddply(cardata,.(model,zylinder),summarise,preis=mean(preis)) #Mittelwert des Preises nach Modell und Anzahl Zylinder anzeigen

Lektion 01

Ziele

Ziele der Lektion:

Auftrag

| intro.R
setwd("C:/Users/Simon.Knaus/Dropbox/git/ffstat") #Arbeitsverzeichnis bestimmen
cardata <- read.table("cardata.csv",sep=";",header=TRUE) #Daten einlesen als Dataframe
head(cardata) # Erste Zeilen (6) anzeigen
summary(cardata) # Zusammenfassung anzeigen
mean(cardata$preis) # Mittelwert des Preises anzeigen
unique(cardata$model) #Alle Modelle nur einzeln (einmalig) anzeigen
 
str(cardata) #Struktur des Dataframes anzeigen
cardata[2,1] #2 Zeile, erste Spalte
cardata[cardata$model=="x1", "preis"] #Model soll 'x1' sein, da die 'Preis'-Spalte
mean(cardata[2:4,2]) #Mittelwert der 2. bis 4. Zeile der 2. Spalte

Software

Begriffe

Begriffe, die festzuhalten sind:

Begriff Kurzbeschrieb Excel R
Mittelwert Arithmetisches Mittel ($\mu$). Man schreibt auch $\bar x$. MITTELWERT() mean()
Anzahl Anzahl ANZAHL() length()
Merkmal Eigenschaften eines Datenpunkts (z.B. Türen, Farbe etc.)
Merkmalsausprägung - und typen Nominal (Farbe), Ordinal (Modell: X1 bis X6), Kardinal (z.B. Kilometer, Preis)
Datenblatt
Pivot-Tabelle
Filtern
Absolute und relative Häufigkeit von $x$ Die absolute Häufigkeit entsprichen dem insgesamten Vorkommen, die relative Häufigkeit ist das Vorkommen in Prozent, d.h., die absolute Anzahl dividiert durch die Gesamtanzahl ANZAHL() oder SUMMEWENN()
Histogramm Illustration von Daten. Die Säulenfläche ist proportional zur relativen Häufigkeit
Varianz Die mittlere quadratische Abweichung, i.e. $\sigma^2=\frac1{n-1}\sum_{i=1}^n (x_i-\bar x)^2$ VARIANZA() var()
Standardabweichung Wurzel der mittleren quadratischen Abweichung $\sigma=\sqrt{\frac1{n-1}\sum_{i=1}^n (x_i-\bar x)^2}$ STABWA() sd()
Median Wert der mittig in der Verteilung aller sortierten Werte ist, resp. zum 50% Prozentrang gehöriger Wert MEDIAN() median()
$\alpha$-Quantil Zum Prozentrang $\alpha$ gehöriger Wert QUANTIL.INKL() quantile(,,type=2)
Modus Der häufigste (die häufigsten) Wert(e)MODUS.EINF()
IQA Interquartilsabstand. Differenz des 1. und 3. Quartils IQR()
BoxplotIllustration der Verteilung mit Quartilen boxplot()
Outlier Ausreisser. Eine mögliche Definition für Outlier, sind Werte, die ausserhalb der Whiskers beim Boxplot sind
Lorenzkurve Mass zur Konzentration einer Verteilung. Es wir dabei die relative kumulierte Anzahl gegen die relative kumulierte Summe des Merkmals gezeichnet
Gini-Koeffizient Mass der Konzentration einer Verteilung welches die Fläche misst, welche die Lorenzkurve mit der Winkelhalbierenden einschliesst
Korrelation Mass für einen linearen Zusammenhang zwischen $-1$ und $1$ KORREL()cor()
Scatterplot Graphische Darstellung zweier Merkmale als $x$ und $y$-Koordinate Einfügen $xy$…plot(x,y)
BestimmtheismassQuadrat der Korrelation, zur Messung der Stärke eines Zusammenhangs
Erklärende Variable Variable (z.B. Kilometer) welche die abhängige Variable (z.B. Preis) in einer Regression erklären soll
Regression Bestimmung einer linearen Funktion, welche den Zusammenhang zwischen erklärender und abhängier Variable herstelltDaten → Analyselm(…)
Koeffizienten Abschnitt und Steigung der linearen Funktion einer Regression
Dummy-Variable Variable mit den Ausprägungen $0$ und $1$ um eine nominale Variable in einer Regression zu verwenden
Normalverteilung Auch Gaussverteilung. Häufige Verteilung von Merkmalen. Das Histogamm gleich dabei einer Glockenkurve
Standardisieren Zentrierung und Streckung eines Merkmals zu $Z=\frac{X-\mu}{\sigma}$. Es ist dann $\mu_Z=0$ und $\sigma_Z=1$scale(…)
Z-Score Siehe Standardisieren