R - 线性回归 - 相互作用和 poly() 的解释
R - linear regression - interpretation of interaction and poly()
我是 R 的完全初学者,我需要对某些数据集执行回归。我的问题是,我不确定如何将模型重写为数学公式。
最令人困惑的是 interactions
和 poly 函数。
它们可以像乘积和多项式那样理解吗?
例子
让我们有以下模型,a
和 b
都是数字向量:
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
形成 Xa
和 Xb
之间的逐行 Kronecker 积。这听起来很棘手,但本质上只是两个矩阵的所有列之间的成对乘法。因此,如果 Xa
有 ka
列并且 Xb
有 kb
列,则生成的矩阵有 ka * kb
列。这样的混合称为'interaction'.
生成的矩阵也有列名。例如,poly(a, 2)2:b3
表示 Xa
的第 2 列与 Xb
中的虚拟列的乘积,用于 b
的第三级。我不是说 'the 3rd column of Xb' 因为如果对比 b
这是错误的。通常会对比一个因素,因此如果 b
有 5 个水平,Xb
将有 4 列。如果第一个因子水平是参考水平(因此未出现在 Xb
中),则第三水平的虚拟列将是 Xb
的第二列。
我是 R 的完全初学者,我需要对某些数据集执行回归。我的问题是,我不确定如何将模型重写为数学公式。
最令人困惑的是 interactions
和 poly 函数。
它们可以像乘积和多项式那样理解吗?
例子
让我们有以下模型,a
和 b
都是数字向量:
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
.
请注意,当 b
是一个因素时,将有一个设计矩阵,例如 Xb
,用于 b
。显然这是一个 0-1 二进制矩阵,因为因子变量被编码为虚拟变量。然后 poly(a,2):b
形成 Xa
和 Xb
之间的逐行 Kronecker 积。这听起来很棘手,但本质上只是两个矩阵的所有列之间的成对乘法。因此,如果 Xa
有 ka
列并且 Xb
有 kb
列,则生成的矩阵有 ka * kb
列。这样的混合称为'interaction'.
生成的矩阵也有列名。例如,poly(a, 2)2:b3
表示 Xa
的第 2 列与 Xb
中的虚拟列的乘积,用于 b
的第三级。我不是说 'the 3rd column of Xb' 因为如果对比 b
这是错误的。通常会对比一个因素,因此如果 b
有 5 个水平,Xb
将有 4 列。如果第一个因子水平是参考水平(因此未出现在 Xb
中),则第三水平的虚拟列将是 Xb
的第二列。