当用于预测的观察数量少于训练时,为什么以mlr预测不起作用?

时间:2014-11-26 18:35:57

标签: r lm predict

我正在尝试在R中使用多重线性回归,我通过从文件加载来训练我的数据。但是当我试图预测时,我收到一条警告信息:

"Warning messages:
1: 'newdata' had 45 rows but variables found have 8676 rows
2: In predict.lm(reg, tin) :
  prediction from a rank-deficient fit may be misleading"

我的代码很简单:

yval = read.table("value_of_y.txt",header = T)
xval = read.table("Rmat.txt",header = T)
reg<-lm(yval$y~xval$x1+xval$x2+xval$x3+xval$x4+xval$x5+xval$x6+xval$x7+xval$x8+xval$x9+xval$x10+xval$x11+xval$x12+xval$x13+xval$x14)
summary(reg)
tin = read.table("Rtest.txt",header = T)
predict(reg,tin)

我的训练数据(Rmat.txt):

  

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14
  1 -1 -1 1 1 1 1 1 1 1 1 1 1 1   1 -1 -1 1 1 1 1 1 1 1 1 1 1 1   1 -1 -1 1 1 1 1 1 1 1 1 1 1 1   -1 1 -1 1 1 1 1 1 1 1 1 1 1 1   -1 1 -1 1 1 1 1 1 1 1 1 1 1 1   -1 1 -1 1 1 1 1 1 1 1 1 1 1 1   -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1   1 -1 -1 1 1 1 1 1 1 1 1 1 1 1   1 -1 -1 1 1 1 1 1 1 1 1 1 1 1

(value_of_y.txt):
5
-5
5
5
-5
5
5
-5
-5

我用于预测的测试数据(Rtest.txt)

  

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14
  -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1
  -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1
  -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1
  -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1

我应该如何使用预测功能?

1 个答案:

答案 0 :(得分:0)

在使用lm和预测的公式语法时,您需要更加小心。模型中的列名称和新的data.frame必须完全匹配,当您使用&#34; $&#34;时,这是不可能的。公式中的语法。尝试像

这样的东西
yval = read.table("value_of_y.txt",header = T)
xval = read.table("Rmat.txt",header = T)
reg<-lm(y~x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14, cbind(yval, xval))
summary(reg)
tin = read.table("Rtest.txt",header = T)
predict(reg,tin)