使用predict()函数的麻烦(可能很容易解决)

时间:2017-03-09 21:50:35

标签: r regression linear-regression predict

所有

这是我在这个论坛上提出的第一个问题。我是初学者,你们都会马上告诉我们。

我正在完成一项小任务,我必须将训练模型与测试模型进行比较。关键是训练模型的行数多于测试模型。

通过线性回归模型,我希望比较两种模型,但是当我使用predict()函数时,我得到以下错误:

“newdata”有3456行但找到的变量有7689行。

这就是我所做的:

regression = lm(train$students~train$subjects, train)

(train是trining数据库)

prediction = predict(regression, test) 

(测试是测试数据库)

我不知道我是否正确使用了predict()函数。有人能告诉我我做错了吗?

非常感谢你的帮助和善意!

1 个答案:

答案 0 :(得分:2)

不要在公式中将变量称为data$var。决不。如初。

发生的事情是您使用名为train$studentstrain$subjects的变量拟合了模型。要从模型R预测,将在测试集train$subjects中查找名为test的变量。显然,tests中不存在这样的变量;谁用这样愚蠢的名字创造变数!?在公式中不需要使用data$var格式,因为data参数的整个点是指示R应该在哪里查找公式中提到的变量的名称。

要开始修复此问题,请将您的模型设为:

regression <- lm(students ~ subjects, data = train)

然后使用

进行预测
predict(regression, test)

其中test需要包含subjects的列。

错误消息是因为newdata有3456,但是当它搜索变量train$subjects时,它找到了7689行,大概是train中完整观察的数量......?< / p>