【问题标题】:predict.lm with arbitrary coefficients rpredict.lm 具有任意系数 r
【发布时间】:2016-05-28 02:04:39
【问题描述】:

我正在尝试使用 predict.lm 预测一个 lm 对象。但是,我想使用手动插入的系数。 为此,我尝试了:

model$coefficients <- coeff

(其中“coeff”是正确系数的向量) 这确实会根据我的需要修改系数。然而,当我执行时

 predict.lm(model, new.data)

我只是得到使用“旧”参数计算的预测。有没有办法强制 predict.lm 使用新的?

Post Scriptum:我需要这样做以适应 bin-smooth(也称为回归图)。 此外,当我“手动”预测(即使用矩阵乘法)时,结果很好,因此我很确定问题在于 predict.lm 无法识别我的新系数。

提前感谢您的帮助!

【问题讨论】:

  • 你为什么要坚持使用predict.lm呢?这不是它的设计目的。
  • 我想使用它有两个原因:1. 即使我已经拥有了绘制图表的所有数据,我也想让代码更优雅一点 2. 因为我需要使用修改后的 lm 对象来创建 k 折交叉验证函数:现有的会(不经意间)估计不正确的系数。
  • @AlbertoFerrando 你能用你感兴趣的系数做一个矩阵乘法吗?这是另一个类似问题的 SO 帖子的链接(可能重复):stackoverflow.com/questions/2062194/…
  • 我做了一个矩阵乘法,它可以工作。问题是我想使用现成的 R 函数来拟合我的模型,因为我需要估计泛化误差。我想避免自己编写算法。

标签: r regression coefficients


【解决方案1】:

破解$coefficients 元素似乎确实有效。你能说明什么不适合你吗?

dd <- data.frame(x=1:5,y=1:5)
m1 <- lm(y~x,dd)
m1$coefficients <- c(-2,1)
m1
## Call:
## lm(formula = y ~ x, data = dd)
## 
## Coefficients:
## [1]  -2   1

predict(m1,newdata=data.frame(x=7))  ## 5  = -2+1*7

predict.lm(...) 给出相同的结果。

我会非常小心使用这种方法,每次你对被黑的模型做不同的事情时都会检查。

一般来说,如果predictsimulate 方法采用newparams 参数会很好,但它们通常不会...

【讨论】:

  • 原来是范围界定问题:在我消除所有变量并重新运行代码后,建议的解决方案确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多