R: cv.glm 可变长度不同错误
R: cv.glm variable lengh differ error
我正在尝试比较向后选择与线性回归的降维效果。数据集相当大,有 150 个变量。
我一直使用相同的方法为所选模型生成与交叉验证的比较,但是这次使用此数据集,cv.glm 给出了一个我难以修复的错误:
Error in model.frame.default(formula =
SurveyTest$H.test ~ : variable lengths differ (found for
'Music')
SurveyTest 中没有 NA 值,我似乎无法检测到长度差异的其他原因。
交叉验证代码:
#Linear regression full model
lm_full <- lm(SurveyTest$H.test~.,data=SurveyTest)
summary(lm_full)
#Backward selection
lm_init <- lm(H.test~1,data=SurveyTest)
backward_lm <- stepAIC(lm_full,scope = formula(lm_init),direction="backward",
trace = FALSE)
summary(backward_lm)
AIC(backward_lm)
#Cross Validation
library(boot)
model1 <- glm(lm_full)
summary(lm_full)
model2 <- glm(backward_lm)
cv.glm(data=SurveyTest, glmfit=model1,K=10)
cv.glm(data=SurveyTest, glmfit=model2,K=10)
我想我找到了解决办法。我应该用
创建 lm_full
lm_full <- lm(H.test~.,data=SurveyTest)
而不是
lm_full <- lm(SurveyTest$H.test~.,data=SurveyTest)
问题解决了。
我正在尝试比较向后选择与线性回归的降维效果。数据集相当大,有 150 个变量。
我一直使用相同的方法为所选模型生成与交叉验证的比较,但是这次使用此数据集,cv.glm 给出了一个我难以修复的错误:
Error in model.frame.default(formula = SurveyTest$H.test ~ : variable lengths differ (found for 'Music')
SurveyTest 中没有 NA 值,我似乎无法检测到长度差异的其他原因。
交叉验证代码:
#Linear regression full model
lm_full <- lm(SurveyTest$H.test~.,data=SurveyTest)
summary(lm_full)
#Backward selection
lm_init <- lm(H.test~1,data=SurveyTest)
backward_lm <- stepAIC(lm_full,scope = formula(lm_init),direction="backward",
trace = FALSE)
summary(backward_lm)
AIC(backward_lm)
#Cross Validation
library(boot)
model1 <- glm(lm_full)
summary(lm_full)
model2 <- glm(backward_lm)
cv.glm(data=SurveyTest, glmfit=model1,K=10)
cv.glm(data=SurveyTest, glmfit=model2,K=10)
我想我找到了解决办法。我应该用
创建 lm_fulllm_full <- lm(H.test~.,data=SurveyTest)
而不是
lm_full <- lm(SurveyTest$H.test~.,data=SurveyTest)
问题解决了。