简短版本:是否可以(除了对格式化的单元格内容进行反向处理之外)从表中提取系数,该表报告使用finalfit
包生成的回归模型的结果?
背景:使用(惊人的)finalfit
包,我可以从回归模型中生成结果表。我想在Rmarkdown文档的文本中报告其中一些相同的结果。我不想运行回归模型两次,一次在表finalfit
中运行一次,一次生成要在文本中使用的输出。另外,finalfit
处理系数(例如,对数回归模型中的系数取幂以生成比值比,一致地设置小数点格式),我不想重复这些步骤。
下面的代码从逻辑回归模型生成格式化的结果表(注意:故意将基本R代码用于模型)
library(finalfit)
library(dplyr)
explanatory = c("age", "sex.factor")
dependent = "mort_5yr"
colon_s %>%
## Crosstable
summary_factorlist(dependent, explanatory, fit_id=TRUE) %>%
ff_merge(
glm(
mort_5yr ~ age + sex.factor, family="binomial", data = colon_s
) %>%
fit2df(estimate_suffix=" (multivariable)")
) %>%
select(-c(fit_id, index)) %>%
dependent_label(colon_s, dependent)
我看不到如何从此表(或生成它的管道)中提取出Sex:Male的优势比,而无需分别运行和处理glm
模型。
直接提取单元格内容(由@LyzandeR建议)将导致以下字符串:“ 0.98(0.76-1.27,p = 0.888)” 需要提取相关系数,置信区间和P值。这样几乎可以达到结果,但考虑到它们以前都已计算并包含在此字符串中,因此不理想。
注意:我很高兴使用其他软件包来达到预期的效果。
答案 0 :(得分:1)
感谢您对此软件包的关注。
这是一个好主意,而不是您所描述的已实现的事情。您可以使用内部函数(已导出)来执行此操作。
不太漂亮,但是会为您提供管道中的系数,95%CI和p值的表格。
library(finalfit)
library(dplyr)
explanatory = c("age", "sex.factor")
dependent = "mort_5yr"
colon_s %>%
summary_factorlist(dependent, explanatory, fit_id=TRUE) %>%
ff_merge(
glmmulti(colon_s, dependent, explanatory)[[1]] %>% # glmmulti/glm etc. will work
extract_fit() %>%
{coef_table <<- .} %>% # save an extra table in the pipeline
condense_fit(estimate_suffix = " (multivariable)") %>%
remove_intercept()
) %>%
select(-c(fit_id, index)) %>%
dependent_label(colon_s, dependent)
以防万一,您可以生成未格式化的裸机模型:
explanatory = c("age", "sex.factor")
dependent = "mort_5yr"
colon_s %>%
finalfit(dependent, explanatory, condense = FALSE)
答案 1 :(得分:1)
根据自己的喜好调整@Ewen答案:
library(finalfit)
library(dplyr)
explanatory = c("age", "sex.factor")
dependent = "mort_5yr"
colon_s %>%
## Crosstable
summary_factorlist(dependent, explanatory, fit_id=TRUE) %>%
ff_merge(
glm(
mort_5yr ~ age + sex.factor, family="binomial", data = colon_s
) %>%
fit2df(condense = FALSE) %>%
{coef_multi <<- .} %>% # generate a table of raw coefficients here
condense_fit(estimate_suffix=" (multivariable)")
) %>%
select(-c(fit_id, index)) %>%
dependent_label(colon_s, dependent)
注意:这种方法也可以用于单变量模型的系数
唯一的症结在于获取原始的摘要统计信息,但这确实并不棘手!