我使用modelsummary来显示几个多项式模型的结果,每个模型使用mice::pool function汇集了5个以上的数据集。它工作得很好,但我想添加q-value /调整后的p-value来表示错误发现率。
我知道我需要创建一个tidy_custom.mipo函数来添加这个统计数据,但是我不能让它工作。
下面是获取mipo对象的“pool_univariate”列表的代码,然后我将其传递给modelsummary。它工作得很好,我只想添加Q值统计。
你知道怎么做吗?
非常感谢!
# list of exposures
exposures <- c(
Cs(exposure1,exposure2,exposure3)
## model function
models <- function(x) {
lapply(imputed_data, function(y)
multinom(as.formula(
paste0(
"outcome ~ ",
x
)
), data = y, model = TRUE)
)
}
## run models
models_univariate <- as.list(seq(1,length(exposures)))
models_univariate <- pblapply(exposures, models)
## pool
pool_univariate <- as.list(seq(1,length(exposures)))
# run pool
for(j in seq_along(exposures)) {
pool_univariate[[j]] <- pool(models_univariate[[j]])
}发布于 2021-08-10 00:15:13
如果没有一个最小的工作示例,很难回答这个问题。在这里,对于线性回归上下文,我给出一个比原始示例更简单的示例。
首先,加载程序包并估计回归模型:
library(modelsummary)
mod <- lm(mpg ~ hp + drat + vs + am, data = mtcars)其次,因为我们想总结一个类lm的模型,所以我们定义了一个名为tidy_custom.lm的新方法。此函数接受统计模型作为输入,并返回符合broom package specification的数据框,其中一列称为term,其他列包含匹配的统计数据。在当前示例中,数据帧将包括三个新的统计数据(q.value、bonferroni和holm)。这些值是使用R的p.adjust函数计算的,该函数调整p值以进行多次比较:
tidy_custom.lm <- function(x, ...) {
out <- broom::tidy(x)
out$q.value <- p.adjust(out$p.value, n = 10, method = "fdr")
out$bonferroni <- p.adjust(out$p.value, n = 10, method = "bonferroni")
out$holm <- p.adjust(out$p.value, n = 10, method = "holm")
return(out)
}现在,我们可以使用我们的lm模型调用modelsummary,并请求统计数据:
modelsummary(mod, statistic = "q.value")

我们还可以比较不同的p值和label them nicely using glue strings
modelsummary(mod,
statistic = c(
"p = {p.value}",
"q = {q.value}",
"p (Bonferroni) = {bonferroni}",
"p (Holm) = {holm}"
)
)

https://stackoverflow.com/questions/68648459
复制相似问题