R - 线性回归 - 相互作用和 poly() 的解释

R - linear regression - interpretation of interaction and poly()

我是 R 的完全初学者,我需要对某些数据集执行回归。我的问题是,我不确定如何将模型重写为数学公式。

最令人困惑的是 interactionspoly 函数。

它们可以像乘积和多项式那样理解吗?


例子

让我们有以下模型,ab 都是数字向量:

y ~ poly(a, 2):b

数学上可以这样改写吗?

y = a*b + a^2 * b

示例 2

当我从 fit 得到以下表达式时 summary

poly(a, 2)2:b

是否等于下面的公式?

a^2 * b

你的问题有两个方面:

  • poly 做什么;
  • : 是做什么的。

关于第一个问题,请参考我的回答以获得poly的完整解释。请注意,对于大多数用户来说,知道它生成一个 degree 数字或列的设计矩阵就足够了,每个列都是一个基函数。

: 不是苦难。在 b 也是数字的情况下,poly(a, 2):b 将 return

Xa <- poly(a, 2)     # a matrix of two columns
X <- Xa * b    # row scaling to Xa by b

所以你猜的题是正确的。但请注意 poly 为您提供正交多项式基,因此它与 I(a)I(a^2) 不同。调用poly时可以设置raw = TRUE得到普通多项式基

Xa 有列名。 poly(a,2)2 仅表示 Xa.

的第 2 列

请注意,当 b 是一个因素时,将有一个设计矩阵,例如 Xb,用于 b。显然这是一个 0-1 二进制矩阵,因为因子变量被编码为虚拟变量。然后 poly(a,2):b 形成 XaXb 之间的逐行 Kronecker 积。这听起来很棘手,但本质上只是两个矩阵的所有列之间的成对乘法。因此,如果 Xaka 列并且 Xbkb 列,则生成的矩阵有 ka * kb 列。这样的混合称为'interaction'.

生成的矩阵也有列名。例如,poly(a, 2)2:b3 表示 Xa 的第 2 列与 Xb 中的虚拟列的乘积,用于 b 的第三级。我不是说 'the 3rd column of Xb' 因为如果对比 b 这是错误的。通常会对比一个因素,因此如果 b 有 5 个水平,Xb 将有 4 列。如果第一个因子水平是参考水平(因此未出现在 Xb 中),则第三水平的虚拟列将是 Xb 的第二列。