tbl_uvregression线性回归参考类别估计值返回异常问题
解决tbl_uvregression参考行估计值显示0的问题
问题原因
add_estimate_to_reference_rows参数在高斯族线性回归(family = gaussian)且exponentiate = F时,默认会将参考类别的估计值设为0——这是因为线性回归中参考组的效应是相对于自身的基准值,但你需要的是对应模型的截距(即参考组的预测均值)。
解决方案
通过modify_table_body函数手动替换参考行的估计值为对应单变量模型的截距,具体代码如下:
# 生成原始表格 tbl <- tbl_uvregression( trial[, c('trt', 'age', 'stage', 'marker', 'death')], method = glm, y = marker, method.args = list(family = gaussian), exponentiate = F, add_estimate_to_reference_rows = T ) %>% modify_column_hide(columns = p.value) # 提取每个单变量模型的截距 model_intercepts <- tbl$inputs$models %>% purrr::map_dbl(~ coef(.x)[[1]]) # 定位参考行并替换估计值 tbl_fixed <- tbl %>% modify_table_body( ~ .x %>% dplyr::mutate( estimate = dplyr::case_when( reference_row == TRUE ~ model_intercepts[match(variable, unique(variable))], TRUE ~ estimate ) ) ) # 查看修正后的表格 tbl_fixed
代码说明
- 先生成原始的回归表格,保留参考行但此时估计值为0;
- 从表格的
inputs$models中提取每个单变量模型的截距(截距对应参考组的预测均值); - 通过
modify_table_body筛选出reference_row == TRUE的行,将其estimate列替换为对应模型的截距值。
内容的提问来源于stack exchange,提问作者Znark Akfak
相关产品推荐
相关产品推荐

