我正在运行线性回归模型,并想知道删除拦截项的条件是什么。
在比较两个不同回归的结果时,其中一个具有截距,另一个没有截距,我注意到没有截距的函数的高得多。我应该遵循某些条件或假设以确保删除拦截项有效吗?
我正在运行线性回归模型,并想知道删除拦截项的条件是什么。
在比较两个不同回归的结果时,其中一个具有截距,另一个没有截距,我注意到没有截距的函数的高得多。我应该遵循某些条件或假设以确保删除拦截项有效吗?
Answers:
在最短的回答:从来没有,除非你确信你的数据生成过程(线性回归模型),或者通过一些理论或其他任何原因的线性近似被强制穿过原点。如果不是这样,即使截距在统计上不重要,其他回归参数也会有偏差(奇怪,但确实如此,例如,请参阅Brooks Introductory Econometrics)。最后,正如我经常向学生解释的那样,通过保留拦截项,您可以确保剩余项为零均值。
对于您的两个模型,我们需要更多的上下文。线性模型可能不适用于此处。例如,如果模型是可乘的,则需要先进行对数转换。具有指数增长的过程,偶尔会发生没有截距的模型的更高“很多”的情况。
筛选数据,使用RESET测试或任何其他线性规格测试来测试模型,这可能有助于了解我的猜测是否正确。而且,建立模型的最高是我真正关心的最后一个统计属性之一,但是很高兴向不熟悉计量经济学的人们展示这些模型(有很多肮脏的技巧可以使确定接近1 :))。
删除拦截器是另一种模式,但是有很多示例是合法的。到目前为止,答案已经详细讨论了真实截距为0的示例。我将重点关注一些可能对非典型模型参数化感兴趣的示例。
示例1:方差分析样式模型。对于分类变量,我们通常创建对组成员资格进行编码的二进制向量。将标准回归模型参数化为intercept + k-1个伪向量。截距编码“参考”组的期望值或省略的矢量,其余矢量测试每个组与参考之间的差异。但是在某些情况下,具有每个组的期望值可能会很有用。
dat <- mtcars
dat$vs <- factor(dat$vs)
## intercept model: vs coefficient becomes difference
lm(mpg ~ vs + hp, data = dat)
Coefficients:
(Intercept) vs1 hp
26.96300 2.57622 -0.05453
## no intercept: two vs coefficients, conditional expectations for both groups
lm(mpg ~ 0 + vs + hp, data = dat)
Coefficients:
vs0 vs1 hp
26.96300 29.53922 -0.05453
示例2:标准化数据的情况。在某些情况下,可能正在使用标准化数据。在这种情况下,截距设计为0。我认为经典的例子是老式的结构方程模型或因子,它仅对数据的协方差矩阵起作用。在下面的例子中,如果只是降低额外的自由度(您确实应该因为估计均值而损失了该自由度),则无论如何都要估计截距可能是一个好主意,但是在少数情况下在结构上,均值可以为0(例如,某些实验中,参与者分配了评分,但被约束为给出相等的肯定和否定)。
dat <- as.data.frame(scale(mtcars))
## intercept is 0 by design
lm(mpg ~ hp + wt, data = dat)
Coefficients:
(Intercept) hp wt
3.813e-17 -3.615e-01 -6.296e-01
## leaving the intercept out
lm(mpg ~ 0 + hp + wt, data = dat)
Coefficients:
hp wt
-0.3615 -0.6296
示例3:多元模型和隐藏拦截。该示例在许多方面与第一个示例相似。在这种情况下,数据已堆叠,因此两个不同的变量现在位于一个长向量中。第二个变量编码有关响应向量y
属于mpg
还是的信息disp
。在这种情况下,要获得每个结果的单独截距,您可以抑制总体截距并包括两个虚拟矢量进行测量。这是一种多变量分析。通常不使用lm()
因为您已经采取了多次措施,因此可能应该考虑到无能为力。但是,在一些有趣的情况下有必要这样做。例如,当尝试使用随机效应进行中介分析时,要获得完整的方差协方差矩阵,您需要同时估计两个模型,这可以通过堆叠数据和巧妙使用虚拟向量来完成。
## stack data for multivariate analysis
dat <- reshape(mtcars, varying = c(1, 3), v.names = "y",
timevar = "measure", times = c("mpg", "disp"), direction = "long")
dat$measure <- factor(dat$measure)
## two regressions with intercepts only
lm(cbind(mpg, disp) ~ 1, data = mtcars)
Coefficients:
mpg disp
(Intercept) 20.09 230.72
## using the stacked data, measure is difference between outcome means
lm(y ~ measure, data = dat)
Coefficients:
(Intercept) measurempg
230.7 -210.6
## separate 'intercept' for each outcome
lm(y ~ 0 + measure, data = dat)
Coefficients:
measuredisp measurempg
230.72 20.09
我并不是在说通常应该删除拦截器,但是保持灵活性是一件好事。
这里有很好的答案。两件小事:
好,所以您已将问题全部更改了
当您知道截距为0时,可以省去截距。就是这样。不,您不能这样做,因为它与0并无显着差异,您必须知道它为0或残差有偏差。而且,在这种情况下,它为0,所以如果您将其省略,则不会有任何区别...因此,切勿将其遗漏。
您对的发现表明数据不是线性的。并且,考虑到您将面积作为预测变量,则特定变量肯定绝对不是线性的。您可以转换预测变量以解决该问题。
大多数多元回归模型都包含一个常数项(即截距),因为这可以确保模型是无偏的,即残差的均值将恰好为零。(回归模型中的系数通过最小二乘估计,即最小化均方误差。现在,均方误差等于误差的方差加上均方的平方:这是一个数学恒等式。模型中的常数值会改变误差的平均值,但不会影响方差,因此,如果要使误差平方和最小化,则必须选择常数,以使误差的平均值为零。 )
在简单的回归模型中,常数以非标准形式表示回归线的Y轴截距。在多元回归模型中,该常数表示如果所有自变量同时等于零,则该因变量可以预测的值-这种情况可能在物理上或经济上都不有意义。如果您对所有自变量同时为零会发生什么不特别感兴趣,则通常将常量保留在模型中,无论其统计意义如何。除了确保样本内误差无偏外,常量的存在还允许回归线“寻找自己的水平”,并提供对仅局部线性的数据的最佳拟合。
但是,在极少数情况下,您可能希望从模型中排除常数。这是任何软件包中回归过程中的模型拟合选项,有时被称为通过原点回归,或简称为RTO。通常,只有在以下情况下才能这样做:
情况(1)的示例是一个模型,其中所有相关变量和独立变量都代表其他时间序列的第一个差异。如果要在X的第一个差异上回归Y的第一个差异,则可以直接预测Y的变化,作为X的变化的线性函数,而无需参考变量的当前水平。在这种情况下,合理的(尽管不是必需的)假设平均而言,每当X不变时,Y便应该保持不变,即,在X不变的情况下,Y不应有上升或下降的趋势。 X级。
情况(2)的示例是您希望使用全套季节性指标变量的情况-例如,您使用的是季度数据,并且希望包括代表加性的变量Q1,Q2,Q3和Q4季节性影响。因此,Q1看起来像1 0 0 0 1 0 0 0 ...,Q2看起来像0 1 0 0 0 1 0 0 ...,依此类推。由于Q1 + Q2 + Q3 + Q4 = 1 1 1 1 1 1 1 1,因此无法在同一模型中同时使用所有这四个和一个常数。。。。,与常数项相同。即,五个变量Q1,Q2,Q3,Q4和CONSTANT不是线性独立的:它们中的任何一个都可以表示为其他四个变量的线性组合。拟合线性回归模型的技术先决条件是自变量必须是线性独立的。否则,最小二乘系数无法唯一确定,
一个警告:R-平方和F统计量在RTO模型中的含义与在普通回归模型中的含义不同,并且并非所有软件都以相同的方式计算它们。请参阅本文以了解一些注意事项。尽管可以比较回归的标准误差,但是您不应该尝试比较包含和不包含常数项的模型之间的R平方。
请注意,术语“独立”在回归术语中至少(以)三种不同的方式使用:如果将单个变量用作预测变量而不是被预测变量,则可以将其称为独立变量。如果没有一个变量可以精确地表示为其他变量的线性组合,则它们是线性独立的。如果一对变量不仅线性独立,而且彼此之间完全没有信息,则可以说它们在统计上是独立的。在回归模型中,您希望因变量在统计上依赖于自变量,自变量之间必须线性(但不一定在统计上)独立。
我只是花了一些时间回答其他人发布的类似问题,但是已经关闭。这里有一些很好的答案,但是我提供的答案要简单一些。它可能更适合对回归了解较弱的人。
在回归模型中,目标是最大程度地减少结果变量中无法解释的方差:
y = b0 +b1⋅x+ ϵ
其中y是结果度量的预测值(例如log_blood_hg),b0是截距,b1是斜率,x是预测变量,而ϵ是残差。
截距(b0)是所有x = 0时y的预测平均值。换句话说,它是y的基线值,在您使用任何变量(例如,种类)进一步最小化或解释log_blood_hg中的方差之前。
通过添加一个斜率(它估计log_blood_hg的单位增加/减少如何随着x的单位增加(例如物种)而变化),我们在已经知道的结果变量上加上了它的基线值(即拦截),基于另一个变量的变化。
对于像这样的简单模型,绝对不适合丢弃截距。
当您删除截距时,这些模型会得出不同的结果,这是因为不是将斜率接地到Y的基线值,而是迫使其通过y的原点(即0)。因此,该斜率变得更陡峭(即,功率更大且有效) ),因为您已将线强制穿过原点,而不是因为这样做可以更好地将y的方差最小化。换句话说,您是人为地创建了一个模型,该模型通过删除截距或模型的初始接地点来最小化y中的方差。
在某些情况下,删除截距是适当的-例如,当描述带有0截距的现象时。您可以在此处了解有关信息,以及删除拦截器不是一个好主意的更多原因。
简短的回答:(几乎)永远不会。在线性回归模型
,如果设置,则说您知道在给定情况下的期望值为零。您几乎永远都不知道。
变得更高而没有截距,这不是因为模型更好,而是因为所使用的的定义是另一个定义!是估计模型与某些标准模型的比较的表示,表示为与标准模型的平方和相比,平方和的减少。在具有截距的模型中,比较平方和在均值附近。没有截距,它大约为零!最后一个通常更高,因此更容易大幅度减少平方和。
结论:不要将截取模型留在模型之外(除非您真的非常知道自己在做什么)。
某些例外情况:一个例外情况是一种回归,该回归表示一种针对所有因子水平的虚拟变量的单向方差分析(通常不包括在内)(但这似乎只是一个例外,常数矢量1位于模型矩阵的列空间中))否则,例如没有常数的物理关系。但是即使这样,如果模型只是近似的(速度不是真正恒定的),即使不能解释也可以保留一个恒定的更好。
还有一些特殊的模型可以忽略拦截。一个例子是配对数据,双胞胎研究。