在 R 中使用“lm”时获取缩放预测值

Obtain scaled predictor values when using `lm` in R

我在 R 中使用 lm 进行简单的多元线性回归。这是一个示例模型:

m <- lm(formula = t ~ a + b + 0, data = df1)

其中 tabdf1 中的列。该模型计算 2 个系数,我们称它们为 a.coefb.coef。如果我然后使用这个模型来预测一些其他数据,比如 df2,我可以获得这样的预测值:

predict(m, df2)

如果我在 df2 中也有 ab 列。它本质上是 returns

df2$a * a.coef + df2$b * b.coef

然而,我想要的是 df2$a * a.coefdf2$b * b.coef 列。 R 对它们求和并给出答案,但我想看看缩放比例如何影响这些值。

在 R 中是否有方便的方法(尤其是 lmpredict.lm),还是我必须自己手动编写代码?我在 predict.lm 中使用了 terms 参数,但我无法得到任何结果。

感谢您的帮助!

编辑 我写了这个函数:

scaled.fn <- function(dt, x, y, i) {
    # dt is data.table
    # x is dependent column (col name as str) 
    # y are predictor columns (col names as vector of str)
    # i is name of column to multiply, as str

    dep = paste(y, collapse = " + ")
    my.formula = paste(x, " ~ ", dep, sep = "")

    m = lm(formula = my.formula, data = dt)

    # column names in dt are named in y
    return(dt[, get(i) * coef(m)[i]])
}

试试这个:

sweep(df2, MARGIN = 2, coef(m), '*')

编辑:更具体的解决方案:

sweep(df2[,c("a","b")], MARGIN = 2, coef(m), '*')