R语言中非参数MANOVA:双因子组合多组均值差异对比
问题解决与分析方法
一、汇总统计错误的原因与修复
你的错误根源是使用cbind()构造数据时,矩阵只能存储单一数据类型,导致数值型的value被强制转换为字符型,后续转成data.table时出现类型混乱。直接用data.table()创建数据集就能保留各列原始类型,解决这个问题:
library(data.table) value <- rnorm(100, mean = 100, sd = 36) group <- c(rep(c("A", "B", "C"), 33), "C") gender <- c(rep(c("M", "F"), 50)) test <- data.table(value, group, gender) # 直接创建data.table,避免类型强制转换 # 重新执行汇总统计即可正常运行 library(rstatix) testSummary <- test %>% group_by(group, gender) %>% get_summary_stats(value, type = "common")
二、非正态分布下6组(group+gender组合)的成对比较方法
不需要分两次执行,只需先创建组合分组变量,把group和gender合并为一个新因子,就能一次性完成所有6组的成对Wilcoxon检验:
1. 创建组合分组
# 生成形如"A-M" "A-F"的组合分组 test[, group_gender := interaction(group, gender, sep = "-")]
2. 执行一次性成对检验
pairwise.wilcox.test(test$value, g = test$group_gender, p.adjust.method = "holm")
运行后会直接输出6组之间所有两两比较的校正后P值,一步完成所有成对对比。
补充:先做整体差异检验
如果需要先判断6组整体是否存在差异,可以用Kruskal-Wallis检验(非参数版方差分析):
kruskal.test(value ~ group_gender, data = test)
内容的提问来源于stack exchange,提问作者Nneka
相关产品推荐
相关产品推荐

