交叉驗證問題我R中運行以下模型:與R中
g<-lm(NA.~ PC + I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI))),data=DSET)
它運行正常。但是,當我要交叉驗證的同一型號:
a<-CVlm(df=DSET,form.lm = g ,m=5)
結果如下消息:
Error in model.frame.default(formula = form, data = df[rows.in, ], drop.unused.levels = TRUE) :
variable lengths differ (found for 'I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI)))')
編輯:
我再次以下列方式運行模型G:
g<-lm(NA.~ PC + I(1/(SPCI * (PC + PI))),data=DSET)
輸出與第一種方式相同。然後,我用相同的代碼進行交叉驗證並運行。
所以我的問題是:爲什麼I(1/(I(DSET$SPCI) * I(DSET$PC + DSET$PI))
不被交叉驗證的代碼接受並給出了這個消息?
我不知道這是否是你的_only_問題,但你的公式都搞砸了。你永遠不要在公式規範中使用'$'。這是擁有單獨的「數據」參數的關鍵。我也懷疑「NA」。這似乎是一個奇怪的變量名稱。 – joran
屬性的名稱是NA,所以R將名稱更改爲NA。不要與NA混淆。我的數據框中沒有缺失的值。 – CreamStat
這看起來很好。我問這件作品的唯一原因是因爲'.'在公式中有着特殊的含義,並且根據公式中其他的東西是錯誤的,這是不完全清楚的,無論你是否意圖在這個意義上使用它。 – joran