去除统计学上显着的截距项会增加线性模型中的


101

在具有单个解释变量的简单线性模型中,

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

我发现删除截距项可以大大提高拟合度(值从0.3变为0.9)。但是,截距项似乎具有统计意义。R2

带拦截:

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

没有拦截:

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

您将如何解释这些结果?是否应在模型中包含拦截项?

编辑

这是平方的残差和:

RSS(with intercept) = 12.92305
RSS(without intercept) = 17.69277

14
我记得仅是在包含截距的情况下为解释方差与总方差之比。否则,将无法导出它并失去其解释。R2
Momo 2012年

@Momo:好点。我已经计算了每个模型的残差平方和,这似乎表明无论怎么说,带有截距项的模型都更适合。R2
欧内斯特

4
好吧,当您包含其他参数时,RSS必须下降(或至少不上升)。更重要的是,在抑制截距时,线性模型中的许多标准推论都不适用(即使统计意义不大)。
2012年

14
什么当没有截距的作用是,它计算代替(通知,在没有平均的减法分母项)。这使得分母更大,对于相同或相似的MSE,分母会导致增加。[R 2 = 1 - Σ ÿ - Ÿ2R R2
R2=1i(yiy^i)2iyi2
R2
主教

5
R2并不一定大。只要两种情况下拟合度的MSE相似,它就更大而没有截距。但是,请注意,正如@Macro所指出的,在没有截距的情况下,分子会变大,因此它取决于哪一个获胜!您是正确的,不应将它们相互比较,但您知道具有拦截功能的SSE 总是比没有拦截功能的SSE小。这是使用样本内度量进行回归诊断的问题的一部分。使用此模型的最终目标是什么?
红衣主教2012年

Answers:


131

RR2

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

但是,如果模型中没有截距怎么办?

R

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

R2R02

R2R02

但是,它们又有什么不同?何时?

y^y~

R2R02

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

现在,由于,则当且仅当 y22=yy¯122+ny¯2R02>R2

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

左手侧比之一,因为对应于模型更大嵌套内的。右边的第二项是响应的均方值除以仅截取模型的均方误差。因此,相对于其他变化,响应的平均值越大,我们拥有的“松弛”就越多,支配可能性就。y~y^R02R2

请注意,所有与模型相关的东西都在左侧,而与模型无关的东西都在右侧。

好的,我们如何减小左侧的比例?

回想 和,其中和是对应于子空间和投影矩阵,因此。y~=P0yy^=P1yP0P1S0S1S0S1

因此,为了使比率接近于1,我们需要子空间 和非常相似。现在和区别仅在于是否是基向量,因此这意味着 最好是已经非常接近的子空间。S 1 S 0 S 1 1 S 0 1S0S1S0S11S01

从本质上讲,这意味着我们的预测变量最好具有较强的平均偏移量,并且该平均偏移量应主导预测变量的变化。

一个例子

在这里,我们尝试生成一个在模型中显式具有截距的示例,其行为与问题中的情况相近。下面是一些简单的R代码来演示。

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)

这给出以下输出。我们开始与模型拦截。

# 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

然后,看看当我们排除截距时会发生什么。

# 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

下面是数据的图,其中拦截模型为红色,拦截模型为蓝色。

带有回归线的数据图


4
这真的很壮观,+ 1。一个问题:通常当我们要裁定b / t 2模型时,我们执行嵌套模型测试,是否排除了这种情况,或者对不带完整模型的截距进行测试的简化模型仍然有效? ?
gung

5
@gung:不,我不认为有什么东西可以将我们排除在典型的检验之外。该测试不依赖于截距的存在,确实,我相信在这种情况下统计量将得出。这给了我们一些定量信息,如果确实是,那么我们知道当然,假设我正确地完成了代数。˚F ˚F = ñ - 2 - \ ytilde 2 2FF - [R 2 0 >- [R 2 1 ˚F<ñ-2 ˉ ÿ 2
F=(n2)(\y\ytilde22\y\yhat221)
R02>R12
F<(n2)y¯2n1\yy¯\one22,
红衣主教

1
R02=Y~2Y2

3
S1S01

1
我想念一些东西。R是正确的吗?我的意思是报告的R ^ 2值在有无拦截情况下甚至可以远程比较吗?
安迪·克利夫顿

1

我的决定基于诸如Akaike或Bayes-Schwarz标准之类的信息标准,而不是R ^ 2。即使那样,我也不认为这些是绝对的。

如果您有一个斜率接近零且所有数据都远离原点的过程,则您的正确R ^ 2应该较低,因为数据中的大部分变化将归因于噪声。如果您尝试在没有截距的情况下将此类数据拟合到模型中,则将生成一个大而错误的斜率项,如果使用无截距版本,则可能会生成更好的R ^ 2。

下图显示了在这种极端情况下发生的情况。在这里,生成过程是x = 100,100.1,....并且y只是100 +均值0和标准偏差1.的随机噪声。点是黑色圆圈,没有截距的拟合是蓝线,有截距的拟合(将斜率清零)是红线:

[对不起,我不允许发布图表;运行下面的R代码以生成它。它在左下角显示原点,在右上角显示点簇。不良的非截距拟合从左下角到右上角,正确的拟合是与x轴平行的线]

为此,正确的模型的R ^ 2应该为零-是常数加上随机噪声。R将为您提供.99的R ^ 2,且不会有截距。如果仅将模型用于训练数据范围内的x值进行预测,这并没有多大关系,但是如果x超出训练集的狭窄范围,或者您试图获得真实的见解,将导致惨败不仅仅是预测。

AIC正确显示具有截距的模型是首选。R代码是:

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

AIC输出为

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

注意,在这种情况下,AIC仍然会得到错误的模型,因为真正的模型是常数模型。但是其他随机数将得出常数模型的AIC最低的数据。请注意,如果放弃斜率,则应在没有斜率的情况下重新拟合模型,而不要尝试使用模型的截距并忽略斜率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.