ggstatsplot报行数不一致错误,但数据实际行数相同的问题咨询
问题描述
我有一个数据框:
data <- structure(list(day = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 4L), levels = c("6", "10", "13", "26"), class = "factor"), measurement = c(114.243333333333, 114.473333333333, 115.276666666667, 114.243333333333, 114.51, 115.3, 115.476666666667, 115.56)), class = "data.frame", row.names = c(NA, -8L))
当我尝试用ggstatsplot绘图:
library(ggstatsplot) ggbetweenstats(data = data, x = day, y = measurement)
出现如下错误:
Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 0, 1
但实际上两个列的长度是相同的:
> length(data$day) [1] 8 > length(data$measurement) [1] 8
请问这是什么原因?
问题原因与解决办法
这个报错的核心原因是每个分组的样本量太小(你的数据里每个day水平仅2个观测值),导致ggbetweenstats默认执行的参数统计检验(如单因素方差分析)无法计算出有效结果,进而在整合统计结果与绘图数据时出现行数不匹配的问题。
有两种可行的解决方式:
- 方法一:跳过统计检验,仅绘制可视化图形
修改代码关闭统计结果的计算与展示模块:library(ggstatsplot) ggbetweenstats(data = data, x = day, y = measurement, bf.message = FALSE, results.subtitle = FALSE) - 方法二:改用适配小样本的非参数检验
指定使用克鲁斯卡尔-沃利斯非参数检验,适配小样本场景:library(ggstatsplot) ggbetweenstats(data = data, x = day, y = measurement, type = "nonparametric")
另外,也可以尝试更新ggstatsplot到最新版本,新版本对小样本的兼容性有所优化:
install.packages("ggstatsplot")
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

