Seite 1 von 1

Interpretation R Output

Verfasst: Di Mär 20, 2018 12:09 pm
von Hadsga
Hi,

ich habe eine paar Fragen zum R output in der linearen Regression. Ich habe zwar schon einige Bücher und Wiki´s konsultiert, allerdings sind mir einige Sachverhalte noch nicht ganz klar. Anbei ein einfaches Beispiel. Ziel ist den Einfluss der UV auf die AV zu ermitteln:

Code: Alles auswählen


AV <- c(22, 30,  10, 26, 34)
UV <- c( 5,   4,    6,   5,  4)
dat <- data.frame(AV, UV)

fit <- lm(AV~UV, data = dat) 
summary(fit)
confint(fit, level = 0.95)

Residuals:
      1       2       3       4       5 
-0.2857 -2.8571 -1.7143  3.7143  1.1429 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   75.143      8.594   8.744  0.00315 **
UV           -10.571      1.769  -5.976  0.00938 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.96 on 3 degrees of freedom
Multiple R-squared:  0.9225,	Adjusted R-squared:  0.8967 
F-statistic: 35.71 on 1 and 3 DF,  p-value: 0.009378

                2.5 %     97.5 %
(Intercept)  47.79412 102.491598
UV          -16.20108  -4.941779

Wie aus dem Modell zu entnehmen ist, sinkt AV im Schnitt um -10.571, wenn sich UV um eine Einheit erhöht. Meine Frage ist, wie ich die Standardabweichung ermitteln kann, d.h. ich möchte wissen welche Streuung im Durchschnitt um dem Wert -10.571 zu erwarten ist, wenn ich das Modell zur Prognose nutze. Ich weiß, dass der Standardfehler bei 1.769 liegt. Das bedeutet, würde ich die Daten wieder und wieder erheben, würde -10.571 +- 1.769 im Mittel streuen bzw. würde mit 95% Wahrscheinlichkeit irgendwo zwischen -16.20108 und -4.941779 liegen. Kann ich daraus auch ableiten, dass AV um +- 1.769 im Mittel streut, wenn sich UV um eine Einheit erhöht oder bezieht sich das nur auf die Schätzung der Geraden (-steigung)? Einige Beiträge lassen vermuten, dass die geschätzte Streung der RSE, d.h. in diesem Fall -10.571 +- 2.96 ist.

VG
Hadsga

Re: Interpretation R Output

Verfasst: Mi Mär 21, 2018 10:58 am
von bigben
Hallo Hagsda,
Kann ich daraus auch ableiten, dass AV um +- 1.769 im Mittel streut, wenn sich UV um eine Einheit erhöht oder bezieht sich das nur auf die Schätzung der Geraden (-steigung)?
Das ist leider nur eine Schätzung der Streuung der Geradensteigung. Deine AV hängt im Modell vom Intercept, von der Geradensteigung und vom Fehler ab. Für alle drei hast Du nur Schätzungen. Für die Prognose der Streuung Deiner AV müsstest Du im Modell die Ungenauigkeit von allen drei Werten berücksichtigen. Dazu kommt noch, dass es Abweichungen geben wird, weil das lineare Modell i. d. R. nicht die Wahrheit beschreibt. In der Wirklichkeit sind Fehler nicht normalverteilt, sie sind nicht hmoskedastisch und Fälle sind nicht i.i.d. und Grundgesamtheiten nicht unendlich groß usw. usf.
Der Standardfehler der Geradensteigung ist daher allein nicht geeignet für eine Vorhersage, wie stark zukünftige Bobachtungen streuen werden.

Sorry, wenn das jetzt eine Enttäuschung sein sollte.

LG,
Bernhard

Re: Interpretation R Output

Verfasst: Mi Mär 21, 2018 11:35 am
von bigben
Hallo,

um noch einmal klarer zu machen, dass die Schwankungen der Steigung nicht unabhängig sind von den Schwankungen des Intercepts, habe ich mögliche Paarungen von Intercept und zugehöriger Steigung für Dein Beispiel simuliert. Der Code kommt unten, hier relevanter ist die folgende Grafik:
xy.png
xy.png (6.15 KiB) 2306 mal betrachtet
Man darf also für eine Vorhersage nicht einfach so tun, als könnte jeder beliebige Intercept mit jeder beliebigen Steigung vorkommen!

LG,
Bernhard

PS: Der Code für die Grafik oben:

Code: Alles auswählen

library(MCMCpack)
library(ggplot2)
library(ggExtra)
AV <- c(22, 30,  10, 26, 34)
UV <- c( 5,   4,    6,   5,  4)
dat <- data.frame(AV, UV)

fit <- as.data.frame(MCMCregress(AV~UV, data = dat, burnin= 2000, mcmc=5000)) 
names(fit) <- c("Intercept", "beta", "sigma2")
p <- ggplot(as.data.frame(fit)) + 
  geom_point(aes(x=Intercept, y=beta), alpha=.2)
print(ggMarginal(p, type="histogram"))

Re: Interpretation R Output

Verfasst: Mi Mär 21, 2018 12:13 pm
von bigben
Und ich bin es noch ein drittes Mal, denn vielleicht war die Frage viel profaner gemeint und es ging Dir eigentlich darum, wie man ganz praktisch in R ein Vorhersageintervall bestimmt. Man kann die Funktion predict sowohl dafür verwenden, den wahrscheinlichsten Wert an einer Stelle, aber auch das Konfidenzintervall für den wahrscheinlichsten Wert an einer Stelle aber auch ein Vorhersageintervall zu berechnen. Ein 99%-Vorhersageintervall an verschiedensten Stellen von UV könnte man so berechnen:

Code: Alles auswählen

fit <- lm(AV ~ UV, data = dat)

# Vorhersage mit predict
xwerte <- data.frame(UV = seq(3, 7, .5))
vorhersage <- as.data.frame(predict(fit, xwerte, interval="prediction", level=.99))
vorhersage <- cbind(xwerte, vorhersage)
print(vorhersage)
das führt zu:

Code: Alles auswählen

> print(vorhersage)
   UV       fit        lwr      upr
1 3.0 43.428571  16.884186 69.97296
2 3.5 38.142857  14.923703 61.36201
3 4.0 32.857143  12.192367 53.52192
4 4.5 27.571429   8.379869 46.76299
5 5.0 22.285714   3.233732 41.33770
6 5.5 17.000000  -3.273609 37.27361
7 6.0 11.714286 -10.922842 34.35141
8 6.5  6.428571 -19.402399 32.25954
9 7.0  1.142857 -28.444600 30.73031
oder grafisch:
Rplot.png
Rplot.png (6.84 KiB) 2305 mal betrachtet

Re: Interpretation R Output

Verfasst: Mi Mär 21, 2018 7:33 pm
von Hadsga
Hallo Bernhard,

vielen Dank für deine Ausführungen. Jetzt ist vieles klarer. Mir war nicht bewusst, dass man Intercept und den Koeffizienten immer gemeinsam betrachten muss. Das Konfidenzintervall in deinem dritten Post ist eigentlich die Antwort auf meine Frage.

Gruß
Hadsga

Re: Interpretation R Output

Verfasst: Mi Mär 21, 2018 10:38 pm
von EDi
Das Konfidenzintervall in deinem dritten Post ist eigentlich die Antwort auf meine Frage.
Obacht: CI != PI!