簡體   English   中英

調整后的 R 使用“老鼠”平方

[英]Adjusted R squared using 'mice'

我正在使用來自 lme4 的小鼠 package 和 lmer 進行分析。 但是, pool.r.squared()不適用於此 output。 我正在尋找有關如何在以下工作流程中包含調整后的 R 平方的計算的建議。

require(lme4, mice)
imp <- mice(nhanes)
imp2 <- mice::complete(imp, "all") # This step is necessary in my analyses to include other variables/covariates following the multiple imputation
fit <- lapply(imp2, lme4::lmer, 
              formula = bmi ~ (1|age) + hyp + chl,
              REML = T)
est <- pool(fit)
summary(est)

你在這里有兩個不同的問題。

首先,關於多級/混合模型回歸的 R 平方實際上是什么,有幾種觀點。 這就是pool.r.squared對您不起作用的原因,因為它不接受lm()以外的任何結果。 我沒有答案告訴你如何為你的 model 計算 R 平方,因為這是一個統計問題——不是編程問題——我不會詳細說明。 但是,快速搜索表明,對於某些類型的多級 R 平方,有可用於 R 的函數,例如mitml::multilevelR2

其次,為了在插補樣本中匯集統計數據,它應該是正態分布的。 因此,您必須將 R-squared 轉換為 Fisher's Z,並在池化后對其進行反向轉換。 https://stefvanbuuren.name/fimd/sec-pooling.html

在下文中,我假設您有一種方法(或多種選擇)來計算(調整后的)R 平方。 假設您使用mitl::multilevelR2並選擇 LaHuis 等人的方法。 (2014),您可以通過以下步驟在您的插補中計算和匯集它:

# what you did before:
imp <- mice::mice(nhanes)
imp2 <- mice::complete(imp, "all")
fit_l <- lapply(imp2, lme4::lmer, 
              formula = bmi ~ (1|age) + hyp + chl,
              REML = T)

# get your R-squareds in a vector (replace `mitl::multilevelR2` with your preferred function for this)
Rsq <- lapply(fit_l, mitml::multilevelR2, print="MVP")
Rsq <- as.double(Rsq)

# convert the R-squareds into Fisher's Z-scores
Zrsq <- 1/2*log( (1+sqrt(Rsq)) / (1-sqrt(Rsq)) )

# get the variance of Fisher's Z (same for all imputation samples)
Var_z <- 1 / (nrow(imp2$`1`)-3)
Var_z <- rep(Var_z, imp$m)

# pool the Zs
Z_pool <- pool.scalar(Zrsq, Var_z, n=imp$n)$qbar

# back-transform pooled Z to Rsquared
Rsq_pool <- ( (exp(2*Z_pool) - 1) / (exp(2*Z_pool) + 1) )^2

Rsq_pool #done

暫無
暫無

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

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