2014-04-16 48 views
0

正如問題所述,我需要一個自動程序,它將在時間上添加一個變量到現有的線性模型E(y)= b0 + b1x + b2x。所以我一次需要添加一個:x1x2, x1², x2², x2²*x1,x1²*x2, x1²*x2², x1³, etc.通過每次添加一個變量構造一個嵌套模型

最終目的是編寫一個函數,選擇具有最低AIC的模型。 到目前爲止,我所能做的手動把所有車型中的R是這樣的:

空< - 流明(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。

是否有自動的方式可以通過在上述時間添加一個變量來生成嵌套模型序列?

很多感謝,

彼得

+0

看一看功能'在包牧民dredge'。 – Roland

+0

謝謝你的回答。但是,我不清楚哪一個應該是我的全球模式來填補疏浚功能。我明白這個函數會生成一組模型,並在這個全局模型中組合這些模式。但這意味着我需要指定一個有限模型。但是,我們的目標是找到最小化AIC的模型 - 可以是高於全球模型中指定的模型。 – user3387899

+0

如果您不知道最複雜的模型,您如何知道何時停止添加條款? – Roland

回答

0

質量提供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 
相關問題