[英]Obtain scaled predictor values when using `lm` in R
我在R中使用lm
進行簡單的多線性回歸。 這是一個示例模型:
m <- lm(formula = t ~ a + b + 0, data = df1)
其中t
, a
和b
是df1
中的列。 該模型計算2個系數,我們將它們a.coef
和b.coef
。 如果我隨后使用此模型來預測其他數據,例如在df2
,則可以得到如下預測值:
predict(m, df2)
如果我在df2
中也有a
和b
列。 它本質上返回
df2$a * a.coef + df2$b * b.coef
但是,我想要的是df2$a * a.coef
和df2$b * b.coef
。 R對它們求和並給出答案,但是我想看看縮放如何影響這些值。
是否有一種方便的方法可以在R中執行此操作(在lm
或predict.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.