簡體   English   中英

在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列。 它本質上返回

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

但是,我想要的是df2$a * a.coefdf2$b * b.coef R對它們求和並給出答案,但是我想看看縮放如何影響這些值。

是否有一種方便的方法可以在R中執行此操作(在lmpredict.lm是esp),還是我自己必須手動對此進行編碼? 我在predict.lm中使用了terms變量,但是我predict.lm

謝謝您的幫助!

編輯我寫了這個函數:

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), '*')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM