1
我一直試圖在R中擬合順序多項式迴歸模型,並且遇到了以下問題:poly(x)
提供了一種快速方法,該函數不考慮分層原則,在轉向更高的訂單之前,所有的低階條款都應該包含在模型中。R中的分層多項式迴歸
一個解決方案在這裏,可能是入口的順序精選到模型自己,因爲我有一個玩具數據集做了下面
pred<-matrix(c(rnorm(30),rnorm(30)),ncol=2)
y<-rnorm(30)
polys<-poly(pred,degree=4,raw=T)
z<-matrix(c(
#order 2
polys[,2],polys[,6],polys[,9],
#order 3
polys[,3],polys[,7],polys[,10],polys[,12],
#order 4
polys[,4],polys[,8],polys[,11],polys[,13],polys[,14]),
ncol=12)
polyreg3<-function(x){
BICm<-rep(0,dim(x)[2])
for(i in 1:dim(x)[2]){
model<-lm(y~pred[,1]+pred[,2]+x[,1:i]) #include one additional term each time
BICm[i]<-BIC(model)
}
list(BICm=BICm)
}
polyreg3(z)
which.min(polyreg3(z)$BICm)
但這是更大程度的多項式的基本上是不切實際。我在想,那麼有沒有辦法解決這個問題,最好是通過調整我的代碼?
'for'循環最好在'R'中避免。去除你的循環將是一件試驗。有很多關於如何做SO的例子(例如[這裏是一個更通用的例子](http://stackoverflow.com/questions/4894506/avoid-two-for-loops-in-r)或[one在哪裏有人正在應用lm到data.frame](http://stackoverflow.com/questions/27539033/r-apply-lm-on-each-data-frame-row)。此外,你可能希望描述你的代碼找到你的瓶頸與[profr包](http://cran.r-project.org/web/packages/profr/index.html)。 –
@RichardErickson感謝您的建議,雖然他們不是我最目前迫切擔憂。 – JohnK