楼主: haichao1990
15226 13

[问答] 'newdata'必需有237行 但变量里有473行 [推广有奖]

  • 0关注
  • 0粉丝

大专生

91%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
395 点
帖子
35
精华
0
在线时间
75 小时
注册时间
2015-10-12
最后登录
2019-3-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
不明白为什么总会出现以下错误,共568条数据,我把2/3数据用来做回归,1/3做预测用。所以,我做回归是用了473行的数据,我预测用的数据是另外237行,那为什么会出现错误呀?


> pre=read.csv("test_data237.csv") #237条
> x1<-as.matrix(pre[,2:18])
> y<-predict(OSLfit1,data.frame(X2=x1))
Warning message:
'newdata'必需有237行 但变量里有473行

二维码

扫码加我 拉你入群

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

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

关键词:Data NEW test READ Est

回帖推荐

jiangbeilu 发表于13楼  查看完整内容

对,就是像你现在这样子做的

jiangbeilu 发表于8楼  查看完整内容

只要这三行就可以算出yhat了,你对应的替换一下。不需要转成matrix形式来作回归的。
沙发
jiangbeilu 学生认证  发表于 2016-8-12 08:21:57 |只看作者 |坛友微信交流群
  1. > x1<-as.matrix(pre[,2:18])
  2. > y<-predict(OSLfit1,data.frame(X2=x1))
复制代码

改成:
  1. > y<-predict(OSLfit1,data.frame(pre[,2:18]))
复制代码

这里,一定要是一个dataframe的形式,你不能再加 “X2=”这样的形式了。只要是data.frame的形式就可以了。
  1. > df2 <- data.frame(x1=1:3,x2=3:5)
  2. > data.frame(x3=df2)
  3.   [b]x3.x1 x3.x2[color=Red][/color][/b]
  4. 1     1     3
  5. 2     2     4
  6. 3     3     5
复制代码

这样子,是会改变变量名的,从而无法与predict函数对应起来,不知道这样解释有没有说明的呀?

使用道具

藤椅
haichao1990 发表于 2016-8-12 09:34:41 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2016-8-12 08:21
改成:

这里,一定要是一个dataframe的形式,你不能再加 “X2=”这样的形式了。只要是data.frame的形 ...
额,可还是一样的错误额

> pre=read.csv("test_data237.csv") #237条
> y<-predict(OSLfit1,data.frame(pre[,2:18]))
Warning message:
'newdata'必需有237行 但变量里有473行

使用道具

板凳
jiangbeilu 学生认证  发表于 2016-8-12 09:36:01 |只看作者 |坛友微信交流群
haichao1990 发表于 2016-8-12 09:34
额,可还是一样的错误额

> pre=read.csv("test_data237.csv") #237条
可以上传您的数据么?这个没看到数据,还真的不好说。

使用道具

报纸
haichao1990 发表于 2016-8-12 09:38:49 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2016-8-12 09:36
可以上传您的数据么?这个没看到数据,还真的不好说。
测试测试数据数据   https://pan.baidu.com/s/1sl1ojc5

使用道具

地板
jiangbeilu 学生认证  发表于 2016-8-12 10:03:09 |只看作者 |坛友微信交流群
OSLfit1是什么模型呢?

使用道具

7
haichao1990 发表于 2016-8-12 10:12:27 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2016-8-12 10:03
OSLfit1是什么模型呢?
是下面这些得出的模型

train=read.csv("train_data473.csv") #473条
x=as.matrix(train[,2:18])
y=as.matrix(train[,1])
OSLfit1=lm(y~x,data=train)
summary(OSLfit1)

使用道具

8
jiangbeilu 学生认证  发表于 2016-8-12 10:17:30 |只看作者 |坛友微信交流群
  1. train=read.csv("test_data237.csv") #237条
  2. OSLfit1=lm(Y~.,data=train)
  3. yhat<-predict(OSLfit1,data.frame(train[,2:18]))
复制代码

只要这三行就可以算出yhat了,你对应的替换一下。不需要转成matrix形式来作回归的。

使用道具

9
haichao1990 发表于 2016-8-12 10:20:46 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2016-8-12 10:17
只要这三行就可以算出yhat了,你对应的替换一下。不需要转成matrix形式来作回归的。
嗯,对了,非常感谢非常感谢大神

使用道具

10
haichao1990 发表于 2016-8-12 10:38:21 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2016-8-12 10:17
只要这三行就可以算出yhat了,你对应的替换一下。不需要转成matrix形式来作回归的。
但觉得还是不对呀,我是想用占2/3的训练集得出模型OSLfit1后,再用这个模型OSLfit1去对占比1/3的测试集进行预测呀!
你这代码是用测试集得出OSLfit1模型后,又对测试集本身进行预测了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 15:36