You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用modelsummary生成平衡表时无法显示p值的问题求助

问题:使用modelsummary生成组间均值对比表时无法显示p值

我有如下结构的数据集:

# 生成示例数据
occup <- sample(c("working","housewife"), 100, replace = TRUE) # 妻子的职业
age   <- sample(20:60, 100, replace = TRUE) # 妻子的年龄
educ  <- sample(0:15, 100, replace = TRUE) # 妻子的受教育年限

df <- data.frame(Occupation = occup, Age = age, Education = educ)

实际数据集按occup变量分为两组,我希望通过t检验比较两组各变量的均值,生成包含p值的对比表。我用modelsummary包的datasummary_balance函数生成了仅含均值和标准差的平衡表:

library(modelsummary)
datasummary_balance(~occup, data = mydata, output = 'latex')

但添加dinm=TRUE和dinm_statistic="p.value"参数后,生成的表还是没有p值列,和之前的结果一致。我需要的是两组均值对比的结果,不是仅展示统计量,请问哪里操作错了?

解决方案

你的问题出在参数使用错误:dinm(全称Difference-in-Means for Multiple groups)是为分组变量有3个及以上水平的场景设计的,用来对比多个处理组和对照组的均值差异,而你的数据是两组对比,所以这个参数不会生效。

要在两组对比的平衡表中添加t检验的p值,正确的做法是使用test = TRUE参数启用组间检验,或者直接在statistic参数中指定包含p值的统计量格式。以下是两种可行的代码示例:

方法1:启用组间检验自动添加p值

library(modelsummary)

# 生成带p值的平衡表
datasummary_balance(~ Occupation, 
                    data = df,
                    statistic = "{mean} ({sd})", # 指定展示均值和标准差
                    test = TRUE, # 开启组间t检验(连续变量)/卡方检验(分类变量)
                    output = "latex")

方法2:自定义统计量格式,直接指定显示p值

library(modelsummary)

datasummary_balance(~ Occupation, 
                    data = df,
                    statistic = c(
                      "Mean (SD)" = "{mean} ({sd})",
                      "p-value" = "{p.value}"
                    ),
                    output = "latex")

运行上述代码后,生成的LaTeX表格会包含两组的均值、标准差,以及对应的组间t检验p值列,满足你对比两组均值的需求。


内容的提问来源于stack exchange,提问作者Saïd Maanan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:25:26