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

#假设已经有数据框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)。

#以前这个问题我没去细研究,我的方法就是利用公式提取回归系数去做预测,置信区间都是带公式求的,现在发现了这个问题就立即分享出来了,希望能帮到需要的朋友!!!

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值