Mann-Whitney U检验对象未找到报错的解决与代码修正
问题解决:
wilcox.test报错修复及代码正确性验证 一、报错原因与修复
报错“object 'PREOP_MPTA' not found”的核心原因是未正确指定变量所在的数据框环境:
- 直接使用变量名
PREOP_MPTA,R无法定位到DLO_HYBRID数据框中的对应变量; - 原代码末尾直接写
DLO_HYBRID未指定参数名,R无法识别这是数据来源。
两种修复写法:
- 用
$明确引用数据框变量
wilcox.test(DLO_HYBRID$PREOP_MPTA, DLO_HYBRID$POSTOP_MPTA, alternative = "two.sided", mu = 0, paired = FALSE, exact = NULL, correct = TRUE, conf.int = FALSE, conf.level = 0.95, tol.root = 1e-4, digits.rank = Inf)
- 用
data参数指定数据框
wilcox.test(PREOP_MPTA, POSTOP_MPTA, data = DLO_HYBRID, alternative = "two.sided", mu = 0, paired = FALSE, exact = NULL, correct = TRUE, conf.int = FALSE, conf.level = 0.95, tol.root = 1e-4, digits.rank = Inf)
二、原代码的正确性问题
你的场景是同一样本的术前术后配对数据,原代码存在关键逻辑错误:
- 错误使用
paired = FALSE:Mann-Whitney U检验(paired=FALSE)适用于独立样本,而配对样本的非参数检验应该用Wilcoxon符号秩检验,需将paired设为TRUE。 - 多余语法:
alternative = ("two.sided")中的括号可以省略,直接写alternative = "two.sided"即可。
正确的配对Wilcoxon检验代码
针对你的配对数据场景,推荐两种更合理的写法:
- 直接指定配对变量
wilcox.test(PREOP_MPTA, POSTOP_MPTA, data = DLO_HYBRID, alternative = "two.sided", mu = 0, paired = TRUE, correct = TRUE)
- 利用已有的差值变量
DELTA-MPTA(注意变量名含连字符,需用反引号括起)
wilcox.test(DLO_HYBRID$`DELTA-MPTA`, mu = 0, alternative = "two.sided")
内容的提问来源于stack exchange,提问作者Ahmed Mabrouk
相关产品推荐
相关产品推荐

