楼主: amydami
5298 8

[问答] R语言循环回归预测?必须用变量名循环,用列数据循环时predict函数报变数不同错误。? [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

47%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
9
精华
0
在线时间
46 小时
注册时间
2018-9-19
最后登录
2020-10-26

楼主
amydami 发表于 2018-9-19 11:42:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用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的缘故。所以觉得应该不能用某列数据这样来做回归,恐怕还是得用变量名来做回归,但如何通过变量名的循环进行回归和预测,小白的我真的不会,自己折腾了一天也没弄出来,还请各位大拿帮帮忙,不胜感激!

二维码

扫码加我 拉你入群

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

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

关键词:predict Pred 回归预测 red R语言

exam.xlsx
下载链接: https://bbs.pinggu.org/a-2561001.html

10.58 KB

数据集

回帖推荐

zhou1_20 发表于3楼  查看完整内容

沙发
amydami 发表于 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)
但这样的话我就不知道该如何实现循环了。求各位高手帮忙指点一下迷津啊。。。。

藤椅
zhou1_20 发表于 2018-9-19 16:44:40
  1. data_all <- readxl::read_xlsx('D:/exam.xlsx')
  2. #设置训练集
  3. datatrain<-as.data.frame(subset(data_all,time<=9))
  4. #设置预测集
  5. datatest<-as.data.frame(subset(data_all,time>9))
  6. fit=list()
  7. foc=list()
  8. for (i in 1:4) {
  9.   z=datatrain[,i+1];y=datatrain[,5+i];x=datatrain[,9+i]
  10.   fit[[i]]<-lm(z~x+y)
  11.   Newdt <- datatest[,i+c(5,9)];names(Newdt) <- c('x','y')
  12.   foc[[i]]<-predict(fit[[i]],newdata=Newdt,
  13.                interval="prediction",level=0.95)
  14. }
复制代码

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

报纸
zhou1_20 发表于 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、只能设置一个

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

7
amydami 发表于 2018-9-21 08:56:06
大神,不好意思昨天那行代码有误,应该是
Newdt<-c(datatest[,1],datatest[,i+c(5,9)]),但时间和其他数据合不到一起,请问正确写法应该怎么写呢?
先谢谢啦!

8
amydami 发表于 2018-9-21 09:16:05
又想了下,貌似正确的应该是Newdt<-datatest[,c(1,i+5,i+9)]  ,或者Newdt<-datatest[,c(1,i+c(5,9))]
对否?

9
amydami 发表于 2018-9-21 12:17:19
大神,出现了一个错误,能否帮忙看看怎么解决?
“Error in xy.coords(x, y) : (串列)对象不能强制改变成'double'种类”

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-12 13:15