高阶回归

时间:2015-02-26 07:44:14

标签: r regression lm

我想要一个模型$ Y = X_1 ^ 2 + X_2 ^ 2 + X_1 + X_2 + X_1 \ cdot X_2 $

如何在R

中构建它
glm(Y ~ poly(X1,2) * poly(X2,2)

如何将其推广到更高阶? 例如。 $ Y = X_1 ^ 3 + X_2 ^ 3 + X_1 \ cdot X_2 ^ 2 + X_1 ^ 2 \ cdot X_2 + X_1 ^ 2 + X_2 ^ 2 + X_1 + X_2 + X_1 \ cdot X_2 $

1 个答案:

答案 0 :(得分:1)

您可以使用以下公式glm

glm(Y ~ poly(X1, 2) + poly(X2, 2) + X1:X2)

函数poly创建多项式。在您的示例中,poly(X1, 2)会产生$ X_1 $和$ X_1 ^ 2 $。请注意,poly会创建orthogonal polynomials。如果需要原始多项式,则必须使用参数raw = TRUE

术语X1:X2是$ X_1 $和$ X_2 $之间的互动,即$ X_1 \ cdot X_2 $。

此外,您的公式不包含截距。我想这不是故意的。但是,您真的想在R中创建没有截距的模型,您必须将命令更改为glm(Y ~ 0 + poly(X1, 2) + poly(X2, 2) + X1:X2)

请注意,除非您在family中指定glm,否则该函数将适合线性模型。


您建议的公式(Y ~ poly(X1,2) * poly(X2,2))创建上述公式的所有项和附加项,即$ X_1 $的第一和第二阶多项式与$ X_2 $之间的所有交互,即$ X_1 \ cdot X_2 ^ 2 $,$ X_1 ^ 2 \ cdot X_2 $,$ X_1 ^ 2 \ cdot X_2 ^ 2 $。