master
marcgauch 2022-11-18 21:01:02 +01:00
parent 5113851950
commit afd7d1babf
4 changed files with 536 additions and 43 deletions

1
.gitignore vendored
View File

@ -45,3 +45,4 @@ docs/
# translation temp files
po/*~
*.onetoc2

BIN
images/kurtosis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

View File

@ -4,10 +4,13 @@ author: "Marc Gauch"
date: "`r Sys.Date()`"
output:
html_document:
toc: true
toc_depth: 2
toc_float: true
number_sections: true
toc: yes
toc_depth: 4
toc_float: yes
number_sections: yes
pdf_document:
toc: yes
toc_depth: '2'
---
```{r setup, include=FALSE}
@ -21,6 +24,49 @@ if (!require(tidyverse)){
install.packages("tidyverse")
library(tidyverse)
}
if (!require(moments)){
install.packages("moments")
library(moments)
}
```
# Own functions
## Frequency Table ordered from wish.com
```{r}
freq <- function(data){
na_count = length(data[is.na(data)])
valid_count = length(data)-na_count
frequency <- table(data)
p <- prop.table(frequency)
percent <- round(p*100, digits = 2)
frequency_sum <- cumsum(frequency)
hkum <- cumsum(p)
percent_sum <- round(hkum*100, digits = 2)
freq_table <- cbind(frequency, percent, frequency_sum, percent_sum)
valid_percent <- round(valid_count / length(data)*100, digits = 2)
na_percent <- round(na_count / length(data)*100, digits = 2)
print(freq_table)
count <- c(valid_count, na_count, valid_count+na_count)
percent <- c(valid_percent, na_percent, valid_percent+na_percent)
totall <- c(valid_count+na_count, valid_percent+na_percent)
df <- data.frame(count, percent, row.names = c("valid", "NA", "Total"))
print(df)
}
```
*Source: https://tellmi.psy.lmu.de/tutorials/deskriptive-statistiken-und-grafiken.html#haeufigkeiten-diskret and adapted*
## Modus
```{r}
getmode <- function(v) {
uniqv <- unique(v)
x <- tabulate(match(v, uniqv))
uniqv[which(x==max(x))]
}
```
# Load Data
@ -209,6 +255,7 @@ litdata$D1_2 <- as.logical(litdata$D1_2)
litdata <- litdata %>% mutate(D1_3 = ifelse(D1_3 == "Ja", TRUE, ifelse(D1_3 == "Nicht Gewählt", FALSE, D1_3)))
litdata$D1_3 <- as.logical(litdata$D1_3)
litdata <- litdata %>% mutate(D1_4 = ifelse(D1_4 == "Ja", TRUE, ifelse(D1_4 == "Nicht Gewählt", FALSE, D1_4)))
litdata$D1_4 <- as.logical(litdata$D1_4)
@ -307,9 +354,163 @@ displayFunction1 <- function(table, column) {
displayFunction1(litdata, "D7")
```
Die Warnung ist resultiert daraus, dass es sehr viele *NA* gibt.
Die Warnung resultiert daraus, dass es sehr viele *NA* gibt.
### D8 (H008) {-}
```{r}
displayFunction1(litdata, "D8")
```
# Selbststudium 2.1
We have the year 2021
## Preparation
```{r}
birthyears <- litdata$D7
# remove NAs
birthyears <- birthyears[!is.na(birthyears)]
age <- 2021-birthyears
```
## Frequency
```{r}
freq(age)
# with NA
freq(2021-litdata$D7)
```
## Selbststudium 2
https://www.beratung-statistik.de/statistik-beratung-infos/r-tutorial/deskriptive-statistik-r/
### Modalwert
```{r}
# own method
getmode(age)
```
### Median
```{r}
median(age)
```
### Arithmetischer Mittelwert
```{r}
mean(age)
```
### Spannweite
```{r}
max(age)-min(age)
```
### Quartilsabstand
```{r}
IQR(age)
# just for fun
summary(age)
```
### Varianz
```{r}
var(age)
```
### Standardabweichung
```{r}
sd(age)
```
### Schiefe
```{r}
library(moments)
skewness(age)
```
> Die Kennzahl Schiefe ist wird Null bei einer perfekt symmetrischen Verteilung, größer als Null bei einer rechtsschiefen und kleiner als Null bei einer linksschiefen Verteilung.
https://www.beratung-statistik.de/statistik-beratung-infos/r-tutorial/deskriptive-statistik-r/
### Kurtosis
```{r}
kurtosis(age)
```
> Eine weitere bekannte Kennzahl ist die Kurtosis. Um eine Vorstellung von der Bedeutung der Kurtosis zu erhalten, betrachten Sie nachfolgende Graphik.
In dieser Graphik sind eine Normalverteilung, sowie eine steilgipflige (aka leptokurtisch) und eine flachgipflige (aka platykurtisch) dargestellt.
Die steilgipflige Verteilung ist in der Mitte spitzer als die Normalverteilung und an den Rändern breiter. Bei der flachgipligen Verteilung ist es anders herum. Die Kurtosis ist nun eine Kennzahl, mit der untersucht wird, ob eine Verteilung im Vergleich zur Normalverteilung flachgipflig oder steilgipflig ist:
- Für eine Normalverteilung nimmt die Kurtosis genau den Wert 3 an.
- Eine steilgipflige Verteilung hat eine Kurtosis, die größer als 3 ist.
- Für eine flachgipflige Verteilung ist die Kurtosis kleiner als 3.
- Beachten Sie: Anstatt der Kurtosis wird häufig auch der sogenannte Exzess verwendet. Dies ist eine weitere Kennzahl, die definiert ist durch die Formel: Exzess = Kurtosis - 3.
- Der Exzess ist somit größer als Null, wenn die Verteilung steilgipflig ist, und kleiner als Null bei einer flachgipfligen Verteilung.
![Abbildung Kurtosis](images/kurtosis.png)
Frech kopiert von: https://www.beratung-statistik.de/statistik-beratung-infos/r-tutorial/deskriptive-statistik-r/
### QQ-Plot
```{r}
qqnorm(age)
qqline(age)
```
### Historam for age {.tabset}
#### Auto Breaks {-}
```{r}
hist(age)
```
#### 3 Breaks {-}
```{r}
hist(age, breaks = 3)
```
#### 5 Breaks {-}
```{r}
hist(age, breaks = 5)
```
#### 7 Breaks {-}
```{r}
hist(age, breaks = 7)
```
#### 10 Breaks {-}
```{r}
hist(age, breaks = 10)
```
#### 15 Breaks {-}
```{r}
hist(age, breaks = 15)
```
#### 20 Breaks {-}
```{r}
hist(age, breaks = 20)
```
#### 30 Breaks {-}
```{r}
hist(age, breaks = 30)
```
# Selbststudium 2.2
Auf der Grundlage von Daten aus einer Schweizer Schüllererhebung wird aus verschiedenen Variablen (z.B. Angaben zum Beruf der Eltern, zur Elternausbildung sowie zur Anzahl von Bücchern zu Hause) ein Index zur sozialen Herkunft erstellt. Dieser Index erscheint in einer neu gebildeten numerischen Variable im Datensatz, gibt also für jeden Fall in diesem Datensatz einen Skalenwert zur sozialen Herkunft an. Die neu gebildete Skala läuft von 0 (Wert mit der geringsten Ausprägung) bis 10 (Wert mit der höchsten Ausprägung).
Für die gesamte Schweiz liegt der arithmetische Mittelwert auf dieser Skala bei 5.6 und die Standardabweichung beträgt 1.8 (Zahlen sind von mir frei erfunden!). Die Verteilung entspricht einer Normalverteilung.
Der Mittelwert der Verteilung der Bündner Schüler liegt etwas tiefer als in der Gesamtschweiz, nämlich bei 5.1 mit einer Standardabweichung von 2.
## Aufgabenstellung 1
Wo in der Verteilung der Schweiz liegt der Bündner Mittelwert, bzw. wie viele Schweizer Schüler haben bzgl. der sozialen Herkunft einen tieferen Wert als der typische Bündner Schüler?
```{r}
pnorm(5.1, mean = 5.6, sd = 1.8)
```
## Aufgabenstellung 2
In einem Bündner Ort beträgt der Mittelwert auf der Skala zur sozialen Herkunft 5.6, er ist also genauso hoch wie in der Gesamtschweiz. Was ist zur Lage dieses Wertes bezogen auf die Verteilung in Graubünden zu sagen? Also: Wie viele Schüler in GR liegen mit ihrem Wert darunter?
```{r}
pnorm(5.6, mean = 5.1, sd=2.0)
```