Die Entfernung des statistisch signifikanten Intercept-Terms erhöht im linearen Modell

101

In einem einfachen linearen Modell mit einer einzelnen erklärenden Variablen

αi=β0+β1δi+ϵi

Ich finde, dass das Entfernen des Intercept-Terms die Anpassung stark verbessert (der Wert von geht von 0,3 auf 0,9). Der Intercept-Term scheint jedoch statistisch signifikant zu sein.R2

Mit abfangen:

Call:
lm(formula = alpha ~ delta, data = cf)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.72138 -0.15619 -0.03744  0.14189  0.70305 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.48408    0.05397    8.97   <2e-16 ***
delta        0.46112    0.04595   10.04   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.2435 on 218 degrees of freedom
Multiple R-squared: 0.316,    Adjusted R-squared: 0.3129 
F-statistic: 100.7 on 1 and 218 DF,  p-value: < 2.2e-16

Ohne abzufangen:

Call:
lm(formula = alpha ~ 0 + delta, data = cf)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.92474 -0.15021  0.05114  0.21078  0.85480 

Coefficients:
      Estimate Std. Error t value Pr(>|t|)    
delta  0.85374    0.01632   52.33   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.2842 on 219 degrees of freedom
Multiple R-squared: 0.9259,   Adjusted R-squared: 0.9256 
F-statistic:  2738 on 1 and 219 DF,  p-value: < 2.2e-16

Wie würden Sie diese Ergebnisse interpretieren? Soll ein Intercept-Term in das Modell aufgenommen werden oder nicht?

Bearbeiten

Hier sind die restlichen Quadratsummen:

RSS(with intercept) = 12.92305
RSS(without intercept) = 17.69277
Ernest A
quelle
14
Ich erinnere mich, dass das Verhältnis der erklärten zur Gesamtvarianz ist, NUR wenn der Achsenabschnitt enthalten ist. Andernfalls kann es nicht abgeleitet werden und verliert seine Interpretation. R2
Momo
@Momo: Guter Punkt. Ich habe die restlichen Quadratsummen für jedes Modell berechnet, was darauf hinzudeuten scheint, dass das Modell mit dem Intercept-Term besser passt, unabhängig davon, was sagt. R2
Ernest A
4
Nun, der RSS-Wert muss sinken (oder zumindest nicht steigen), wenn Sie einen zusätzlichen Parameter hinzufügen. Noch wichtiger ist, dass ein Großteil der Standardinferenz in linearen Modellen nicht angewendet wird, wenn Sie den Achsenabschnitt unterdrücken (auch wenn er statistisch nicht signifikant ist).
Makro
14
Was tut, wenn es keinen Schnittpunkt gibt, ist, dass es stattdessen berechnet (beachte, keine Subtraktion des Mittelwerts in der Nenner Terme). Dies vergrößert den Nenner, was bei gleichem oder ähnlichem MSE zu einem Anstieg von . R 2 = 1 - Σ i ( y i - y i ) 2R R2
R2=1i(yiy^i)2iyi2
R2
Kardinal
5
Das ist nicht unbedingt größer. Es ist nur größer ohne einen Abschnitt, solange die MSE der Anpassung in beiden Fällen ähnlich sind. Beachten Sie jedoch, dass, wie @Macro betont hat, der Zähler auch in dem Fall ohne Unterbrechung größer wird, sodass es darauf ankommt, welcher gewinnt! Sie haben Recht, dass sie nicht miteinander verglichen werden sollten, aber Sie wissen auch , dass die SSE mit Intercept immer kleiner ist als die SSE ohne Intercept. Dies ist Teil des Problems bei der Verwendung von In-Sample-Messungen für die Regressionsdiagnose. Was ist Ihr Endziel für den Einsatz dieses Modells? R2
Kardinal

Antworten:

131

Zunächst sollten wir verstehen, was die RSoftware tut, wenn das Modell keinen Intercept enthält. Man erinnere sich, dass die übliche Berechnung von wenn ein Abschnitt vorliegt, Die erste Gleichheit tritt nur aufgrund der Einbeziehung des Abschnitts in das Modell auf , obwohl dies wahrscheinlich die beliebteste der beiden Schreibweisen ist. Die zweite Gleichheit liefert tatsächlich die allgemeinere Interpretation! Dieser Punkt wird auch in dieser verwandten Frage angesprochen .R 2 = Σ i ( y i - ˉ y ) 2R2

R2=i(y^iy¯)2i(yiy¯)2=1i(yiy^i)2i(yiy¯)2.

Aber was passiert, wenn das Modell keinen Achsenabschnitt enthält?

Nun, in diesem Fall verwendet R( stillschweigend! ) Die modifizierte Form

R02=iy^i2iyi2=1i(yiy^i)2iyi2.

Es hilft, sich daran zu erinnern, was zu messen versucht. Im ersten Fall wird Ihr aktuelles Modell mit dem Referenzmodell verglichen , das nur einen Achsenabschnitt (dh einen konstanten Term) enthält. Im zweiten Fall gibt es keinen Intercept, weshalb es wenig sinnvoll ist, ihn mit einem solchen Modell zu vergleichen. Stattdessen wird also berechnet, das implizit ein Referenzmodell verwendet, das nur dem Rauschen entspricht .R 2 0R2R02

Im Folgenden konzentriere ich mich auf den zweiten Ausdruck für und da dieser Ausdruck auf andere Kontexte verallgemeinert wird und es im Allgemeinen natürlicher ist, über Dinge in Form von Residuen nachzudenken.R 2 0R2R02

Aber wie unterscheiden sie sich und wann?

Lassen Sie uns einen kurzen Exkurs in eine lineare Algebra machen und sehen, ob wir herausfinden können, was los ist. Rufen wir zunächst die angepassten Werte aus dem Modell mit intercept und den angepassten Werten auf aus dem Modell ohne Intercept . y^y~

Wir können die Ausdrücke für und als und .R2R02

R2=1yy^22yy¯122,
R02=1yy~22y22,

Nun, da , dann ist genau dann, wenn y22=yy¯122+ny¯2R02>R2

yy~22yy^22<1+y¯21nyy¯122.

Die linke Seite ist größer als eins ist, da das Modell zu entsprechenden innerhalb der von verschachtelt ist . Der zweite Term auf der rechten Seite ist der quadratische Mittelwert der Antworten geteilt durch den mittleren quadratischen Fehler eines reinen Abfangmodells. Je größer der Mittelwert der Reaktion im Verhältnis zu der anderen Variation ist, desto mehr "Durchhang" haben wir und desto größer ist die Wahrscheinlichkeit, dass dominiert .y~y^R02R2

Beachten Sie, dass sich das gesamte modellabhängige Material auf der linken Seite und das nicht modellabhängige Material auf der rechten Seite befindet.

Ok, wie machen wir das Verhältnis auf der linken Seite klein?

erinnern dass und wobei und Projektionsmatrizen sind, die den Teilräumen und so dass .y~=P0yy^=P1yP0P1S0S1S0S1

Damit das Verhältnis nahe eins ist, müssen die Unterräume und sehr ähnlich sein. Jetzt unterscheiden sich und nur darin, ob ein Basisvektor ist oder nicht, was bedeutet, dass besser ein Unterraum ist, der bereits sehr nahe bei .S0S1S0S11S01

Im Wesentlichen bedeutet dies, dass unser Prädiktor selbst einen starken Mittelwert-Offset haben sollte und dass dieser Mittelwert-Offset die Variation des Prädiktors dominieren sollte.

Ein Beispiel

Hier versuchen wir, ein Beispiel mit einem Achsenabschnitt zu generieren, der explizit im Modell enthalten ist und der sich in der fraglichen Situation ähnlich verhält. Unten ist ein einfacher RCode zum Demonstrieren.

set.seed(.Random.seed[1])

n <- 220
a <- 0.5
b <- 0.5
se <- 0.25

# Make sure x has a strong mean offset
x <- rnorm(n)/3 + a
y <- a + b*x + se*rnorm(x)

int.lm   <- lm(y~x)
noint.lm <- lm(y~x+0)  # Intercept be gone!

# For comparison to summary(.) output
rsq.int <- cor(y,x)^2
rsq.noint <- 1-mean((y-noint.lm$fit)^2) / mean(y^2)

Dies ergibt die folgende Ausgabe. Wir beginnen mit dem Modell mit Intercept.

# Include an intercept!
> summary(int.lm)

Call:
lm(formula = y ~ x)

Residuals:
      Min        1Q    Median        3Q       Max
-0.656010 -0.161556 -0.005112  0.178008  0.621790

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.48521    0.02990   16.23   <2e-16 ***
x            0.54239    0.04929   11.00   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2467 on 218 degrees of freedom
Multiple R-squared: 0.3571,     Adjusted R-squared: 0.3541
F-statistic: 121.1 on 1 and 218 DF,  p-value: < 2.2e-16

Dann sehen, was passiert , wenn wir ausschließen den Schnitt.

# No intercept!
> summary(noint.lm)

Call:
lm(formula = y ~ x + 0)

Residuals:
     Min       1Q   Median       3Q      Max
-0.62108 -0.08006  0.16295  0.38258  1.02485

Coefficients:
  Estimate Std. Error t value Pr(>|t|)
x  1.20712    0.04066   29.69   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3658 on 219 degrees of freedom
Multiple R-squared: 0.801,      Adjusted R-squared: 0.8001
F-statistic: 881.5 on 1 and 219 DF,  p-value: < 2.2e-16

Unten sehen Sie eine grafische Darstellung der Daten mit dem Modell mit Schnittpunkt in Rot und dem Modell ohne Schnittpunkt in Blau.

Datendiagramm mit Regressionslinien

Kardinal
quelle
4
Das ist wirklich spektakulär, +1. Eine Frage: Wenn wir über b / t 2 -Modelle entscheiden möchten, führen wir häufig einen Test für verschachtelte Modelle durch, schließt dies aus, dass ein reduziertes Modell ohne Achsenabschnitt mit einem vollständigen Modell ohne Achsenabschnitt getestet werden kann, oder ist es noch gültig ?
gung
5
@gung: Nein, ich glaube nicht, dass uns irgendetwas vom typischen Test abhält . Der Test hängt nicht vom Vorhandensein eines Intercept ab, und in der Tat glaube ich, dass die Statistik in diesem Fall . Dies gibt uns ein paar quantitative Informationen, wenn tatsächlich , dann wissen wir, dass vorausgesetzt natürlich, ich habe die Algebra richtig gemacht. FF
F=(n2)(\y\ytilde22\y\yhat221)
R02>R12
F<(n2)y¯2n1\yy¯\one22,
Kardinal
1
Ich bevorzuge den AusdruckR02=Y~2Y2
Stéphane Laurent
3
@ naught101: Ich würde nicht sagen , es ist mehr wahr, aber es ist eine ebenso vernünftige Sicht, allgemein gesprochen. Für die vorliegende Darstellung ist es zweckmäßig, sie als nicht vorhanden zu betrachten, da wir letztendlich an der Beziehung zwischen den Unterräumen und interessiert sind . Der Unterschied zwischen den beiden ist das Vorhandensein oder Fehlen des Basisvektors . S1S01
Kardinal
1
Ich vermisse etwas. Ist das, was R macht, richtig ? Ich meine, ist der gemeldete R ^ 2-Wert auch aus der Ferne vergleichbar mit und ohne Intercept-Fällen?
Andy Clifton
1

Ich würde meine Entscheidung auf ein Informationskriterium wie das Akaike- oder Bayes-Schwarz-Kriterium stützen und nicht auf R ^ 2. auch dann würde ich diese nicht als absolut ansehen.

Wenn Sie einen Prozess haben, bei dem die Steigung nahe Null ist und alle Daten weit vom Ursprung entfernt sind, sollte Ihr korrektes R ^ 2 niedrig sein, da der größte Teil der Variation der Daten auf Rauschen zurückzuführen ist. Wenn Sie versuchen, solche Daten an ein Modell ohne Intercept anzupassen, wird ein großer und falscher Steigungsbegriff generiert und wahrscheinlich ein besser aussehender R ^ 2, wenn die interceptfreie Version verwendet wird.

Die folgende Grafik zeigt, was in diesen extremen Fällen passiert. Hier ist der Erzeugungsprozess, dass x = 100.100,1, ... und y nur 100 + zufälliges Rauschen mit dem Mittelwert 0 und der Standardabweichung .1 ist. Die Punkte sind schwarze Kreise, die Passung ohne den Schnittpunkt ist die blaue Linie und die Passung mit dem Schnittpunkt (Nullung der Steigung) ist die rote Linie:

[Entschuldigung, ich kann das Diagramm nicht veröffentlichen. Führen Sie den folgenden R-Code aus, um ihn zu generieren. Es zeigt den Ursprung in der unteren linken Ecke, die Punktgruppe in der oberen rechten Ecke. Die schlechte No-Intercept-Anpassung verläuft von links unten nach rechts oben, und die richtige Anpassung ist eine Linie parallel zur x-Achse.]

Das richtige Modell dafür sollte ein R ^ 2 von Null haben - ein konstantes und zufälliges Rauschen. R gibt Ihnen und R ^ 2 von 0,99 für die Anpassung ohne Intercept. Dies spielt keine große Rolle, wenn Sie das Modell nur zur Vorhersage von x-Werten innerhalb des Bereichs der Trainingsdaten verwenden. Es schlägt jedoch kläglich fehl, wenn x außerhalb des engen Bereichs des Trainingssatzes liegt oder Sie versuchen, echte Erkenntnisse zu gewinnen jenseits aller Voraussagen.

Der AIC zeigt korrekt, dass das Modell mit dem Achsenabschnitt bevorzugt wird. Der R-Code hierfür lautet:

 Nsamp=100
x=seq(1,100,1)*.1+100 # x=101.1,101.2,....
y=rnorm(n=length(x))+100 # random noise +100 (best model is constant)

model_withint=lm(y~x)
print(summary(model_withint))
flush.console()
model_noint=lm(y~x+0) 
print(summary(model_noint))
print (AIC(model_withint))
print(sprintf ('without intercept  AIC=%f',AIC(model_noint)))
print(sprintf ('with intercept  AIC=%f',AIC(model_withint)))
print(sprintf ('constant model  AIC=%f',AIC(lm(y~1))))
plot(x,y,ylim=c(0,105),xlim=c(0,105))
lines( c(0,105),c(0,105)*model_noint$coefficients['x'],col=c('blue'))
lines( c(0,105),c(1,1)*(lm(y~1)$coefficients['(Intercept)']),col=c('red'))

Der AIC-Ausgang ist

   "without intercept  AIC=513.549626"
    "with intercept  AIC=288.112573"
    "constant model  AIC=289.411682"

Beachten Sie, dass der AIC in diesem Fall immer noch das falsche Modell erhält, da das wahre Modell das konstante Modell ist. Andere Zufallszahlen liefern jedoch Daten, für die der AIC für das konstante Modell am niedrigsten ist. Beachten Sie, dass Sie, wenn Sie die Steigung verwerfen, das Modell ohne sie wieder einbauen sollten, nicht versuchen sollten, den Schnittpunkt aus dem Modell zu verwenden und die Steigung zu ignorieren.

Jonathan Harris
quelle