R中的因子线性回归

机器算法验证 r 回归 相互作用
2022-03-05 12:25:51

我试图了解因子在 R 中的确切工作原理。假设我想使用 R 中的一些样本数据进行回归:

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

我理解这一点TypeMississippi并被Treatmentchilled视为布尔值:对于每一行,初始摄取量为,如果它是密西西比类型并且是否被冷藏36.97,我们减去它。我无法理解这样的事情:12.666.86

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

两个因数相乘是什么意思lm

3个回答

要详细说明@John 的答案:在 R 的公式中,您可以将一些运算符应用于这些术语:“+”只是添加它们,“:”表示您添加一个术语(或多个术语)来指代它们的交互(见下文),“*”表示两者,即:添加“主效应”,并添加交互项。

那么这种互动意味着什么呢?好吧,在连续变量的情况下,它确实是一个添加的项,它只是两个变量的倍数。如果您将身高和体重作为预测变量并out ~ height * weight用作公式,则线性模型将因此包含三个“变量”,即体重、身高及其乘积(它还包含交互作用,但在这里不太感兴趣)。

尽管我在上面提出了其他建议:这对分类变量的工作方式完全相同,但现在“产品”适用于每个分类变量的(一组)虚拟变量。假设您的身高和体重现在是分类的,每一个都包含三个类别(S(mall)、M(edium) 和 L(arge))。然后在线性模型中,它们中的每一个都由一组两个虚拟变量表示,它们是 0 或 1(还有其他编码方式,但这是 R 中的默认值,也是最常用的)。假设我们使用 S 作为两者的参考类别,那么我们每次都有两个假人 height.M 和 height.L(重量也类似)。

所以现在,模型out ~ height * weight现在包含 4 个假人 + 所有假人组合的所有产品(我没有在这里明确地写出系数,它们是隐含的):

    (intercept) + height.M + height.L + weight.M + weight.L + 
      height.M * weight.M + height.L * weight.M + height.M * 
      weight.L + height.L * weight.L.

在上面的行中,'*' 现在再次指代一个简单的产品,但这次是假人,所以每个产品本身也是 1(当所有因素为 1 时)或 0(当至少有一个因素不是时)。

在这种情况下,这 8 个“变量”在两个变量的所有组合中实现了不同的(平均)结果:体重过大的影响现在对小人来说不再相同(对他们来说,效果只是由术语 形成weight.L)为对于大人(这里,效果是weight.L + height.L * weight.L

为了跟进约翰的回答,lm 中的公式不使用算术符号,它们使用紧凑的符号符号来描述线性模型(特别是 Wilkinson-Rogers 符号,这里有一个很好的简短摘要https://www.mathworks .com/help/stats/wilkinson-notation.html)。

基本上,在模型公式中包含 A*B 意味着您正在拟合 A、B 和 A:B(A 和 B 的交互作用)。如果交互作用项在统计上显着,则表明每种类型的处理效果不同。

也许在帮助中查找“公式”会有所帮助。您不是在增加,您是在说您想要两个主要效果以及它们的相互作用。