簡體   English   中英

你如何對所有可能的變量組合進行線性回歸?

[英]How do you do linear regressions on all possible combinations of variables?

我正在嘗試以自動方式進行多個比例線性回歸,而不是手動輸入每個可能的變量組合。

我有 20 個變量。 我想對每一對進行回歸,然后對每組 3、4 等進行回歸。

所以,我想要一個回歸比較Y ~ X1, X2 , Y ~ X2, X3 .... Y~ X1, X3 , Y~X1,X2,X3 , Y~X1,X2,X3,X4 , Y~X1,X2,X3,X5,X7 , Y~X1, X3, X7, X8會有很多模型。 有誰知道如何做到這一點?

我試過這個( 你如何重復線性回歸,其中只有 IV 變化而不必重復編寫代碼? ):

lmfun <- function(x) do.call("lm", list(reformulate(x, "retention_rate"), quote(data)))
L <- Map(lmfun, names(data)[-1])

它工作得很好,除了我需要其他組合(3、4、5、6 個變量等,而不僅僅是迭代單個 X 變量。有誰知道如何更改上面的代碼以獲得不同數量的不同組合? 也歡迎新的建議。

您可以在lapply循環中使用combn來創建公式。 請注意,您有 1M+ 回歸公式。

xvars <- paste0("X", 1:20)

fmla_list <- lapply(2:20, \(k){
  combn(xvars, k, \(x) {
    regr <- paste(x, collapse = "+")
    fmla <- paste("Y ~", regr)
    as.formula(fmla)
  }, simplify = FALSE)
})
fmla_list <- unlist(fmla_list)

length(fmla_list)
#> [1] 1048555
sum(choose(20, 2:20))
#> [1] 1048555

reprex package (v2.0.1) 創建於 2022-02-17

您還可以在combn中運行回歸。 在其最后一行代碼中,運行lm(as.formula(fmla), etc)而不是返回as.formula

來自 MASS package 的stepwise function 使用了一種可能對您的海豚有用的方法:通過比較不同類型的診斷指標,系統地消除或合並變量(向后/向前消除)。 這是文檔鏈接: https://www.rdocumentation.org/packages/Rcmdr/versions/2.0-4/topics/stepwise

暫無
暫無

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

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