我想在R中进行多项式回归,其中包含一个因变量y
和两个独立变量x1
和x2
。在我看来,模型应如下所示,
y=b0 + b1x1+ b2x2+ b3x1^2+ b4x2^2+ b5x1x2
我尝试了lm(y~x1+x2+poly(x1,2,raw=TRUE)+poly(x2,2,raw=TRUE))
和lm(y~x1+x2+I(x1^2)+I(x2^2))
。但这只给出了正方形,而不是两个变量的乘积。
我能做lm(y~x1+ x2+ x1^2+ x2^2+ x1x2)
。但我想知道是否有一个比写出整个方程更容易的方法。我也想做3和4型号的力量,这是更长的。
答案 0 :(得分:13)
您可以使用 polym
y ~ polym(x1, x2, degree=2, raw=TRUE) # is equivalent to
y ~ x1 + x2 + I(x1^2) + I(x2^2) + x1:x2
但要注意系数的顺序,它们与第二个公式不同。
如果您使用 degree = 3 ,则会添加更高阶的交互,例如 I(x1 ^ 2):x2 + I(x2 ^ 2):x1 ,因此你必须调整你的公式。
注意: polym 是 poly 的包装器,因此您可以将此后者用于同一个调用。