使用R语言开展one-way ANOVA时分组统计代码警告问题咨询
警告产生原因
- 核心错误是你在
dplyr管道操作中给列名加了单引号,导致列名被识别为字符串常量而非数据框的列变量:group_by(df, 'MeasurementTool')里的'MeasurementTool'是普通字符串,不会按照测量工具类型完成分组mean('MeshOpening')里的'MeshOpening'是字符串,不符合mean()函数要求的数值输入,因此返回NA并触发类型不匹配的警告
修正方案及完整one-way ANOVA分析代码
# 先加载依赖包,若未安装先运行 install.packages("tidyverse") library(tidyverse) # 原始数据定义代码无需修改 df<-structure(list(MeasurementTool = c("Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge"), MeshOpening = c(157L, 155L, 160L, 160L, 161L, 160L, 158L, 161L, 162L, 162L, 160L, 163L, 158L, 160L, 161L, 165L, 164L, 158L, 164L, 163L, 159L, 158L, 165L, 164L, 159L, 160L, 158L, 159L, 160L, 163L, 159L, 160L, 158L, 158L, 158L, 162L, 160L, 159L, 159L, 159L, 159L, 159L, 159L, 155L, 156L, 156L, 158L, 160L, 156L, 155L, 160L, 160L, 157L, 159L, 158L, 155L, 158L, 157L, 156L, 158L)), row.names = c(NA, -60L), class = "data.frame") df$MeasurementTool <- as.factor(df$MeasurementTool) # 修正后的分组统计代码:去掉列名的引号即可正常计算 df %>% group_by(MeasurementTool) %>% summarise( count = n(), mean = mean(MeshOpening, na.rm = TRUE), sd = sd(MeshOpening, na.rm = TRUE) ) # 执行one-way ANOVA anova_model <- aov(MeshOpening ~ MeasurementTool, data = df) # 输出ANOVA分析结果,若Pr(>F)值小于0.05则说明不同测量工具的测量结果存在显著差异 summary(anova_model) # 可选:方差齐性检验(验证ANOVA前提假设,p值大于0.05说明满足方差齐性) bartlett.test(MeshOpening ~ MeasurementTool, data = df) # 可选:事后多重比较,输出具体哪两组测量工具的结果存在显著差异 TukeyHSD(anova_model)
内容的提问来源于stack exchange,提问作者Jordan Woolfrey
相关产品推荐
相关产品推荐

