全部。
这是我在这个论坛上提出的第一个问题。我是一个初学者,你们很快就会知道。
我正在执行一项小任务,其中我必须将训练模型与测试模型进行比较。关键是训练模型的行数比测试模型的行数多得多。
通过线性回归模型,我希望比较这两个模型,但是当我使用 Predict() 函数时,出现以下错误:
“newdata”有 3456 行,但发现变量最喜欢 7689 行。
这就是我所做的:
regression = lm(train$students~train$subjects, train)
(train是训练数据库)
prediction = predict(regression, test)
(test为测试数据库)
我不知道我是否正确使用了predict()函数。有人可以告诉我我做错了什么吗?
预先非常感谢您的帮助和善意!
最佳答案
不要在公式中将变量引用为 data$var
。绝不。曾经。
发生的情况是,您使用名为 train$students
和 train$subjects
的变量拟合了模型。为了根据模型进行预测,R 将在测试集 test
中查找名为 train$subjects
的变量。显然 tests
中不存在这样的变量;谁会创建具有如此愚蠢名称的变量!?无需在公式中使用 data$var
格式,因为 data
参数的全部意义在于指示 R 应在何处查找公式中提到的变量名称。公式。
要开始解决此问题,请将您的模型调整为:
regression <- lm(students ~ subjects, data = train)
然后使用预测
predict(regression, test)
其中test
需要有一列包含subjects
。
错误消息是因为 newdata
有 3456 个,但当它搜索变量 train$subjects
时,它发现了 7689 行,大概这是 中完整观察的数量>火车
...?
关于r - Predict() 函数的问题(可能很容易解决),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706119/