使用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
相关产品推荐
相关产品推荐

