【问题标题】:Adding error variance to output of predict()将误差方差添加到 predict() 的输出
【发布时间】:2014-07-08 06:05:05
【问题描述】:

我正在尝试采用适合经验数据的线性模型,例如:

set.seed(1)
x <- seq(from = 0, to = 1, by = .01)
y <- x + .25*rnorm(101)
model <- (lm(y ~ x))
summary(model)
# R^2 is .6208

现在,我想做的是使用 predict 函数(或类似函数)从 x 创建一个预测值向量 y,该向量共享 x 和 y 之间原始关系的误差。单独使用 predict 给出完美拟合的值,所以 R^2 是 1 例如:

y2 <- predict(model)
summary(lm(y2 ~ x))
# R^2 is 1

我知道我可以使用predict(model, se.fit = TRUE) 来获取预测的标准误差,但我还没有找到将这些标准误差合并到预测本身的选项,我也不知道如何将这些标准误差合并到预测值以给出正确的误差量。

希望这里有人可以为我指明正确的方向!

【问题讨论】:

    标签: r random linear-regression prediction


    【解决方案1】:

    simulate(model) 怎么样?

    set.seed(1)
    x <- seq(from = 0, to = 1, by = .01)
    y <- x + .25*rnorm(101)
    model <- (lm(y ~ x))
    y2 <- predict(model)
    y3 <- simulate(model)
    matplot(x,cbind(y,y2,y3),pch=1,col=1:3)
    

    如果你需要手工做,你可以使用

    y4 <- rnorm(nobs(model),mean=predict(model),
                sd=summary(model)$sigma)
    

    【讨论】:

    • 谢谢!这正是我想要的,完美!我不知道我是否只是在predict() 上过于强烈地磨练,但我在搜索的任何地方都没有找到模拟功能。
    • 我认为它并没有应有的广为人知
    • 实际上,我需要能够为函数提供一个新的 x 值向量,以便根据模型进行预测,而不是从原始向量中进行模拟 - 但是您的“手动”方法可以正常工作如我所愿
    • 我希望simulate 也可以使用newdata 参数,但通常不会
    • @BenBolker 我有一个与此处提出的类似的问题 - 我想知道 6 年后现在是否有一个函数将 newdata 作为参数来预测给定模型的误差方差?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2020-03-25
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2015-11-26
    • 2016-05-25
    相关资源
    最近更新 更多