我在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))不被交叉验证代码接受并给出该消息?

最佳答案

我大概是第五次来到这里,总是想知道为什么@jlhoward给出的答案不起作用。因此,对于将来的读者(包括我)来说,要使此代码起作用,请按以下方式用df替换data:

CVlm(data=DSET,form.lm = form ,m=5)

您可以在documentation(第47页)中阅读更多内容。

08-24 21:25