全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5209 8
2018-09-19
用R语言通过循环实现线性回归和预测。要求通过循环实现因变量z与自变量x,y之间的回归预测,即z_being~lm(x_bengjing,y_being)...z_anhui~lm(x_anhui,y_anhui),并通过predict函数来预测出z_bengjing~z_anhui后3个时间点的值(对应第10-12行)。

我做的时候把数据集分成两部分,一部分是1-9行作为训练集,剩下的10-12行作为预测集,想通过数据框的列(训练集部分)来实现循环。做回归时没有问题,但在用predict预测时就会提示变数的长度不同。估计是因为训练集的长度是9,而预测集的长度是3的缘故。所以觉得应该不能用某列数据这样来做回归,恐怕还是得用变量名来做回归,但如何通过变量名的循环进行回归和预测,小白的我真的不会,自己折腾了一天也没弄出来,还请各位大拿帮帮忙,不胜感激!

附件列表

exam.xlsx

大小:10.58 KB

 马上下载

数据集

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-9-19 15:09:36
怕没说清楚,补充一下,也就是说我下面这样做是不行的:

#设置训练集
datatrain<-subset(data_all,time<=9)
#设置预测集
datatest<-subset(data_all,time>9)
fit=list()
foc=list()
for(i in 1:4)
{fit[[i]]<-lm(datatrain[,i+1]~datatrain[,5+i]+datatrain[[,9+i],data=datatrain)
foc[[i]]<-predict(fit[[i]],newdata=datatest,interval="prediction",level=0.95)
}

用变量名才不会出现问题,比如
fit<-lm(z_beijing~x_beijing+y_beijing,data=datatrain)
foc<-predict(fit,newdata=datatest,interval="prediction",level=0.95)
但这样的话我就不知道该如何实现循环了。求各位高手帮忙指点一下迷津啊。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-9-19 16:44:40
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-9-19 18:03:04
太好了!太感谢了!解决我一个大问题,刚才还愁得不行。。。
刚接触R,还想趁机请教高手几个简单的问题:
1、我这个Excel的数据读进R之后是什么结构?是自动就成为dataframe吗
2、你设置训练集、预测集的方法是将数据转化为dataframe吗,像我这样设置是否会有问题?
3、predict函数一次只能设置一个预测区间比如0.95吗?不能像有的函数可以同时得到0.8和0.95的值吗?是否只能分别做两次?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-9-20 14:14:23
amydami 发表于 2018-9-19 18:03
太好了!太感谢了!解决我一个大问题,刚才还愁得不行。。。
刚接触R,还想趁机请教高手几个简单的问题:
...
1、用 readxl::read_xlsx读入后是data.tibble结构,和data.frame类似,不过这种结构更易读取,不过这种结构在用到lm时容易出错
2、是将数据转化为dataframe,你的设置没有问题,只要是数据框就可以
3、只能设置一个
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-9-20 18:58:45
非常感谢大神的回复!你太好了!
我还有一个问题需要请教,就是时间“time”也要作为其中一个自变量的话,那个Newdt该怎么写呢?
我写成这样是错的:Newdt<-c(datatest[,1],datatest_all[,i+c(5,9])
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群