我有以下数据集(这只是数据集的缩减,但它具有较大数据集的所有特征)
df <- structure(list(Modality = c("IMU", "IMU", "IMU", "IMU", "EMG",
"EMG", "EMG", "EMG", "EMG", "EMG", "MULTIMODAL", "MULTIMODAL",
"MULTIMODAL", "MULTIMODAL", "MULTIMODAL", "MULTIMODAL"), Accuracy = c(0.890994094,
0.932236205, 0.920874879, 0.808366656, 0.736169166, 0.727917473,
0.76442499, 0.766358025, 0.672936004, 0.544758539, 0.922476135,
0.958934517, 0.889652539, 0.878411911, 0.800769442, 0.9035499
), Precision = c(0.910120428, 0.935881939, 0.930419589, 0.858438788,
0.783804275, 0.803642164, 0.867418091, 0.826140299, 0.651388637,
0.683146414, 0.931054424, 0.960414109, 0.913705853, 0.892099619,
0.827661119, 0.917972446), Recall = c(0.890994094, 0.932236205,
0.920874879, 0.808366656, 0.736169166, 0.727917473, 0.76442499,
0.766358025, 0.672936004, 0.544758539, 0.922476135, 0.958934517,
0.889652539, 0.878411911, 0.800769442, 0.9035499), F1_Score = c(0.895340797,
0.929767228, 0.923515392, 0.820549586, 0.740460186, 0.743306797,
0.771715283, 0.778685153, 0.654271508, 0.562382109, 0.923856378,
0.958423427, 0.894510388, 0.881315329, 0.804600327, 0.905468385
), Model = c("CNN", "CNN", "LSTM", "CNN-LSTM", "LSTM-CNN", "CNN",
"LSTM", "LSTM-CNN", "CNN-LSTM", "CNN", "CNN", "LSTM", "CNN",
"LSTM-CNN", "CNN-LSTM", "CNN-LSTM")), class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -16L))
我想做箱线图,在其中比较模式并按模型分组。我正在使用以下代码:
library(ggpubr)
library(dplyr)
p <-ggboxplot(df, x = "Model", y = "Accuracy", color = "Modality",
palette = "jco",
add = "jitter", ylab = "Accuracy",
width = 0.7,
lwd = 1.35,
xlab = "Model", legend = "right") +
ggtitle("Boxplot of Accuracy by Model and Modality") +
theme_minimal()
anyNA(df)
剧情是正确的。我为每个模型获得了 3 个箱线图,其中比较了模态。现在我想添加同一模型内模态之间的统计比较。为此,我添加以下代码行:
p + stat_compare_means(comparisons = list(c("EMG", "IMU")), method = "wilcox.test", label = "p.signif")
但没有出现统计检验。问题是我无法在同一模型中添加关于模态的统计测试。
我认为问题与箱线图的布局有关。
?stat_compare_means
帮助文件描述了 comparisons
参数的预期输入,如下所示:
长度为 2 的向量列表。向量中的条目是 x 轴上 2 个值的名称或 2 个整数 对应于感兴趣组的索引,进行比较。
因此,听起来您想要比较的组需要显示在 x 轴上,但您的原始绘图在图例中表示了模态。
此代码翻转 Model 和 Mode 的位置。通过此调整,兴趣比较将按预期显示。
p <-ggboxplot(df, x = "Modality", y = "Accuracy", color = "Model",
palette = "jco",
add = "jitter", ylab = "Accuracy",
width = 0.7,
lwd = 1.35,
xlab = "Modality", legend = "right") +
ggtitle("Boxplot of Accuracy by Model and Modality") +
theme_minimal()+
stat_compare_means(comparisons = list(c("EMG", "IMU")), method = "wilcox.test", label = "p.signif")