【问题标题】:Troubles with predict() function (probably easy to solve)predict() 函数的问题(可能很容易解决)
【发布时间】:2017-07-31 01:46:55
【问题描述】:

全部。

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

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

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

“newdata”有 3456 行,但发现的变量有 7689 行。

这就是我所做的:

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

(train 是 trining 数据库)

prediction = predict(regression, test) 

(test是测试数据库)

我不知道我是否正确使用了 predict() 函数。谁能告诉我我做错了什么?

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

【问题讨论】:

  • 尝试将type='response' 作为参数添加到预测函数。如果没有可重复的示例,我将无能为力。
  • 试试regression = lm(students ~ subjects, train) prediction = predict(regression, test)
  • 非常感谢,G5W!!

标签: r regression linear-regression predict


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2014-01-06
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多