通过一次添加一个变量来构建嵌套模型

时间:2014-04-16 09:31:58

标签: r

正如问题所说,我需要一个自动程序,在时间上将一个变量添加到现有的线性模型E(y)= b0 + b1x + b2x。所以我需要一次添加:x1x2, x1², x2², x2²*x1,x1²*x2, x1²*x2², x1³, etc.

最后的目的是编写一个选择具有最低AIC的模型的函数。 到目前为止,我可以手动将所有模型放入R中:

null< - lm(y~x1 + x2)

alt <- lm(y~ x1 +x2 + x1*x2)

alt2 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2))

alt3 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2) + I(x2^2))

alt4 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2) + I(x2^2) + I(x1^2)*x2)

alt5 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2) + I(x2^2) + I(x1^2)*x2 + I(x2^2)*x1)

alt6 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2) + I(x2^2) + I(x1^2)*x2 + I(x2^2)*x1 + I(x1^3))

alt6 <- lm(y~ x1 +x2 + x1*x2 + I(x1^2) + I(x2^2) + I(x1^2)*x2 + I(x2^2)*x1 + I(x1^2)*I(x2^2))

...

所以,然后计算这些不同模型的AIC。

是否有任何自动方式可以通过如上所述在时间添加一个变量来生成嵌套模型序列?

非常感谢,

彼得

1 个答案:

答案 0 :(得分:0)

MASS提供的addterm功能可以让您接近:

library(MASS)
null <- lm(null <- lm(y ~ x1 + x2)
alt <- addterm(null, ~. + x1*x2 + I(x1^2) + I(x2^2) + I(x1^2)*x2 + I(x2^2)*x1 + I(x1^2)*I(x2^2))
alt$AIC