所有
这是我在这个论坛上提出的第一个问题。我是初学者,你们都会马上告诉我们。
我正在完成一项小任务,我必须将训练模型与测试模型进行比较。关键是训练模型的行数多于测试模型。
通过线性回归模型,我希望比较两种模型,但是当我使用predict()函数时,我得到以下错误:
“newdata”有3456行但找到的变量有7689行。
这就是我所做的:
regression = lm(train$students~train$subjects, train)
(train是trining数据库)
prediction = predict(regression, test)
(测试是测试数据库)
我不知道我是否正确使用了predict()函数。有人能告诉我我做错了吗?
非常感谢你的帮助和善意!
答案 0 :(得分:2)
不要在公式中将变量称为data$var
。决不。如初。
发生的事情是您使用名为train$students
和train$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>