2014-03-13 141 views
1
collection <- data.frame(col1=X1,col2=X2,col3=X3,col4=X4) 
k <- 5 
ind <- sample(seq(1,k), length(X1), replace=TRUE) 

test_ind = which(ind==1) 
train<-collection[-test_ind,] 
fit<-lm(X1~poly(X2,2,raw=T)+X3+X4+X2:X3,data=train) 
model1_resid<-predict(fit,collection[test_ind,2:4]) 

警告消息: 'newdata' 具有105行,但发现变量具有444行警告在LM预测对于r

顺便说一句:长度(test_ind)是105和nrow(火车)= 444

我计划运行交叉验证,但上面的代码会生成警告,我已经在此论坛中跟随其他帖子做了子集化,然后我进入lm函数,为什么还有警告?任何人都可以指出错误?谢谢

+0

'rpm'似乎不在'集合中。因此它来自全球环境。 – Roland

回答

0

我认为你需要使用相同的变量名,所以如果你想使用第2,3,4列作为你的预测,那么名称就是X1,X2,X3,因为它们用于模型(不是col2,col3和col4)。

尝试预测调用之前colnames(collection)= c(“X0”,“X1”,“X2”,“X3”),它应该可以工作(尽管我不明白你是否真的想使用col2,col3和col4进行预测)。

+0

我纠正了我的代码中的错误,但它仍然不起作用。你会再看一次吗?谢谢 – Jin

+1

如果您使用您在问题中编写的代码,那么您的姓名仍然是col1,col2,col3和col4,而应该有X1,X2,X3和X4。您可能需要将第一行更改为 集合< - data.frame(X1 = X1,X2 = X2,X3 = X3,X4 = X4) ,或者您可以稍后更改名称(但在最后的预测呼叫之前行): colnames(collection)= c(“X1”,“X2”,“X3”,X4) – Fanny