您的位置:首页 > 其它

R语言-模型拟合及预测(新数据集)常见问题及解决方案

2016-08-22 13:28 295 查看
#假设已经有数据框data1,注意:必须是数据框,假如说因变量的列名是gdp

#线性拟合

lm2<-lm(gdp~.,data=data1);#这里小数点表示数据框data1中除了gdp,其它变量都是解释变量

#假设data_test是新数据集(解释变量)

#这里最关键的步骤就是必须保证data_test的列名必须和data1完全保持一致,不然肯定会报错或者警告,具体代码如下

#假设因变量就是data1的第一列

 colnames(data_test)<-colnames(data1)[-1]#这一步绝对不能省,否则必然报错

#模型预测

test_hat<-predict(lm2,newdata=data_test,interval="predict")#得到新数据集的预测值,interval="predict"表示给出置信区间

#所以如果在做新数据集碰到错误的同学看到我写的之后就会恍然大悟,具体报错一般包括三种(那些直接把矩阵带进来的同学我就不多说什么了,都说了必须是数据框哈):

#1. object 'vm2' not found#某个变量名找不到

#2.numeric 'envir' arg not of length one#这个错误很明显,一看就知道是新数据就一个数或向量,就不用解释了(已经说了必须是数据框)

#3. 'newdata' had 2 rows but variables found have 7 rows #新数据集的行数和模型的数据量不匹配,其实即使匹配了预测得到的结果也不是你想要的结果,而是原模型自身的拟合结果,不信你完全可以试试,预测之后你可以对比原模型的拟合值(只需调用lm2$fitted.values即可),你会发现不管你怎么改变新数据集,预测值都还是原模型的拟合值(即lm2$fitted.values)。

#以前这个问题我没去细研究,我的方法就是利用公式提取回归系数去做预测,置信区间都是带公式求的,现在发现了这个问题就立即分享出来了,希望能帮到需要的朋友!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  r语言 数据 预测