W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 1 6 Korrelation und Regression Aufgabe 6.1 (Beispiel 6.1, Produktmomentkorrelation): In einer Studie wurden u.a. die Serumkonzentrationen X und Y der Na- bzw. Cl-Ionen (in mmol/l) in einer Stichprobe von n =15 zufällig ausgewählten Probanden bestimmt. Unter der Annahme, dass X und Y zweidimensional-normalverteilt sind, soll (i) der Verteilungsparameter ρ XY durch die Produktmomentkorrelation r XY geschätzt, (ii) ein 95%- Konfidenzintervall für ρ XY berechnet und (iii) gezeigt werden, dass X und Y voneinander abhängig sind (α = 5%). lfd. Nr. X Y 1 135,0 99,0 2 147,0 106,5 3 148,5 105,5 4 130,0 94,0 5 139,0 98,0 6 129,0 92,0 7 142,0 97,0 8 146,0 106,0 9 131,0 102,5 10 143,5 98,5 11 138,5 105,0 12 145,0 103,0 13 143,0 101,0 14 153,0 107,0 15 149,0 104,0 # Beispiel 6.1 (Produktmomentkorrelation) # Dateneingabe, univariate Statistiken na <- c(135.0, 147.0, 148.5, 130.0, 139.0, + 129.0, 142.0, 146.0, 131.0, 143.5, + 138.5, 145.0, 143.0, 153.0, 149.0) cl <- c(99.0, 106.5, 105.5, 94.0, 98.0, + 92.0, 97.0, 106.0, 102.5, 98.5, + 105.0, 103.0, 101.0, 107.0, 104.0) n_na <- length(na) n_cl <- length(cl) mw_na <- mean(na) mw_cl <- mean(cl) std_na <- sd(na) std_cl <- sd(cl) print(cbind(n_na, mw_na, std_na)) n_na mw_na std_na [1,] 15 141.3 7.379508 print(cbind(n_cl, mw_cl, std_cl)) n_cl mw_cl std_cl [1,] 101.2667 101.2667 4.682287 # bivariate Statistiken s_nacl <- cov(na, cl) # Kovarianz r_nacl <- cor(na, cl, method="pearson") # Produktmoment(=Pearson)korrelation print(cbind(s_nacl, r_nacl)) s_nacl r_nacl [1,] 25.87857 0.7489535 # Konfidenzintervall, Abhängigkeitsprüfung
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 2 cor.test(na, cl, method="pearson", alternative="two.sided", conf.level=0.95) Pearson's product-moment correlation data: na and cl t = 4.0753, df = 13, p-value = 0.001313 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.3840268 0.9115067 sample estimates: cor 0.7489535 Aufgabe 6.2 (Beispiel 6.3, Rangkorrelation nach Spearman) Es soll mit den Daten von Beispiel 6.1 der Zusammenhang der Variablen X und Y mit dem Spearman schen Rangkorrelationskoeffizienten geschätzt werden. Was ergibt die Abhängigkeitsprüfung auf 5%igem Testniveau? Man zeige, dass der Korrelationskoeffizient nach Spearman gleich der mit den rangskalierten Stichproben berechneten Produktkorrealtion ist! # Beispiel 6.3 (Rangkorrelation nach Spearman) # Dateneingabe na <- c(135.0, 147.0, 148.5, 130.0, 139.0, 129.0, 142.0, 146.0, 131.0, 143.5, + 138.5, 145.0, 143.0, 153.0, 149.0) cl <- c(99.0, 106.5, 105.5, 94.0, 98.0, 92.0, 97.0, 106.0, 102.5, 98.5, + 105.0, 103.0, 101.0, 107.0, 104.0) # Parameterschätzung, Abhängigkeitsprüfung cor.test(na, cl, method="spearman", alternative="two.sided") Spearman's rank correlation rho data: na and cl S = 128, p-value = 0.001128 alternative hypothesis: true rho is not equal to 0 sample estimates: rho 0.7714286 # Rangskalierung rang_na <- rank(na) rang_cl <- rank(cl) print(cbind(na, rang_na, cl, rang_cl)) na rang_na cl rang_cl [1,] 135.0 4 99.0 6 [2,] 147.0 12 106.5 14 [3,] 148.5 13 105.5 12 [4,] 130.0 2 94.0 2 [5,] 139.0 6 98.0 4 [6,] 129.0 1 92.0 1 [7,] 142.0 7 97.0 3 [8,] 146.0 11 106.0 13 [9,] 131.0 3 102.5 8 [10,] 143.5 9 98.5 5 [11,] 138.5 5 105.0 11 [12,] 145.0 10 103.0 9 [13,] 143.0 8 101.0 7
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 3 [14,] 153.0 15 107.0 15 [15,] 149.0 14 104.0 10 cor(rang_na, rang_cl) [1] 0.7714286 Aufgabe 6.3 (Beispiel 6.3, Chiquadrat-Test auf Abhängigkeiten) Die Häufigkeitsdaten in der folgenden Tabelle beschreiben die gemeinsame Variation der Merkmale X="Augenfarbe" und Y="Haarfarbe" in einer Stichprobe von 200 Personen. a) Wie groß sind die bei einer angenommenen Unabhängigkeit zu erwartenden Häufigkeiten? b) Ist die Korrelation signifikant von null verschieden? (α=5%) Haarfarbe Augenfarbe hell mittel dunkel Σ (Zeilen) blau 16 11 5 32 hell 18 19 10 47 mittel 16 42 20 78 dunkel 6 20 17 43 Σ (Spalten) 56 92 52 200 # Beispiel 6.4 (Erwartete Häufigkeiten, Chiquadrat-Test auf Abhängigkeit) obfreq <- matrix(c(16, 11, 5, + x <- chisq.test(obfreq, correct=true))) obfreq <- matrix(c(16, 11, 5, 18, 19, 10, 16, 42, 20, 6, 20, 17), + nrow=4, byrow=true, + dimnames=list(augenfarbe=c("blau", "hell", "mittel", "dunkel"), + =c("hell", "mittel", "dunkel"))) obfreq blau 16 11 5 hell 18 19 10 mittel 16 42 20 dunkel 6 20 17 testergebnis <- chisq.test(obfreq, correct=true) testergebnis Pearson's Chi-squared test data: obfreq = 18.9688, df = 6, p-value = 0.004217 # p-value=0.004217 < 5% H1 (Augenfarbe und Haarfarbe # variieren voneinader abhängig) summary(testergebnis) Length Class Mode statistic 1 -none- numeric parameter 1 -none- numeric p.value 1 -none- numeric method 1 -none- character data.name 1 -none- character observed 12 -none- numeric expected 12 -none- numeric residuals 12 -none- numeric
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 4 for (i in 1:8){print(testergebnis[i])} $statistic 18.96878 $parameter df 6 $p.value [1] 0.00421668 $method [1] "Pearson's Chi-squared test" $data.name [1] "obfreq" $observed blau 16 11 5 hell 18 19 10 mittel 16 42 20 dunkel 6 20 17 $expected blau 8.96 14.72 8.32 hell 13.16 21.62 12.22 mittel 21.84 35.88 20.28 dunkel 12.04 19.78 11.18 $residuals blau 2.351899-0.96959203-1.15100291 hell 1.334189-0.56347344-0.63506382 mittel -1.249645 1.02170426-0.06217618 dunkel -1.740699 0.04946631 1.74061244 Aufgabe 6.4 (Beispiel 6.5, Odds Ratio, Phi-Koeffizient) In einer Studie wurde untersucht, ob zwischen der Mortalität in der Perinatalperiode (Merkmal Y, Werte ja/nein) und dem Rauchen während der Schwangerschaft (Merkmal X, Werte ja/nein) ein Zusammenhang besteht. Zu diesem Zweck wurden Daten in einer Geburtenstation erhoben. Man berechne den Phi-Koeffizienten und das Odds-Ratio. Ist der Phi-Koeffizient auf 5%igen Testniveau von null verschieden? Raucher X Mortalität Y ja nein Σ (Zeilen) ja 246 264 510 nein 8160 10710 18870 Σ (Spalten) 8406 10974 19380
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 5 # Beispiel 6.5 (Odds Ratio, Phi-Koeffizient) mort <- matrix(c(246, 8160, 264, 10710), nrow=2, ncol=2, + dimnames=list(mortalität=c("ja", "nein"), Raucher=c("ja", "nein"))) mort Raucher Mortalität ja nein ja 246 264 nein 8160 10710 testergebnis <- chisq.test(mort, correct=true) testergebnis Pearson's Chi-squared test with Yates' continuity correction data: mort = 4.8373, df = 1, p-value = 0.02785 testergebnis[1] $statistic 4.837279 chi2sum <- testergebnis[[1]] # Auswahl des numerischen Elementes der Liste chi2sum 4.837279 phi <- sqrt(chi2sum/sum(mort)) phi 0.01579878 OR <- (mort[1,1]/mort[2,1])/(mort[1,2]/mort[2,2]) OR [1] 1.223011 Aufgabe 6.5 (Beispiel 6.6, Einfache lineare Regression) Mit den Messdaten (Na- und Cl-Ionenkonz. X bzw. Y) von Aufgabe 6.1 sind - nach Überprüfung der Abhängigkeit (α = 5%) - zu bestimmen: - die lineare Regressionsfunktion (von Y auf X), - die erwarteten Zielvariablenwerte zu vorgebenen Werten der Einflussgröße, - die mittleren Zielvariablenwerte (einschl. 95%-Konfidenzintervalle), - das 95%-Konfidenzintervall für den Geradenanstieg und den Achsenabschnitt. # Beispiel 6.6 (Einfache lineare Regression) # Dateneingabe: na <- c(135.0, 147.0, 148.5, 130.0, 139.0, 129.0, 142.0, 146.0, 131.0, 143.5, + 138.5, 145.0, 143.0, 153.0, 149.0) cl <- c(99.0, 106.5, 105.5, 94.0, 98.0, 92.0, 97.0, 106.0, 102.5, 98.5, + 105.0, 103.0, 101.0, 107.0, 104.0) # Graphische Überprüfung der Adäquatheit des linearen Modells: plot(na, cl) abline(lm(cl~na))
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 6 # Abhängigkeitsprüfung und Schätzung der Geradenparameter: daten <- data.frame(na, cl) daten na cl 1 135.0 99.0 2 147.0 106.5 3 148.5 105.5 4 130.0 94.0 5 139.0 98.0 6 129.0 92.0 7 142.0 97.0 8 146.0 106.0 9 131.0 102.5 10 143.5 98.5 11 138.5 105.0 12 145.0 103.0 modell <- lm(formula=cl~na, data=daten) summary(modell) Call: lm(formula = cl ~ na, data = daten) Residuals: Min 1Q Median 3Q Max -4.59931-2.03524-0.02494 1.65583 6.12799 Coefficients: Estimate Std. Error t value Pr( t ) (Intercept) 34.1195 16.4975 2.068 0.05913. na 0.4752 0.1166 4.075 0.00131 ** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05. 0.1 1 Residual standard error: 3.22 on 13 degrees of freedom Multiple R-Squared: 0.5609, Adjusted R-squared: 0.5272 F-statistic: 16.61 on 1 and 13 DF, p-value: 0.001313 # Erwartete Zielvariablenwerte zu vorgegebenen Werten der Einflussgröße: predict(modell, data.frame(na=c(130, 135, 140, 145))) 1 2 3 4 95.89680 98.27284 100.64889 103.02494 # Erwartete Zielvariablenwerte und 95%-Konfidenzintervalle cl_expected <- predict(modell, data.frame(na=sort(na)), + level=0.95, interval="confidence") print(cl_expected) fit lwr upr 1 95.42159 91.84018 99.00300 2 95.89680 92.53096 99.26263 3 96.37201 93.21636 99.52765 4 98.27284 95.87612 100.66956 5 99.93608 98.00656 101.86560
W. Timischl: Angewandte Statistik Lösung von Beispielen mit R 7 6 100.17368 98.28657 102.06080 7 101.59931 99.79471 103.40392 8 102.07452 100.22820 103.92085 9 102.31213 100.43259 104.19166 10 103.02494 101.00151 105.04838 11 103.50015 101.34902 105.65128 12 103.97536 101.67594 106.27479 13 104.68818 102.13567 107.24069 14 104.92578 102.28228 107.56928 15 106.82662 103.37515 110.27809 plot(na, cl) abline(modell) lines(sort(na), cl_expected[,2]) lines(sort(na), cl_expected[,3]) # 95%ige Konfidenzintervalle für den # Anstieg und den Achsenabschnitt estimates <- coefficients(summary(modell)) estimates Estimate Std. Error t value Pr( t ) (Intercept) 34.1195129 16.4975467 2.068157 0.059126393 na 0.4752099 0.1166071 4.075307 0.001312519 se_slope <- estimates[2,2] se_intercept <- estimates[1,2] print(cbind(se_slope, se_intercept)) se_slope se_intercept [1,] 0.1166071 16.49755 df <- length(na)-2 quantil_95 <- qt(0.975, df) quantil_95 [1] 2.160369 UG_slope <- estimates[2,1]-quantil_95*se_slope OG_slope <- estimates[2,1]+quantil_95*se_slope print(cbind(ug_slope, OG_slope)) UG_slope OG_slope [1,] 0.2232955 0.7271243 UG_intercept <- estimates[1,2]-quantil_95*se_intercept OG_intercept <- estimates[1,2]+quantil_95*se_intercept print(cbind(ug_intercept, OG_intercept)) UG_intercept OG_intercept [1,] -19.14324 52.13833