我想要一个模型$ 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 $
答案 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 $。