【问题标题】:Warning message 'newdata' had 1 row but variables found have 16 rows in R警告消息“newdata”有 1 行,但发现的变量在 R 中有 16 行
【发布时间】:2017-01-04 19:58:07
【问题描述】:

我想使用 predict 函数来预测 fjbjor 何时为 5.5,我总是收到此警告消息,我尝试了很多方法,但总是出现,所以有没有人可以在这里看到我做错了什么

这是我的代码

fit.lm <- lm(fjbjor~amagn, data=bjor)
summary(fit.lm)

new.bjor<- data.frame(fjbjor=5.5)
predict(fit.lm,new.bjor)

结果出来了

 1        2        3        4        5        6        7        8        9       10       11 
5.981287 2.864521 9.988559 5.758661 4.645530 2.419269 4.645530 5.313409 6.871792 3.309773 4.200278 

      12       13       14       15       16 
3.755026 5.981287 5.536035 1.974016 3.755026  

警告消息:“newdata”有 1 行,但找到的变量有 16 行

如果有人能看出问题所在,我将非常感谢您的帮助。

【问题讨论】:

    标签: r regression linear-regression lm predict


    【解决方案1】:

    您的模型是fjbjor ~ amagn,其中fjbjor 是响应,amagn 是协变量。那么你的newdata 就是data.frame(fjbjor=5.5)

    newdata 应该用于提供协变量而不是响应。 predict 将仅保留 newdata 中的协变量列。对于您指定的newdata,这将是NULL。因此,predict 将使用内部模型框架进行预测,它会返回您的拟合值。

    警告信息相当清楚。 predict 确定来自 nrow(newdata) 的预期预测数,即 1。但是我上面描述的事情发生了,因此返回了 16 个拟合值。这种不匹配会产生警告。


    看起来你真正想要的模型是:amagn ~ fjbjor

    【讨论】:

    • 非常感谢 :) 你知道我需要添加什么来找到 5.5 的 95% 预测区间吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多