R cv.glm可变长度不同

R cv.glm可变长度不同,r,glm,cross-validation,R,Glm,Cross Validation,我试图在线性模型上使用cv.glm,但每次都会出现错误 Error in model.frame.default(formula = lindata$Y ~ 0 + lindata$HomeAdv + : variable lengths differ (found for 'air-force-falcons') 空军猎鹰是数据集lindata中的第一个变量。当我运行glm时,没有错误。所有变量都在一个数据集中,不存在缺失值 > linearmod5<- glm(lindat

我试图在线性模型上使用cv.glm,但每次都会出现错误

Error in model.frame.default(formula = lindata$Y ~ 0 + lindata$HomeAdv +  : 
variable lengths differ (found for 'air-force-falcons')
空军猎鹰是数据集lindata中的第一个变量。当我运行glm时,没有错误。所有变量都在一个数据集中,不存在缺失值

> linearmod5<- glm(lindata$Y ~ 0 + lindata$HomeAdv + ., data=lindata, na.action="na.exclude")
> set.seed(1)
> cv.err.lin=cv.glm(lindata,linearmod5,K=10)
Error in model.frame.default(formula = lindata$Y ~ 0 + lindata$HomeAdv +  : 
variable lengths differ (found for 'air-force-falcons')
>linearmod5集合种子(1)
>cv.err.lin=cv.glm(lindata,linearmod5,K=10)
model.frame.default中出错(公式=lindata$Y~0+lindata$HomeAdv+:
可变长度不同(适用于“空军猎鹰”)

我不知道是什么导致了这个错误或解决方案。有什么想法吗?谢谢!

导致这个错误的原因是您指定公式的方式错误

这将产生以下错误:

mod <- glm(mtcars$cyl ~ mtcars$mpg + .,
            data = mtcars, na.action = "na.exclude")

cv.glm(mtcars, mod, K=11) #nrow(mtcars) is a multiple of 11

mod您的错误就在这里
-lindata$HomeAdv
您试图用它实现什么?即使没有它,错误仍然存在:
>linearmod5 set.seed(1)>cv=cv.glm(lindata,linearmod5,K=10)model.frame.default中的错误(公式=lindata$Y~0+lindata$HomeAdv+:可变长度不同(适用于“空军猎鹰”)
mod <- glm(cyl ~ ., data = mtcars)

cv.glm(mtcars, mod, K=11)
mod <- glm(cyl ~ + mpg + disp, data = mtcars)

cv.glm(mtcars, mod, K=11)