L'élimination du terme d'interception statistiquement significatif augmente dans le modèle linéaire

101

Dans un modèle linéaire simple avec une seule variable explicative,

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

Je trouve que la suppression du terme d'interception améliore grandement l'ajustement (la valeur de va de 0,3 à 0,9). Cependant, le terme d'interception semble être statistiquement significatif.R2

Avec interception:

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

Sans interception:

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

Comment interpréteriez-vous ces résultats? Un terme d'interception doit-il être inclus dans le modèle ou non?

Modifier

Voici les sommes résiduelles de carrés:

RSS(with intercept) = 12.92305
RSS(without intercept) = 17.69277
Ernest A
la source
14
Je rappelle que est le rapport de la variance expliquée à la variance totale UNIQUEMENT si l'interception est incluse. Sinon, il ne peut pas être dérivé et perd son interprétation. R2
Momo
@Momo: Bon point. J'ai calculé les sommes des carrés résiduels pour chaque modèle, ce qui semble suggérer que le modèle avec terme d'interception est mieux ajusté indépendamment de ce que dit . R2
Ernest A
4
Eh bien, le RSS doit baisser (ou du moins ne pas augmenter) lorsque vous incluez un paramètre supplémentaire. Plus important encore, une grande partie de l'inférence standard dans les modèles linéaires ne s'applique pas lorsque vous supprimez l'interception (même si elle n'est pas statistiquement significative).
Macro
14
Que fait quand il n'y a pas d'interception, c'est qu'il calcule place (remarque, aucune soustraction de la moyenne dans les termes du dénominateur). Cela rend le dénominateur plus grand qui, pour une MSE identique ou similaire, entraîne une augmentation de . R 2 = 1 - Σ i ( y i - y i ) 2R R2
R2=1i(yiy^i)2iyi2
R2
cardinal
5
Le n'est pas nécessairement plus grand. Il est seulement plus grand sans interception tant que le MSE de l'ajustement est similaire dans les deux cas. Mais notez que, comme @Macro l’a souligné, le numérateur s’agrandit également dans l’affaire sans interception et dépend donc du vainqueur! Vous avez raison de dire qu'ils ne doivent pas être comparés les uns aux autres, mais vous savez également que l'ESS avec intercept sera toujours plus petit que l'ESS sans intercept. Cela fait partie du problème lié à l'utilisation de mesures dans l'échantillon pour les diagnostics de régression. Quel est votre objectif final pour l'utilisation de ce modèle? R2
cardinal

Réponses:

131

Tout d'abord, nous devons comprendre ce que fait le Rlogiciel lorsqu'aucune interception n'est incluse dans le modèle. Rappelons que le calcul habituel de quand une interception est présente est La première égalité n’est due qu’à l’inclusion de l’interception dans le modèle alors que c’est probablement la plus populaire des deux manières de l’écrire. La deuxième égalité fournit en fait l'interprétation plus générale! Ce point est également abordé dans cette question connexe .R 2 = Σ i ( y i - ˉ y ) 2R2

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

Mais que se passe-t-il s'il n'y a pas d'interception dans le modèle?

Eh bien, dans ce cas, R( silencieusement! ) Utilise la forme modifiée

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

Il est utile de rappeler ce que essaie de mesurer. Dans le premier cas, il compare votre modèle actuel au modèle de référence qui inclut uniquement une interception (c.-à-d. Un terme constant). Dans le second cas, il n'y a pas d'interception, il est donc peu logique de le comparer à un tel modèle. Ainsi, à la place, est calculé, ce qui utilise implicitement un modèle de référence correspondant au bruit uniquement .R 2 0R2R02

Dans ce qui suit, je me concentre sur la deuxième expression pour et car cette expression se généralise à d'autres contextes et il est généralement plus naturel de penser aux choses en termes de résidus.R 2 0R2R02

Mais comment sont-ils différents et quand?

Faisons une brève digression dans une algèbre linéaire et voyons si nous pouvons comprendre ce qui se passe. Premièrement, appelons les valeurs ajustées du modèle avec intercept et les valeurs ajustées du modèle sans interception . y^y~

Nous pouvons réécrire les expressions pour et sous la forme et respectivement.R2R02

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

Maintenant, puisque , alors si et seulement si y22=yy¯122+ny¯2R02>R2

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

Le côté gauche est supérieur à un puisque le modèle correspondant à est imbriqué dans celui de . Le deuxième terme à droite est la moyenne quadratique des réponses divisée par l'erreur quadratique moyenne d'un modèle avec interception uniquement. Ainsi, plus la moyenne de la réponse est grande par rapport à l’autre variation, plus nous avons de "jeu" et plus nous avons de chances de voir dominer .y~y^R02R2

Notez que tout le matériel dépendant du modèle est à gauche et que le matériel non dépendant du modèle est à droite.

Ok, alors comment rend-on le ratio du côté gauche petit?

Rappelons que et où et sont des matrices de projection correspondant aux sous-espaces et tels que .y~=P0yy^=P1yP0P1S0S1S0S1

Donc, pour que le rapport soit proche de un, il faut que les sous-espaces et soient très similaires. Maintenant, et ne diffèrent que par le fait que soit un vecteur de base ou non, cela signifie donc que doit être un sous-espace déjà très proche de .S0S1S0S11S01

En substance, cela signifie que notre prédicteur aurait mieux intérêt à avoir un fort décalage moyen lui-même et que ce décalage moyen devrait dominer la variation du prédicteur.

Un exemple

Ici, nous essayons de générer un exemple avec une interception explicitement dans le modèle et qui se comporte de manière similaire au cas de la question. Vous trouverez ci-dessous un Rcode simple à démontrer.

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)

Cela donne la sortie suivante. Nous commençons par le modèle avec 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

Ensuite, voyez ce qui se passe lorsque nous excluons l’interception.

# 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

Vous trouverez ci-dessous un graphique des données avec le modèle avec interception en rouge et le modèle sans interception en bleu.

Tracé de données avec lignes de régression

cardinal
la source
4
C'est vraiment spectaculaire, +1. Une question: souvent, lorsque nous voulons juger des modèles b / t 2, nous effectuons un test de modèle imbriqué, est-ce que cela exclut ou serait-il toujours valide de tester un modèle réduit sans interception par rapport à un modèle complet? ?
Gay - Rétablir Monica
5
@gung: Non, je ne crois pas que rien ne nous empêche du test typique . Le test ne dépend pas de la présence d'une conversation interceptée et, en effet, je crois que le statistique va dans ce cas être . Cela nous donne un peu d'informations quantitatives en ce sens que, si , nous savons que supposant, bien sûr, que j'ai bien fait l'algèbre. FF
F=(n2)(\y\ytilde22\y\yhat221)
R02>R12
F<(n2)y¯2n1\yy¯\one22,
cardinal
1
Je préfère l'expressionR02=Y~2Y2
Stéphane Laurent le
3
@ naught101: Je ne dirais pas que c'est plus vrai, mais c'est un point de vue tout aussi raisonnable, en général. Pour le présent exposé, il convient de le considérer comme absent, dans la mesure où nous nous intéressons en définitive à la relation entre les sous-espaces et . La différence entre les deux est la présence ou l'absence de celle-ci du vecteur de base . S1S01
cardinal
1
Il me manque quelque chose. Est-ce que R fait, correct ? Je veux dire, la valeur de R ^ 2 rapportée est-elle même comparable à distance entre les cas avec et sans interception?
Andy Clifton
1

Je baserais ma décision sur des critères d’information tels que les critères d’Akaike ou de Bayes-Schwarz plutôt que sur R 2; même dans ce cas, je ne les considérerais pas comme absolus.

Si vous avez un processus où la pente est proche de zéro et que toutes les données sont loin de l'origine, votre R ^ 2 correct doit être faible, car la majeure partie de la variation dans les données sera due au bruit. Si vous essayez d'ajuster de telles données à un modèle sans interception, vous générerez un terme de pente large et incorrect et probablement un R ^ 2 plus esthétique si la version sans interception est utilisée.

Le graphique suivant montre ce qui se passe dans ces cas extrêmes. Dans ce cas, le processus de génération est le suivant: x = 100,100,1, .... et y n’est que 100 + bruit aléatoire avec une moyenne de 0 et un écart type .1. Les points sont des cercles noirs, l'ajustement sans l'interception est la ligne bleue et l'ajustement avec l'interception (la mise à zéro de la pente) est la ligne rouge:

[Désolé, cela ne me permettra pas de poster le graphique; Exécutez le code R ci-dessous pour le générer. Il montre l'origine dans le coin inférieur gauche, la grappe de points dans le coin supérieur droit. Le mauvais ajustement sans interception va du coin inférieur gauche au coin supérieur droit et l'ajustement correct est une ligne parallèle à l'axe des x.]

Le modèle correct pour cela devrait avoir un R ^ 2 de zéro - être un bruit constant plus aléatoire. R vous donnera, à vous et à R ^ 2, 99 pour l'ajustement, sans interception. Cela n'aura pas beaucoup d'importance si vous utilisez uniquement le modèle pour la prédiction avec des valeurs x comprises dans la plage des données d'apprentissage, mais échouera lamentablement si x sort de la plage étroite de l'ensemble d'apprentissage ou si vous essayez d'obtenir de véritables informations. au-delà de la simple prédiction.

L'AIC montre correctement que le modèle avec l'interception est préféré. Le code R pour cela est:

 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'))

La sortie AIC est

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

Notez que l'AIC obtient toujours le mauvais modèle dans ce cas, car le véritable modèle est le modèle constant; mais d'autres nombres aléatoires produiront des données pour lesquelles l'AIC est la plus basse pour le modèle constant. Notez que si vous supprimez la pente, vous devez réajuster le modèle sans cette dernière, n'essayez pas d'utiliser l'interception du modèle et d'ignorer la pente.

Jonathan Harris
la source