predict() 函数的问题(可能很容易解决)

Troubles with predict() function (probably easy to solve)

所有。

这是我在本论坛提出的第一个问题。我是初学者,大家马上就会告诉我。

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

通过线性回归模型,我想比较两个模型,但是当我使用 predict() 函数时,出现以下错误:

"newdata" 有 3456 行,但发现变量最喜欢 7689 行。

这是我做的:

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

(train是trining数据库)

prediction = predict(regression, test) 

(test为测试数据库)

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

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

不要在公式中将变量引用为 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 中完整观察的数量...... ?