![](/img/trans.png)
[英]How Do I Generate All Possible Combinations of the Variables In A Model In R?
[英]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.