Für diese Übung brauchst du den Datensatz “blood-pressure.csv”.
Code-Book:
gender
: Geschlechtage
: Alterheight
: Körpergrösseweight
: Gewichtdrug
: ob die Person ein Medikament einnahm (drug)bp1
und bp2
: Blutdruck zu zwei
verschiedenen Messzeitpunkten (Prä/Post)na.omit()
bp1
und
bp2
, was der Blutdruckreduktion entspricht. Speichere die
Ergebnisse in der Variable bp_red
und füge diese dem
Datensatz hinzu. Für die Lösungen wurde bp1
-
bp2
gerechnet (umgekehrt wäre aber nicht falsch).## 'data.frame': 100 obs. of 9 variables:
## $ pid : int 1 2 3 4 5 6 7 8 9 10 ...
## $ gender: chr "female" NA "male" "female" ...
## $ drug : chr "yes" "no" "no" "yes" ...
## $ age : num NA 56.5 45.9 64 58 52.9 77.8 56.9 49.9 65.3 ...
## $ weight: int 66 82 65 59 55 75 84 68 66 68 ...
## $ height: int 173 NA 165 160 174 182 169 177 169 175 ...
## $ bmi : num 22.1 NA 23.9 23 18.2 22.6 29.4 21.7 23.1 22.2 ...
## $ bp1 : int 129 122 109 126 NA 106 128 144 118 132 ...
## $ bp2 : int 123 122 105 116 139 109 133 133 117 120 ...
## pid gender drug age
## Min. : 1.00 Length:100 Length:100 Min. :28.90
## 1st Qu.: 25.75 Class :character Class :character 1st Qu.:45.40
## Median : 50.50 Mode :character Mode :character Median :51.40
## Mean : 50.50 Mean :51.23
## 3rd Qu.: 75.25 3rd Qu.:56.10
## Max. :100.00 Max. :79.00
## NA's :1
## weight height bmi bp1
## Min. :53.00 Min. :154.0 Min. :17.20 Min. : 97.0
## 1st Qu.:63.75 1st Qu.:164.0 1st Qu.:23.10 1st Qu.:115.5
## Median :68.50 Median :169.0 Median :24.20 Median :121.0
## Mean :69.76 Mean :169.3 Mean :24.23 Mean :121.8
## 3rd Qu.:76.00 3rd Qu.:174.5 3rd Qu.:25.10 3rd Qu.:128.0
## Max. :91.00 Max. :188.0 Max. :32.50 Max. :155.0
## NA's :1 NA's :1 NA's :1
## bp2
## Min. : 92.0
## 1st Qu.:111.0
## Median :119.0
## Mean :119.8
## 3rd Qu.:128.0
## Max. :160.0
## NA's :2
Um die anschliessenden Analysen etwas zu vereinfachen, verwenden wir nur Beobachtungen mit kompletten Werten. Dieses Vorgehen ist didaktisch und nicht inhaltlich begründet.
## [1] 95
Man sieht, dass insgesamt 5 Personen fehlende Werte hatten.
Berechne zuerst eine einfache lineare Regression. Also ein
Regressionsmodell, mit nur einer Prädiktorvariable (drug
)
und einer abhängigen Variable (bp_red
). Lass dir davon eine
Zusammenfassung anzeigen. Interpretiere die Koeffizienten und deren
P-Werte.
##
## Call:
## lm(formula = bp_red ~ drug, data = df.bp)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.4375 -2.4375 -0.1915 3.5625 9.8085
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.5625 0.6745 -0.834 0.406
## drugyes 5.7540 0.9590 6.000 3.75e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.673 on 93 degrees of freedom
## Multiple R-squared: 0.2791, Adjusted R-squared: 0.2713
## F-statistic: 36 on 1 and 93 DF, p-value: 3.754e-08
Das Intercept entspricht der durchschnittlichen Blutdruckreduktion in der Gruppe ohne Medikament. In dieser Gruppe hat sich der Blutdruck also um 0.55 mmHg erhöht. Der P-Wert ist gross. Somit besteht keine Evidenz gegen \(H_0\). \(b_1\) ist die Mittelwertsdifferenz zwischen den beiden Gruppen. Die Blutdruckreduktion ist in der Gruppe mit Medikament also 5.76 mmHg höher. Dieser Werte unterscheidet sich statistisch signifikant von 0.
Das Modell oben sagt dir, dass die Variable drug
27.91%
der Varianz von bp_red
erklären kann (siehe R-squared). Um
den “Fit” des Modells zu verbessern, also den Anteil der erklärten
Varianz von bp_red
zu steigern, können zusätzliche
Variablen ins Modell genommen werden. Aus der simple linear
regression wird also eine multiple linear regression.
Hier noch einmal die Form eines einfachen und eines multiplen Regressionsmodells:
Einfache lineare Regression:
\[ Y_i = \beta_0 + \beta_1 x_i + \epsilon_i, i = 1, ..., n, \]
Multiple lineare Regression:
\[ Y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2}+ ... + \beta_mx_{im} + \epsilon_i, i = 1, ..., n, \]
bmi
und
age
hinzu. Lass dir eine Zusammenfassung dieses Modells
ausgeben.anova()
durg
zu interpretieren?bmi
zu interpretieren?age
zu interpretieren?drug
im
multiplen Modell ein anderer als im simplen Modell?Zuerst wird das entsprechende Modell angepasst
##
## Call:
## lm(formula = bp_red ~ drug + bmi + age, data = df.bp)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.2940 -2.8668 0.0425 3.6027 11.9500
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.02228 5.89225 0.852 0.39626
## drugyes 5.33377 0.92961 5.738 1.25e-07 ***
## bmi -0.51083 0.23182 -2.204 0.03008 *
## age 0.13763 0.04769 2.886 0.00487 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.44 on 91 degrees of freedom
## Multiple R-squared: 0.3632, Adjusted R-squared: 0.3422
## F-statistic: 17.3 on 3 and 91 DF, p-value: 5.676e-09
\(R^2\) steigt von .2791 auf .3632.
Somit hat sich der “Fit” des Modells verbessert. Weil mehr
Prädiktorvariablen ins Modell genommen wurden, kann ein grösserer Anteil
der Varianz von bp_red
erklärt werden (neu 36.32%). Wenn
wir Modelle mit mehreren Prädiktoren betrachten, interpretieren wir in
der Regel das Adjusted R-squared.
Wir können testen, ob sich die beiden Modelle unterscheiden. \(H_0\): Die Modelle unterscheiden sich nicht.
## Analysis of Variance Table
##
## Model 1: bp_red ~ drug
## Model 2: bp_red ~ drug + bmi + age
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 93 2031.1
## 2 91 1794.0 2 237.12 6.014 0.003523 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Die Summe der quadrierten Residuen RSS
sind im
komplexeren Modell rund \(2031.1 - 1794 =
237.1\) tiefer. Der entsprechende P-Wert ist kleiner als 5% und
darum ziehen wir die Schlussfolgerung, dass das komplexe Modell die
abhängige Variable statistisch signifikant besser erklärt, als das
einfache Modell. Den P-Wert könnte man auch manuell berechnen:
\(MS_{tot}^{model2} = \frac{SS_{tot}^{model2}}{df_{tot}^{model2}} = \frac{1794}{91} = 19.71\),
\(MS_{Res}^{model1 - model2} = \frac{SS_{Res}^{model1} - SS_{Res}^{model2}}{df_{tot}^{model1}-df_{tot}^{mode2}} = \frac{237.1}{2} = 118.56\),
und \(F = \frac{MS_{Res}^{model1 - model2}}{MS_{tot}^{model2}} = \frac{118.56}{19.71} = 6.014\), mit \(df = \{2, 91\}\),
wobei \(MS\) für Mean Squares steht.
## [1] 0.003523048
Wie ist der Regressionskoeffizient der Prädiktorvariable
durg
zu interpretieren?
Wenn die Variable drug
die Ausprägung 1 annimmt (was
heisst, dass die Person das Medikament nimmt), dann steigt die abhängige
Variable bp_red
um 5.33 unter Berücksichtigung von
bmi
und age
(positive Steigung). Inhaltlich
heisst das, dass die Blutdruckreduktion mit Medikament
um 5.33 mmHg höher ist. Dieser Koeffizient (oder diese Differenz)
unterscheidet sich statistisch signifikant von 0.
Wie ist der Regressionskoeffizient der Prädiktorvariable
bmi
zu interpretieren?
Wenn die Variable bmi
um 1 steigt, dann sinkt der Wert
der abhängigen Variable bp_red
um 0.51 mmHg, unter
Berücksichtigung von age
und drug
(negative
Steigung). Inhaltlich heisst das, dass die Blutdruckreduktion mit
zunehmendem BMI abnimmt (wenn dieser Effekt linear konstant ist). Dieser
Koeffizient von -0.51 unterscheidet sich statistisch signifikant von
0.
Wie ist der Regressionskoeffizient der Prädiktorvariable
age
zu interpretieren?
Wenn die Variable age
um 1 steigt, dann steigt der Wert
der abhängigen Variable bp_red
um 0.14, unter
Berücksichtigung von drug
und bmi
(positive
Steigung). Inhaltlich heisst das, dass die Blutdruckreduktion mit
zunehmendem Alter steigt (wenn dieser Effekt linear konstant ist).
Dieser Koeffizient von 0.14 unterscheidet sich statistisch signifikant
von 0.
Was ist der P-Wert des gesamten Modells/ globaler F-Test?
Hier muss der P-Wert des F-Tests unten rechts im Output betrachtet werden. Dieser P-Wert testet die Null-Hypothese \(\beta_1 = \beta_2 = ... = \beta_m = 0\). Das ist gleichbedeutend mit \(R^2 = 0\).
Warum ist der Regressionskoeffizient für drug
im
multiplen Modell ein anderer als im simplen Modell?
Eine der beiden anderen Prädiktorvariablen age
und
bmi
(oder beide) scheint mit der Variable drug
zu korrelieren. Weil die multiple Regression als Addition der einzelnen
Koeffizienten zu verstehen ist, wird dafür adjustiert. Der Koeffizient
für drug
von 0.533 für ist also der Koeffizient unter
Berücksichtigung der Variablen age
und bmi
.
Dieses “Berücksichtigen” ist in Studien sehr hilfreich, weil man so
beispielsweise für den BMI korrigieren kann, falls dieser in den beiden
Gruppen nicht gleich ist.
Schätzung der durchschnittlichen Blutdruckreduktion für folgende Person:
\[ \hat{y} = \hat{\beta_0} + \hat{\beta_1}drug + \hat{\beta_2}bmi + \hat{\beta_3}age \]
\[ = 5.02228+5.33377+(-0.51083)*29+0.13763*60 = 3.8 \]
In R kann man dies wie folgt tun:
## 1
## 3.800148
Erstelle die nötigen diagnostischen Plots der multiplen linearen Regression und interpretiere diese.
Wie immer schauen wir uns den Tukey-Anscombe Plot (Residuenplot) und den QQ-Plot mit den Residuen an:
Sowohl der TA-Plot sowie der QQ-Plot liefern keine offensichtlichen
Hinweise, dass die Annahme bzgl. Homoskedastizität oder Normalverteilung
der Fehler verletzt sein könnte. Der Smoother (rote Linie) im TA-Plot
weist eine leichte Krümmung, konvex nach unten, auf. Dies könnte darauf
hinweisen, dass age
und/oder bmi
nicht linear
mit bp_red
zusammenhängt/en, sondern dass z.B. eine
quadratische Funktion besser geeignet wäre. Es ist möglich, quadratische
Terme in ein Modell einzuschliessen, das Modell bleibt dennoch
linear.