在数据帧输入上使用lm进行预测 - 模型没有找到输入变量

时间:2014-07-11 04:41:28

标签: r input prediction lm

这是一个非常基本的问题(我是新手......)。我试图使用线性模型测试一个简单的预测,但我似乎没有正确指定输入的数据帧。

在预测调用中,我不断收到一条消息,即newdata有12行,但变量有21行 - 我认为这是因为没有找到输入变量。我之前看到过针对单个输入发布的解决方案(建议使用向量而不是数据框),但这似乎无法解决我的问题。非常感谢任何帮助。

################Code is below ######################

# Reading in a csv Text File. Has Headers Quantity, Income, Price and 21 rows of values
CSVData <- read.table("C:/Users/.../CSVInput.txt",header=T,sep=",")

Model=lm(CSVData$Quantity~CSVData$Income+CSVData$Price)

###Creating a new test data set for prediction##################
BindCols1=seq(5,16,by=1)
BindCols2=seq(20,75,by=5)
PredFrame=data.frame(cbind(BindCols1,BindCols2))
colnames(PredFrame) <- c('Income','Price')
colnames(PredFrame)

coef(Model)
pc=predict(Model,PredFrame)

当我运行代码时,我得到了一个

  

&#34;警告信息:&#39; newdata&#39;有12行但找到的变量有21行   行&#34;

。此外,它不会使用新输入(来自PredFrame)进行预测,而是使用用于拟合模型的数据。

提前感谢您的建议!!!

1 个答案:

答案 0 :(得分:3)

使用:

Model <- lm(Quantity ~ Income + Price,data=CSVData)

formula=...的{​​{1}}参数引用lm(...)参数中指定的数据框中的列名。一旦完成拟合,就会存储该信息,因此您可以使用data=...,只要predict(Model,newdata=...)newdata的RHS上的列具有相同的列,它就会起作用