我是R的初学者,我需要对某些数据集执行回归。我的问题是,我不确定如何将模型重写为数学公式。
最令人困惑的是interactions
和poly功能。
他们能被理解为产品和多项式吗?
让我们有以下模型,a
和b
都是数字的向量:
y ~ poly(a, 2):b
可以像这样在数学上重写吗?
y = a*b + a^2 * b
当我从fit summary
获得以下表达式时poly(a, 2)2:b
是否等于以下公式?
a^2 * b
答案 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
为您提供正交多项式基础,因此它与poly
和I(a)
不同。您可以在调用I(a^2)
时设置raw = TRUE
以获得普通的多项式基础。
poly
有列名。 Xa
仅表示poly(a,2)2
的第二列。
请注意,当Xa
是一个因素时,b
会有一个设计矩阵,比如Xb
。显然,这是一个0-1二进制矩阵,因为因子变量被编码为虚拟变量。然后b
在poly(a,2):b
和Xa
之间形成一个行式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
的第二列。