==== Freifach Statistik ==== lekti === Links === * [[https://cran.r-project.org/|R]] * [[https://www.ksbg.ch/fileadmin/kundendaten/Portraet/Dienstleistungen/Informatik/Office_365/ICT_Office365_ProPlus.pdf|Office 365 KSBG]] * [[lehrkraefte:ks:ffstat2122:classunisg|Slides Uni]] ==== Lektion 14 ==== === Ziele === * Auswertung Fragebogen * Besprechung Freifach Statistik === Aufträge === * [[https://bldsg-my.sharepoint.com/:u:/g/personal/simon_knaus_ksbg_ch/EYGR9VHkuSdMs1h-J5_CUKsBm2z8nBGPCz321xhSkHiVHQ?e=OilJzV|Daten]] herunterladen und einlesen und <>. Was fällt auf? Sind die Daten so realistisch? In R ggf. mit ''summary'' * Analysen auswählen * Welche Analysen sind in welcher Variabel-Konstellation möglich? (Nominal, ordinale, kardinale Variablen) * Analysen durchführen und Resultate (Grafiken oder Tabellen) in einem Dokument festhalten * Ggf. Daten recodieren (s.u.) === Theorie === Beim <> oder <> 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: * ''gsub'' funktioniert wie suchen und ersetzen in Excel * Mit Index-Vektoren wie z.B. in [[http://dwoll.de/rexrepos/posts/recode.html#using-index-vectors|dieser Erklärung]]. * Mit ''recode'' wie ebenfalls z.B. in [[http://dwoll.de/rexrepos/posts/recode.html#using-recode-from-package-dplyr|dieser Seite]] erklärt. === 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) 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 === * Unser Fragenbogen ist bereit für die Datenerhebung * Jede/r kann die Begriffe <> (Wahrscheinlichkeit, theoretisch) und <> (Statistik, beobachtet) einordnen und umgangssprachlich erklären * Jede/r kann den Begriff <> umgangssprachlich erklären und die theoretische Wahrscheinlichkeit berechnen, dass ein gewisses Phänomen eine bestimmte Anzahl mal auftritt * Optional: Jede/r kann den Begriff <> (siehe oben) umgangssprachlich erklären === Autrag === * Den Fragebogen einmal als Proband ausfüllen: [[https://forms.office.com/Pages/ResponsePage.aspx?id=vUGvXYwzEUOxsOEpmInDS12XSwf-80xHjgGMQjpEmz9UQVU1TURWMFpIUVlINzFHT0cyNVU3NEFCViQlQCNjPTEu|Link]] zur Probandensicht * Ggf. den Fragenbogen anpassen. [[https://forms.office.com/Pages/ShareFormPage.aspx?id=vUGvXYwzEUOxsOEpmInDS12XSwf-80xHjgGMQjpEmz9UQVU1TURWMFpIUVlINzFHT0cyNVU3NEFCViQlQCNjPTEu&sharetoken=QpyAKCywk8Zxv7tPgGki|Link zum Duplizieren]] des Fragenbogens. * Dem Lehrer zuhören und anschliessend die Wandtafel fotografieren. * Experimente (Statistik) versus Theorie (Wahrscheinlichkeit) * Wirf eine Münze $n$ mal (''=WENN(ZUFALLSZAHL()<0.5;"K";"Z")'' und zähle (''ANZAHL()'' oder ''=ZÄHLEWENN()'') die Anzahl Male <>. Berechne auch die durchschnittliche Anzahl Kopf pro Wurf. Wie ist dieser Durchschnitt in der <> zu interpretieren? * Wirf drei Münzen $n$ Mal gleichzeitig und zähle jeweils die Anzahl <>. Fertige ein Histogramm an. * Berechne mit Excel die theoretischen Wahrscheinlichkeiten für eine Binomialverteilung (drei Münzen, $0$, $1$, $2$, $3$ mal Zahl) und vergleiche diese Werte mit dem Histogramm aus der vorigen Aufgabe * Jemand hat 100 mal eine Münze geworfen. Wie gross ist die theoretische Wahrscheinlichkeit, dass man genau 67 mal Kopf beobachtet? Nimm an, dass die Münze ausgeglichen ist. * Schau dir das das [[https://www.youtube.com/watch?v=lgs7d5saFFc| Video]] zur <> an. Überlege dir, welche <> enstehen können. Die Zufallsvariable $X$ <> 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 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 === * Umfrage für unser Projekt steht und ist nach Möglichkeit bereits getestet. === Aufträge === * Jede/r hält Fragen fest, die zusätzlich erhoben werden sollen, um unser <> zu durchzuführen. * Eigene Fragen hier [[https://padlet.com/simon_knaus1/p87adz64g0w0cd7s|auf Padlet]] (inkl. Datentyp) festhalten. * [[https://pada.psycharchives.org/bitstream/bb227e13-1288-4ede-94cd-0e1fd3d627ac|Bestehender Fragebogen]] resp. [[https://www.testarchiv.eu/de/test/9006602|Archiv]] * Welche Auswertungen können mit diesen Fragen beantwortet werden? * Welche statistischen Kenngrössen braucht man dazu? * Welche Analysen sind notwendig? * Erste Analyse bereits mit Dummy-Daten durchführen um festzustellen, ob die Idee funktionieren. * Plan wie man zu Daten kommt erarbeiten * Online * Offline, QR, etc. ==== Lektion 11 ==== === Ziele === * Jede/r kann die $Z$-Transformierte (standardisierte) eines Merkmals ausrechnen. * Jede/r kann auf Grund von Histogrammen der $Z$-transformierten Merkmale entscheiden, ob ein Merkmal normalverteilt ist. * Optional: Jede/r kann die Wahrscheinlichkeit berechnen, dass ein Merkmal innerhalb / ausserhalb eines Intervalls zu liegen kommt. === Aufträge === * Theorie durchlesen * Für die Variablen aus der {{lehrkraefte:ks:ffstat1819:lektion07.xlsx|Excel-Datei}} zu Geburtsgewicht, Autopreise und Aktienrenditen * jeweils standardisieren * in einer weiteren Spalte zwei Histogramme erstellen: Eines vor und eines nach der Standardisierung (z.B. mit Geogebra) und * entscheiden, ob die Variable (resp. das Merkmal) normalverteilt ist oder nicht. * Optional: Für die normalverteilten Variablen ein Intervall der Form $[a,b]$ angeben, in welchem $95\%$ der Daten zu liegen kommen. * Intelligenzquotient als Beispiel einer normalverteilten Zufallsgrösse. Schaut euch die Videos unten an. * [[https://www.nanoo.tv/link/v/ficYyhCe| Grundlagen IQ]] * [[https://www.nanoo.tv/link/v/uDtLxbWK| DorFuchs IQ]] und die Normalverteilung * [[https://www.pnas.org/doi/pdf/10.1073/pnas.1718793115?download=true|Forschungsartikel]] zur Entwicklung des IQ. * Jede/r hält Fragen fest, die zusätzlich erhoben werden sollen, um unser <> zu erheben. * Eigene Fragen hier [[https://padlet.com/simon_knaus1/p87adz64g0w0cd7s|auf Padlet]] festhalten * [[https://pada.psycharchives.org/bitstream/bb227e13-1288-4ede-94cd-0e1fd3d627ac|Bestehender Fragebogen]] resp. [[https://www.testarchiv.eu/de/test/9006602|Archiv]] dazu {{ :lehrkraefte:ks:ffstat17:histos_solution.png?nolink |}} 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: {{ :lehrkraefte:ks:ffstat17:hist_single.png?nolink |}} == 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. {{ :lehrkraefte:ks:ffstat17:hist_mult.png?nolink |}} == 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| | |5|1|0.13| | |5|1|0.13| | |0|-4|-0.54| | |15|11|1.48| |$\mu$|4|0|0| |$\sigma$|7.41|7.41|1| 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. 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 === * Jede/r kann die Regression von letzten Mal mit und ohne Logarithmus des Preis korrekt interpretieren * Multivariate Regression * Jede/r kann eine multivariate Regression mit Excel oder R durchführen. * Jede/r kann die Koeffizienten von kardinalen und optional Dummy-Variablen einer multivariaten Regression interpretieren. === Autrag === * Modell vom letzten Mal in normaler (Variante 1) und logarithmischer Spielweise (Variante 2) nochmals durchrechnen. Die Koeffizienten in beiden Modellen interpretieren und als Satz (!!!) festhalten. * Gefahrene Kilometer für ein BMW Model auf Alter regressieren. Wie ist der Koeffizient ($m$) vom Alter zu interpretieren? * [[#Teil 1|Theorie Teil I]] unten durcharbeiten und [[#Durchführung|durchlesen]] * Multivariate Regression des Preises mit Kilometer und Alter durchführen für ein Auto-Modell * [[#Teil 2|Theorie Teil II]] unten durcharbeiten. * Multivariate Regression mit Kilometer, Alter und einem beliebigen Dummy (Farbe Rot, Unfall, Getriebe-Art, etc.) durchführen. * Plausibilität der erhaltenen Modelle / Koeffizienten mit dem Partner besprechen und auf Plausibilität überprüfen. === 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 {{lehrkraefte:ks:ffstat2122:bmw_data_alter.xlsx| 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**. 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|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$. Das Problem der [[#Lektion 09|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 {{https://de.wikipedia.org/wiki/Hyperebene|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 <> und <>: 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 {{lehrkraefte:ks:ffstat2122:bmw_data_alter.xlsx|Beispieldaten}} könnte ein Modell, welches Preis auf die Variablen Alter, Kilometer, Alter (Jahren) und Verbrauch regressiert, wie folgt über den Assistenten eingegeben werden: {{ :lehrkraefte:ks:ffstat17:regression_dialogue.png?direct |}} 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 [[https://de.wikipedia.org/wiki/Liste_von_Statistik-Software|Statistikprogramm]] verwendet werden. 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 === * Jede/r kann eine eindimensionale Regression mit Excel durchführen und interpretieren. * Jede/r kann das Problem (mathematisch) formulieren, dessen Lösung die Ausgleichsgerade ist. * Jede/r kann eine Schätzung abgeben, wie viel ein gefahreren Kilometer gemäss dem eigenen Regressionsmodell kostet === Aufträge === * Theorie Regression * Theorie Regression unten durcharbeiten * {{https://web.microsoftstream.com/video/645a4032-fe06-467e-b480-53ad174b4f43|Demo-Video}} zur Durchführung Regression in Excel anschauen * Praxis Regression: * Regression auf den beiden Tabellenblättern (Bsp 1 und Bsp 2) in der {{lehrkraefte:ks:ffstat1819:lektion09.xlsx|Datei zur heutigen Lektion}} durchführen. * Scatterplot erstellen * Regression durchführen, Geradengleichung aufstellen und Koeffizienten interpretieren. * Mögliche Fragen: * Wie lautet die Gleichung der beiden Geraden? * Welche Gerade ist <>? * Regression für ein BMW-Modell durchführen * Eine Regression durchführen, bei der der Preis auf die gefahrenen Kilometer regressiert wird. Modell (Geradengleichung) aufstellen und <> eines Kilometers (von 1000 Kilometern) angeben. * Freiwillig: Anstelle des Preises kann auch der Logarithmus des Preises als $y$-Variable verwendet werden. Wird das Modell ($R^2$) besser oder schlechter? Was heisst das für die Interpretation? === 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: {{ :lehrkraefte:ks:ffstat1819:linreg01.png?nolink&400 |}} 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. ## 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 === {{ :lehrkraefte:ks:ffstat1819:regbmw01.png?direct |}} {{ :lehrkraefte:ks:ffstat1819:regbmw02.png?direct |}} 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 <> 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 === * Jede/r kann einen Scatterplot von zwei Datenreihen / Merkmalen erstellen * Jede/r kann die Korrelation von zwei Datenreihen / Merkmalen berechnen * Jede/r kann die Korrelation interpretieren und die Masszahl Punktewolken aus dem Scatterplot zuordnen. * Erste Ideen für ein eigenes Projekt. === Auträge === * Lies die Theorie unten durch. * Korrelation im Auto-Datensatz * Wähle ein BMW-Modell und erstelle eine Scatterplott, wobei der Preis auf der $y$-Achse ist und eine erklärende Variable auf der $x$-Achse ist. Was wären sinnvolle Variablen für die $x$-Achse, für welche du einen Zusammenhang mit dem Autopreis vermutest? * Berechne die Korrelation und das Bestimmtheitsmass für die gewählten Variablen. * Welche Korrelationen (Vorzeichen und Stärke) vermutest du im Datensatz? Welche zwei Variablen sind jeweils wie korreliert? * Schau dir die Webseite {{http://tylervigen.com/old-version.html|Tylver Vigen}} an: Wähl dir das widersinnigste Beispiel. Gibt es eine Erklärung dafür? (Die {{http://www.tylervigen.com/spurious-correlations|aktuelle Version dieser Webseite}} ist schöner, allerdings ohne Tabellen) * Besprich mit deinem/r Nachbar:in Ideen für eine eigene Projekte, welche untersucht werden könnte und halte diese [[https://padlet.com/simon_knaus1/dyj3e7legldvn6ln|hier]] fest. === 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. {{ :lehrkraefte:ks:ffstat17:corr01.png?nolink&400 |}} 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: {{ :lehrkraefte:ks:ffstat17:correx2.png?nolink |}} Möchte man die Stärke der Korrelation messen, quadriert man $R_{xy}$ zur $R^2=R_{xy}^2$. Man spricht von einem **<>** wenn **$0.5\leq R^2\leq 1$** ist, von einem **<>** wenn **$0.25\leq R^2 < 0.5$** ist, und schliesslich von einem **<>** 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: * **Richtung:** Eine positive Korrelation beschreibt eine <> Beziehung, eine negative Korrelation beschreibt eine <> Beziehung. * **Stärke:** Um nur eine Aussage über die Stärke des Zusammenhangs unabhängig der Richtung zu machen, verwendet man das Bestimmtheitsmass $R^2$, die quadrierte Korrelation. === 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 === {{ :lehrkraefte:ks:ffstat17:corrbmw.png?nolink |}} 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 === * Lorenzkurve kennen, <> und interpretieren können. * Gini-Koeffizient kennen und interpretieren können. * Erste Ideen eines eigenen Projekts generieren === Aufträge === * Theorie Lorenzkurve lesen * Beispiel mit Hilfe der {{lehrkraefte:ks:ffstat17:lorenz_kurve.xlsx|Excel-Datei}} zur Lorenzkurve erstellen, die maximal ungleich verteilt sind resp. gleich verteilt sind * Eine Lorenzkurve für die Preise der BMW X5 in {{lehrkraefte:ks:ffstat17:lorenz_kurve.xlsx|Excel-Datei}} erstellen. * {{https://www.fuw.ch/article/die-lorenz-kurve-und-der-gini-koeffizient/|Artikel zur Lorenzkurve}} lesen und Seiten 14-16 in {{https://www.stadt-zuerich.ch/content/dam/stzh/prd/Deutsch/Statistik/Themen/Wirtschaft/2015-11-12_Statistik-um-12_Loehne-in-der-Stadt-Zuerich.pdf|Lohnreport der Stadt Zürich}} betrachten. Überrascht die Grafik? Wie sähe die Verteilung in der Stadt St. Gallen aus? Unglücklicherweise sind die gleichen Daten weder für St. Gallen noch jährlich verfügbar. Zürich hat aber eine [[https://www.zh.ch/de/news-uebersicht/mitteilungen/2022/politik-staat/statistik/im-mittel-ueber-7000-franken-lohn.html#1733834634|aktuelle Studie]] gerade eben veröffentlicht. * Auf der {{https://data.oecd.org/inequality/income-inequality.htm|OECD-Webseite}} können verschiedene Merkmale zur Einkommensverteilung über die Zeit (Schiebregler unten rechts) für verschiedene Länder betrachtet werden. Suche dir ein Land, dessen Gini-Koeffizient sich in den letzten Jahren stark verändert hat. Was könnte eine Geschichte dazu sein? * Überlege dir alternative Masse, um Konzentration resp. Ungleichverteilung (im Einkommenskontext) zu messen. * Besprich mit deinem/r Nachbar:in Ideen für eine eigene Projekte, welche untersucht werden könnte und halte diese [[https://padlet.com/simon_knaus1/dyj3e7legldvn6ln|hier]] fest. === 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**: {{ :lehrkraefte:ks:ffstat17:l06_lorenzkurve.png?direct |}} ---- Zwischenfrage: Wo würden die Punkte liegen, wenn alle gleich viel verdienen würden? 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** {{ :lehrkraefte:ks:ffstat17:theorem_lorenzkurve_13.12._pm-600x490_1_.jpg?direct |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! {{ :lehrkraefte:ks:ffstat17:lorenz_bmw.png?direct |}} Die Lorenzkurve macht im Allgemeinen nur Sinn für Merkmale, mit positiven Werten (Preis, Einkommen, etc.) 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 === * Boxplot erstellen und interpretieren * Lage und Skalenmasse auf Grund Boxplot und Kennzahlen interpretieren === Aufträge === * Boxplot * Theorie Boxplot unten lesen * Einen Boxplot von Hand der Daten 9, 6, 7, 7, 3, 9, 10, 1, 8, 7, 9, 9, 8, 10, 5, 10, 10, 9, 10, 8 erstellen. * Einen Boxplot von Hand (mit Hilfe Excel) der Preise von einem BMW Modell (X1 bis X5) erstellen. Dabei soll sein: 1cm ≙ Fr. 10'000 * Einen Boxplot mit Excel erstellen. * Die BMW Boxplots den BMW Histogrammen zuordnen * Die BMW Mittelwerte, Standardabweichungen, IQA, Median und $Q_{30\%}$ den Histogrammen und Boxplots zuordnen * Anwendungen des Boxplots * Abschnitt unten zu "Anwendungen Boxplot durchgehen * Ein Beispiel konstruieren, bei dem Median grösser als Mittelwert ist. * Eine erhobene Grösse ausdenken, bei der Median (oder ein anderes Quantil) mehr interessiert als der Mittelwert und umgekehrt. === Boxplot === {{:lehrkraefte:ks:ffstat17:boxplot.png?direct|}} 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 [[https://de.wikipedia.org/wiki/Normalverteilung|normalverteilten]] Daten, ca. $95\%$ der Beobachtungen innerhalb der beiden Whiskers zu liegen kommen. === Boxplot der Preise nach Modell === {{ :lehrkraefte:ks:ffstat17:box_preis_model.png?direct |}} {{ :lehrkraefte:ks:ffstat17:histograms.png?direct |}} # x1 * Mittelwert: 34155.8 * IQA: 27625 * $Q_{30\%}$: 21900 * Median: 29900 * Standardabweichung: 15200.1 # x3 * Mittelwert: 32018.2 * IQA: 25225 * $Q_{30\%}$: 21500 * Median: 28900 * Standardabweichung: 18084.7 # x4 * Mittelwert: 59603 * IQA: 17175 * $Q_{30\%}$: 52675 * Median: 59900 * Standardabweichung: 11709.4 # x5 * Mittelwert: 51018.6 * IQA: 42975.2 * $Q_{30\%}$: 29900 * Median: 47949.5 * Standardabweichung: 27569.1 # x6 * Mittelwert: 59023.7 * IQA: 43977.5 * $Q_{30\%}$: 38909 * Median: 56400 * Standardabweichung: 25544.2 === Interpretation Boxplot === ''ggplot(bmwdat)+geom_boxplot(aes(x=energieeffizienz,y=preis))+labs(x="Preis")+facet_wrap(~model)'' {{ :lehrkraefte:ks:ffstat17:enereff.png?direct |}} === Anwendungen Boxplot === Löhne in der Stadt Zürich * {{https://www.stadt-zuerich.ch/content/dam/stzh/prd/Deutsch/Statistik/Themen/Wirtschaft/2015-11-12_Statistik-um-12_Loehne-in-der-Stadt-Zuerich.pdf|Lohnreport der Stadt Zürich}} Herunterladen. * Insb. Seiten 12 bis 14: Überrascht diese Verteilung? * Welche Grafiken / Methoden sind aus dem Freifach bekannt? * Gibt es irgeneine Graphik im Lohnreport, welche nicht klar ist? * Wie würde der Lohnreport der Stadt St. Gallen aussehen? ==== Lektion 04 ==== === Ziele === * Jede/r kann ein Histogramm erklären. * Jede/r kann Mittelwert, Modus, Median und beliebige Quantile von Hand und mit Excel/R ausrechnen (Lagemasse) * Jede/r kann Varianz, Standardabweichung, IQA ausrechnen von Hand und mit Excel/R (Skalenmasse) === Auftrag === * Definitionen auf Unterlagen vom letzten Mal falls nötig nachlesen und mit [[#Begriffe|Begriffen]] unten ergänzen. * [[#Definitionen Lektion 04|Definitionen]] aus der heutigen durcharbeiten und nachvollziehen. * Berechne für die genannten Grössen für ''-2.9, 25.4, -12.3, -38.5, 4.2, 23.7, -0.4, 1.5, -23.3, 21.'' von Hand und mit Excel * Berechne für verschiedene BMW Modelle ein Histogram und notiere Mittelwert, Median, Standardabweichung und IQA darunter. Eine mögliche Vorgehensweise dabei wäre * Alle Preise in ein neues Tabellenblatt kopieren * Jeweils in den ersten Zeilen die Grössen für die darunterliegenden Werte ausrechnen und dann Formeln nach rechts ziehen. * Zusatzauftrag: Mit ''rnorm(n,m,s)'' können $n$ sogenanntne [[https://de.wikipedia.org/wiki/Normalverteilung|normalverteilte Zufallsvariablen]] simuliert werden. Simuliere einige Histogramme mit verschiedenen Mittelwerten ''m'' und Standardabweichungen ''s''. Die Bilder der Histogramme sollen dann den Werten von ''m'' und ''s'' zugeordnet werden. * 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: * Kapitel 2 insb. Kapitel 2.2.1 Dataframes lesen * Kapitel 7 insb. Kapitel 7.1 #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 === * {{lehrkraefte:ks:ffstat17:dossier_v0.1.pdf|Unterlagen}} durcharbeiten. * Der Begriff des Zufalls ist intuitiv bekannt bei Experimenten (Würfeln) wie auch erhobenen Daten (Autopreise): In Alltagssprache Zufall beschreiben. * Jede/r kann ein Histogramm erstellen und interpretieren. * Jede/r kann mit Excel Zufallszahlen erzeugen. Aufträge: * Eile-mit-Weile Auftrag ausführen * Zuerst manuell mit Strichliste und Würfeln * Nachher mit Excel simulieren. Hilfreiche Funktionen sind ''WENN()'', ''ZUFALLSZAHL()'', ''RUNDEN()'' resp. ''AUFRUNDEN()'', ''SUMMEWENN()'' etc. Eine {{lehrkraefte:ks:ffstat17:simulation_eile_mit_weile.xlsx|mögliche Lösung ist hier}} zu finden. * Nachher mit R Simulieren. Hiflreiche Fuktionen sind entweder ''sample'' oder ''runif'' ,''ceiling''. Histogramme gibt's mit ''hist'' * Histogramm mit Excel oder Geogebra erstellen: * Excel: Daten markieren, Einfügen -> Alle Diagrammtypen -> Histogramm * Geogebra: Ansicht -> Tabelle -> Daten einfügen mit CTRL+V einfügen -> Analyse einer Variable * Histogramm der Fahrzeugpreise (z.B. alle X1) erstellen === Histogramm Eile mit Weile bei 1'000'000 Würfeln === {{ :lehrkraefte:ks:ffstat17:hist_eilemitweisel.png?400 |}} === R Code Simulation Eile-mit-Weile === * ''sample(1:6,3,replace=T)'' wählt aus den Zahlen 1 bis 6 genau 3 aus * ''while(bedingung){ ... }'' der Code in den Klammer wird ausgeführt, solange ''bedingung'' wahr ist. Die Schleife kann abgebrochen werden mit ''break''. * Idee: Bedingung so wählen, dass weitergewürfelt wird, wenn eine gewürfelt worden ist $6$ ist. * ''replicate(n,...)'' wiederholt den Code ... $n$ mal und hat die Rückgabewerte des aufgerufenen Codes als Liste resp. Vektor. z.B. ''replicate(10,sample(1:4,1))'' 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 === * Jede:r kann mit Pivot-Tabellen einfache Analysen durchführen === Aufträge === * Schaut euch die Einführung Pivot-Tabellen unten an. * Analysiert mittels Pivot-Tabellen folgende Fragen: * Mittlerer Verkaufspreis aller weissen Autos berechnen * Anzahl grüne Autos berechnen * Welches Modell ist am teuersten? * Welche Farbe oder Energieeffizienz ist am günstigsten? Ist das für alle Modelle und Farben oder Energieeffizienz identisch? * Was ist der mittlere Preis aller Autos zwischen 0 und 20'000 Kilometern, 20'000 und 40'000 Kilometern? * Verwende wiederum Pivot-Tabellen * Erstelle zuerst eine Spalte in welcher du mit Runden (''=RUNDEN(xxx;stellen)'') und Multiplikation die gefahrenen Kilometer in Klassen unterteilst. Das heisst, dividiere die gefahrenen Kilometer durch $20'000$, runde dann die Zahl und multipliziere dann wieder mit $20'000$. * Führe die gleiche Analyse für alle Modelle durch. Für alle Farben. Gibt es Zusammenhänge? [[https://web.microsoftstream.com/video/f3892b11-1d93-48d7-b59a-e9e8b0a890ee|Einführung Pivot]] 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 ==== * {{lehrkraefte:ks:ffstat2122:bmw_data.xlsx|Autodaten Excel}} * {{lehrkraefte:ks:ffstat2122:cardata.csv|Autodaten CSV}} * {{lehrkraefte:ks:ffstat2122:ff_statistik_l1.pdf|Folien}} === Ziele === Ziele der Lektion: * Einführung Freifach * Unterlagen kennenlernen * Geräte und Tools kennenlernen * Erste Berechnungen anstellen * R [[https://cran.r-project.org/doc/contrib/Grosz+Peters-R-Reader.pdf|Dokumentation]] Seiten 1-11 lesen und Beispiel-Code durcharbeiten === Auftrag === * [[https://www.youtube.com/watch?v=PCKxdJ0pTu8&feature=youtu.be|Einführungsvideo]] schauen. * Dossier erstellen: * Word-Datei, One-Note Datei, Papier, o.ä. * Formatierung anlegen * Spielen mit Daten: * Mittlerer Verkaufspreis (Durchschnitt) aller Autos berechnen * Mittlerer Verkaufspreis aller weissen Autos berechnen * Anzahl grüne Autos berechnen * Welches Modell ist am teuersten? * Welche Farbe oder Energieeffizienz ist am günstigsten? Ist das für alle Modelle und Farben oder Energieeffizienz identisch? 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 ==== * [[https://cran.r-project.org/bin/windows/base/|R]] * [[https://www.rstudio.com/| RStudio]] ==== 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()''| |Boxplot|Illustration 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)''| |Bestimmtheismass|Quadrat 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 herstellt|Daten -> Analyse|''lm(...)''| |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|||