这是一个非常基本的问题(我是新手......)。我试图使用线性模型测试一个简单的预测,但我似乎没有正确指定输入的数据帧。
在预测调用中,我不断收到一条消息,即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)进行预测,而是使用用于拟合模型的数据。
提前感谢您的建议!!!
答案 0 :(得分:3)
使用:
Model <- lm(Quantity ~ Income + Price,data=CSVData)
formula=...
的{{1}}参数引用lm(...)
参数中指定的数据框中的列名。一旦完成拟合,就会存储该信息,因此您可以使用data=...
,只要predict(Model,newdata=...)
与newdata
的RHS上的列具有相同的列,它就会起作用