了解具有分类值的多元线性回归中的截距值

机器算法验证 r 回归 分类数据 截距
2022-03-16 09:58:56

我无法理解具有分类值的多元线性回归中截距值的值。以“warpbreaks”数据集为例,当我这样做时:

> lm(breaks ~ wool, data=warpbreaks)

Call:
lm(formula = breaks ~ wool, data = warpbreaks)

Coefficients:
(Intercept)        woolB
     31.037       -5.778

我能够理解,当羊毛等于“A”时,截距的值是断裂的平均值,并且将“woolB”系数与截距值相加,我得到羊毛等于“B”时的断裂平均值. 但是,如果我还考虑模型中的张力变量,我无法弄清楚截距值的含义:

> lm(breaks ~ wool + tension, data=warpbreaks)

Call:
lm(formula = breaks ~ wool + tension, data = warpbreaks)

Coefficients:
(Intercept)        woolB     tensionM     tensionH
     39.278       -5.778      -10.000      -14.722

我认为当羊毛等于“A”或张力等于“L”时,这将是断裂的平均值,但对于这个数据集来说,情况并非如此。

关于解释拦截值的任何线索?

1个回答

与直觉相反,这不是breakswhenwool=="A"的平均值tension=="L"

data(warpbreaks)
aggregate(breaks ~ wool + tension, warpbreaks, mean)
#   wool tension   breaks
# 1    A       L 44.55556
# 2    B       L 28.22222
# 3    A       M 24.00000
# 4    B       M 28.77778
# 5    A       H 24.55556
# 6    B       H 18.77778

正如@Macro 在他的评论中解释的那样,这在很大程度上取决于您适合的模型。如果您拟合完整模型(带有交互项),您将得到以下结果:

lm(breaks ~ wool * tension, data=warpbreaks)
#
# Call:
# lm(formula = breaks ~ wool * tension, data = warpbreaks)
# 
# Coefficients:
#    (Intercept)           woolB        tensionM        tensionH woolB:tensionM
#          44.56          -16.33          -20.56          -20.00           21.11
# woolB:tensionH  
#          10.56

现在截距是breakswhenwool=="A"和的平均值tension=="L"

这是因为在完整模型中,每个案例有一个参数(您可以检查总共 6 个参数),而在加法模型中,参数少于案例(总共 4 个参数)。

即使截距不是平均值,请注意when和 when的平均值之间的差异等于参数breakswool=="B"wool=="A"woolB

aggregate(breaks ~ wool, data=warpbreaks, mean)
#   wool   breaks
# 1    A 31.03704
# 2    B 25.25926
25.25926 - 31.03704
# [1] -5.77778

同样,您可以检查同样适用于tension.

aggregate(breaks ~ tension, data=warpbreaks, mean)
#   tension   breaks
# 1       L 36.38889
# 2       M 26.38889
# 3       H 21.66667
26.38889 - 36.38889
# [1] -10
21.66667 - 36.38889
# [1] -14.72222

总之,当您拟合加性模型(无交互项)时,参数是每个类别(只有一个因子)的平均值之差,截距是每个因子的第一个模态的响应变量的估计值可加性的假设

如果加性不成立,这个估计可能不合理。您可以通过测试交互项的无效性来了解这个假设是否合理。

anova(lm(breaks ~ wool*tension, data=warpbreaks))
# Analysis of Variance Table
# 
# Response: breaks
#              Df Sum Sq Mean Sq F value    Pr(>F)
# wool          1  450.7  450.67  3.7653 0.0582130 .
# tension       2 2034.3 1017.13  8.4980 0.0006926 ***
# wool:tension  2 1002.8  501.39  4.1891 0.0210442 *
# Residuals    48 5745.1  119.69
# ---
# Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

如您所见,检验的 p 值为 0.021,这意味着交互项可能无法忽略,加性模型的截距估计可能没有意义。