R - 线性回归 - 交互和poly()的解释

时间:2017-03-24 14:06:42

标签: r syntax regression

我是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

1 个答案:

答案 0 :(得分:0)

你的问题有两个方面:

  • customer做什么;
  • poly做什么。

对于第一个问题,我建议您回答https://stackoverflow.com/a/39051154/4891738,以获得:的完整说明。请注意,对于大多数用户来说,知道它生成poly个或多个列的设计矩阵就足够了,每个列都是基函数。

degree不是苦难。在您:也是数字的情况下,b将返回

poly(a, 2):b

所以你对问题的猜测是正确的。但请注意Xa <- poly(a, 2) # a matrix of two columns X <- Xa * b # row scaling to Xa by b 为您提供正交多项式基础,因此它与polyI(a)不同。您可以在调用I(a^2)时设置raw = TRUE以获得普通的多项式基础。

poly有列名。 Xa仅表示poly(a,2)2的第二列。

请注意,当Xa是一个因素时,b会有一个设计矩阵,比如Xb。显然,这是一个0-1二进制矩阵,因为因子变量被编码为虚拟变量。然后bpoly(a,2):bXa之间形成一个行式Kronecker产品。这听起来很棘手,但基本上只是两个矩阵的所有列之间的成对乘法。因此,如果Xb列有Xa列而ka列有Xb列,则生成的矩阵会有kb列。这种混合称为“相互作用”。

结果矩阵也有列名。例如,ka * kb表示poly(a, 2)2:b3第2列的产品和Xa中第3列Xb的虚拟列。我不是说'Xb的第3列',因为如果对比b,这是错误的。通常会对比一个因素,因此如果b有5个级别,b将有4个列。如果第一个因子级别是参考级别(因此没有出现在Xb中),则第三级的虚拟列将是Xb的第二列。