Kapitel 9 Verteilungen

Es ist wichtig zu untersuchen, wie die Daten verteilt sind. Es gibt unterschiedliche Formen der Verteilungen.

Statistiker:innen kennen viele Verteilungen. Warum sind Verteilungen wichtig?

9.1 Verteilungen und beschreibende Statistik

Wer wir etwas mit Statistik zusammenfassend beschreiben wollen, sollte die berechnete Statistik die Stichprobe gut beschreiben. Schauen wir uns das nächste Histogramm der Körpergrösse einer Gruppe von Personen an. Der Mittelwert als Kennzahl für die zentrale Tendenz ist hier eine gute Wahl. Als Streuungsmass ist die Standardabweichung geeignet.

Körpergrösse_Männer_in_cm = rnorm(1000, 178, 12)
Körpergrösse_Frauen_in_cm = rnorm(1000, 174, 11)
Körpergrösse=c(Körpergrösse_Männer_in_cm,Körpergrösse_Frauen_in_cm)


hist(Körpergrösse, freq=FALSE, col="#F519FF33") # alpha (transparency) is added as two digits at end of hex code for colours
Histogramm der Körpergrösse.

Abbildung 9.1: Histogramm der Körpergrösse.

Doch wenn wir uns das nächste Histogramm anschauen, so werden wir schnell begreifen, dass der Mittelwert wahrscheinlich nicht die beste Wahl ist. Das Histogramm zeigt, wie oft die ältere Menschen der Stichprobe in den letzten zwölf Monaten gestürzt sind. Der Mittelwert und die Standardabweichung sind hier nicht ideal. Besser wäre hier der Median und die Interquartilzone (25. und 75. Perzentile).

hist(data_script$N_Falls_Past_12Months_prior_t0, breaks=42)
Hier ist der Mittelwert nicht für jede Fragestellung der beste Wert für die zentrale Tendenz (siehe Kapitel Zentrale Tendenz), noch problematischer ist jedoch die Standardabweichung, die hier gar keinen Sinn macht. Warum? Die Standardabweichung von 2.26 würde uns ja sagen, dass auch eine negative Anzahl von Stürzen geben kann.

Abbildung 9.2: Hier ist der Mittelwert nicht für jede Fragestellung der beste Wert für die zentrale Tendenz (siehe Kapitel Zentrale Tendenz), noch problematischer ist jedoch die Standardabweichung, die hier gar keinen Sinn macht. Warum? Die Standardabweichung von 2.26 würde uns ja sagen, dass auch eine negative Anzahl von Stürzen geben kann.

mean(data_script$N_Falls_Past_12Months_prior_t0)
## [1] 1.451872
sd(data_script$N_Falls_Past_12Months_prior_t0)
## [1] 2.264443
quantile(c(0.25,0.5, 0.75))
##    0%   25%   50%   75%  100% 
## 0.250 0.375 0.500 0.625 0.750

Oder, wir könnten auch die Anzahl Stürze als kategorielle Variable behandeln und die absolute und relative Häufigkeit tabellarisch ausgeben.

summarytools::freq(data_script$N_Falls_Past_12Months_prior_t0)
## Frequencies  
## data_script$N_Falls_Past_12Months_prior_t0  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0    122     32.62          32.62     32.62          32.62
##           1    128     34.22          66.84     34.22          66.84
##           2     66     17.65          84.49     17.65          84.49
##           3     28      7.49          91.98      7.49          91.98
##           4     11      2.94          94.92      2.94          94.92
##           5      8      2.14          97.06      2.14          97.06
##           6      4      1.07          98.13      1.07          98.13
##           7      1      0.27          98.40      0.27          98.40
##          10      3      0.80          99.20      0.80          99.20
##          12      2      0.53          99.73      0.53          99.73
##          30      1      0.27         100.00      0.27         100.00
##        <NA>      0                               0.00         100.00
##       Total    374    100.00         100.00    100.00         100.00

9.2 Für Interessierte

Wir können die oben gezeigten Daten auch simulieren. Was bedeutet simulieren? Wenn wir keinen Zugang zu richtigen Daten haben, aber wissen wie die Daten verteilt sind, so können wir Daten erfinden, um bestimmte Berechnungen zu machen. Daten werden natürlich auch zum Betrügen simuliert - aber nicht jedes Simulieren von Daten ist ein Betrug.

Um Daten zum Beispiel der Sturzhäufigkeit zu simulieren, muss man wissen, welche theoretische Verteilung der realen Verteilung am nächsten kommt. Statistiker:innen wissen, dass die Anzahl Stürze am ehesten mit einer Poisson-Verteilung, oder einer negativ-binomialen Verteilung simuliert werden können.

Versuchen wir zuerst eine Poisson Verteilung. Bei der Poisson Verteilung ist der Mittelwert gleich gross wie die Varianz. Zum erstellen einer Poisson Verteilung benötigen wir einen Parameter, nämlich die Rate (und natürlich die Anzahl Beobachtungen in der Stichprobe).

N_Falls_Poisson<-rpois(374,mean(data_script$N_Falls_Past_12Months_prior_t0))
hist(N_Falls_Poisson,  col="#029E4B83", breaks=42,)
Histogramm der simulierten Sturzhäufigkeit (simuliert nach einer Poisson Verteillung).

Abbildung 9.3: Histogramm der simulierten Sturzhäufigkeit (simuliert nach einer Poisson Verteillung).

mean(N_Falls_Poisson)
## [1] 1.393048
sd(N_Falls_Poisson)
## [1] 1.173

Mmmmh, wenn wir die echten Daten und die simulierten Daten übereinander legen, sehen wir, dass wir noch nicht so gut sind. Die Standardabweichung der echten Daten ist auch grösser als die der simulierten Daten.

hist(data_script$N_Falls_Past_12Months_prior_t0, col="#F519FF13", breaks=42)
hist(N_Falls_Poisson, col="#029E4B83", breaks=42, add=TRUE)
Histogramme der echten Daten und der simulierten Daten (simuliert nach einer Poisson Verteilung).

Abbildung 9.4: Histogramme der echten Daten und der simulierten Daten (simuliert nach einer Poisson Verteilung).

Jetzt versuchen wir eine Gamma Verteilung. Wenn wir die echten Daten und die simulierten Daten aufeinander legen, sehen wir, dass wir gar nicht so weit daneben liegen. Aber wenn wir die simulierten Zahlen anschauen, sehen wir ein Problem: Die Anzahl Stürze sind ja diskret, das heisst, man kann entweder keinmal, einmal oder zweimal, etc. stürzen, aber nicht 0.5 mal. Wo liegt der Fehler? Gamma ist eine Verteilung kontinuierlicher Zahlen. Für unser Beispiel benötigen wir jedoch eine Verteilung diskreter Zahlen. Die Poisson Verteilung war eine diskrete Verteilung. Oder die negativ-binomiale Verteilung, die wir uns als nächstes Anschauen.

mean=mean(data_script$N_Falls_Past_12Months_prior_t0)
sd=sd(data_script$N_Falls_Past_12Months_prior_t0)
N_Falls_Gamma<-rgamma(374,shape=(mean/sd)^2, rate=mean/sd^2 )

hist(data_script$N_Falls_Past_12Months_prior_t0, col="#F519FF13", breaks=42)
hist(N_Falls_Gamma, col="#029E4B83", breaks=42, add=TRUE)
Grün = Simulierte Daten mit einer Gamma Verteilung. Rosa = echte Daten.

Abbildung 9.5: Grün = Simulierte Daten mit einer Gamma Verteilung. Rosa = echte Daten.

summarytools::freq(N_Falls_Gamma[1:10])
## Frequencies  
## N_Falls_Gamma  
## Type: Numeric  
## 
##                           Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------------------- ------ --------- -------------- --------- --------------
##       0.033974622542435      1     10.00          10.00     10.00          10.00
##       0.307161014476532      1     10.00          20.00     10.00          20.00
##       0.545294232260634      1     10.00          30.00     10.00          30.00
##       0.615775021511504      1     10.00          40.00     10.00          40.00
##       0.779054813704406      1     10.00          50.00     10.00          50.00
##       0.942409121329511      1     10.00          60.00     10.00          60.00
##        1.51223231510292      1     10.00          70.00     10.00          70.00
##        1.59591761233619      1     10.00          80.00     10.00          80.00
##          6.343952647495      1     10.00          90.00     10.00          90.00
##        7.87423545596202      1     10.00         100.00     10.00         100.00
##                    <NA>      0                               0.00         100.00
##                   Total     10    100.00         100.00    100.00         100.00

Als nächstes Simulieren wir die Anzahl Stürze mit der negativ-binomialen Verteilung.

var<-sd(data_script$N_Falls_Past_12Months_prior_t0)^2
N_Falls_negative_binomial<-rnbinom(374,mu=mean(data_script$N_Falls_Past_12Months_prior_t0), 0.58)
mean(N_Falls_negative_binomial)
## [1] 1.382353
sd(N_Falls_negative_binomial)
## [1] 2.153819
hist(data_script$N_Falls_Past_12Months_prior_t0, col="#F519FF13", breaks=42)
hist(N_Falls_negative_binomial, col="#029E4B83", breaks=42, add=TRUE)
Histogramme der echten Daten und der simulierten Daten (simuliert nach einer Poisson Verteilung).

Abbildung 9.6: Histogramme der echten Daten und der simulierten Daten (simuliert nach einer Poisson Verteilung).

summarytools::freq(N_Falls_negative_binomial)
## Frequencies  
## N_Falls_negative_binomial  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0    180     48.13          48.13     48.13          48.13
##           1     81     21.66          69.79     21.66          69.79
##           2     44     11.76          81.55     11.76          81.55
##           3     18      4.81          86.36      4.81          86.36
##           4     22      5.88          92.25      5.88          92.25
##           5     12      3.21          95.45      3.21          95.45
##           6      6      1.60          97.06      1.60          97.06
##           7      1      0.27          97.33      0.27          97.33
##           8      2      0.53          97.86      0.53          97.86
##           9      3      0.80          98.66      0.80          98.66
##          10      2      0.53          99.20      0.53          99.20
##          12      1      0.27          99.47      0.27          99.47
##          13      1      0.27          99.73      0.27          99.73
##          15      1      0.27         100.00      0.27         100.00
##        <NA>      0                               0.00         100.00
##       Total    374    100.00         100.00    100.00         100.00

Kosten im Gesundheitswesen sind meist schief verteilt. Um Kosten zu simulieren, nehmen Statistiker:innen oft die Gamma Verteilung.

Wir können das einmal an einem Beispiel aus der Sturzprävention anschauen. Die Rheumaliga hat zusammen mit der ZHAW ein Sturzpräventionsprogramme evaluiert siehe hier für den Abschlussbericht. Die Durschnittlichen Unfallkosten in den ersten zwei Monaten nach Sturz waren 4585 CHF. Die Standardabweichung war 7470. Schon an diesen Zahlen sehen wir, dass diese Zahlen nicht aus einer Normalverteilung stammen. Das sehen wir auch visuell im folgenden Histogramm, für das wir eine normalverteilte Daten mit Mittelwert 4585 und Standardabweichung 7470 simuliert haben. Da es aber negative Kosten gibt im Histogramm, erkennen wir, das dies nicht stimmen kann.

Kosten<-rnorm(1000, mean=4585, sd=7470)
library(ggplot2)
ggplot(data.frame(Kosten), aes(x=Kosten))+
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Histogramm von simulierten Daten aus einer Normalverteilung mit Mean 4585 und SD 7470. Wir sehen, dass hier etwas nicht stimmt: es gibt nämlich negative Kosten. Daraus erkennen wir, dass die realen Kosten nicht normalverteilt sind (d.h. die simulierten Daten sind schon normalverteilt, weil der Computer das so simuliert, aber diese simulierten Daten entsprechen eben nicht der Realität).

(#fig:Histogramm_Kosten )Histogramm von simulierten Daten aus einer Normalverteilung mit Mean 4585 und SD 7470. Wir sehen, dass hier etwas nicht stimmt: es gibt nämlich negative Kosten. Daraus erkennen wir, dass die realen Kosten nicht normalverteilt sind (d.h. die simulierten Daten sind schon normalverteilt, weil der Computer das so simuliert, aber diese simulierten Daten entsprechen eben nicht der Realität).

Wenn wir jetzt die Daten mit einer Gamma-Verteilung simulieren, sehen wir, das dies schon eher der Realität entspricht.

Hier eine Erklärung zum Code - ist natürlich nicht Bachelor-Niveau, so don’t worry.

mean=4585
sd=7470
cost<-rgamma(10000,shape=(mean/sd)^2, rate=mean/sd^2 )
mean(cost)
## [1] 4408.171
sd(cost)
## [1] 7135.092
ggplot(data.frame(cost), aes(x=cost))+
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Histogramm von simulierten Daten aus einer Gammaverteilung mit Mean 4585 und SD 7470. Die Gammaverteilung wird eigentlich nicht mit Mittelwert und Standardabweichung definiert, sondern mit zwei anderen Parametern (Skalenparameter und Formparameter, [siehe hier](https://www.statistik-nachhilfe.de/ratgeber/statistik/wahrscheinlichkeitsrechnung-stochastik/wahrscheinlichkeitsverteilungen/stetige-verteilungen/gamma-verteilung)).

Abbildung 9.7: Histogramm von simulierten Daten aus einer Gammaverteilung mit Mean 4585 und SD 7470. Die Gammaverteilung wird eigentlich nicht mit Mittelwert und Standardabweichung definiert, sondern mit zwei anderen Parametern (Skalenparameter und Formparameter, siehe hier).

Ende des Kapitels