Wilcox.test用于治疗前后的测量

问题描述 投票:0回答:2

我在R很新,可能没有经验可以排除这个问题是否与以前的帖子密切相关。如果是这样,请接受我的道歉。

我有前后措施(分别为X0变量名和X1变量名)。变量是我导入的.CSV数据集中的列。我对每个变量有11个观察结果,并想测试是否存在真正的差异(使用描述fct(心理包)来计算meadian)。

我的数据集中的某些列不适合此测试,因此我手动编写了所有这些列:

changeipss <- wilcox.test(mydata$X0ipss, mydata$X1ipss)
changeipss

changeqol <- wilcox.test(mydata$X0qol, mydata$X1qol)
changeqol

changeiief <- wilcox.test(mydata$X0iief, mydata$X1oiief)
changeiief

changepsa <- wilcox.test(mydata$X0psa, mydata$X1psa)
changepsa

changeqmax <- wilcox.test(mydata$X0qmax, mydata$X1qmax)
changeqmax

changepvr <- wilcox.test(mydata$X0pvr, mydata$X1pvr)
changepvr

changepv <- wilcox.test(mydata$X0pv, mydata$X1pv)
changepv

changeflow <- wilcox.test(mydata$X0ct_perfusion_flow, mydata$X1ct_perfusion_flow)
changeflow

changectpv <- wilcox.test(mydata$X0pvct, mydata$X1pvct)
changectpv

这是正确的方法吗?对于一些变量,我得到了这个

警告消息:在wilcox.test.default(mydata $ X0ipss,mydata $ X1ipss)中:无法通过关系计算精确的p值

r
2个回答
0
投票

如果数据中有两个相同的值,则称为tie。有联系,等级不再是唯一的,因此你无法计算精确的p值。

还要记住,Wilcoxon测试也假定了非偏斜分布。这意味着它仅适用于配对的双样本案例(“签名等级”)或单个样本案例。

通常如果您正在测试对称性,如果只有几个关系,您不必担心,但重新检查数据的样子。这是一个警告,而不是错误消息。 (你得到一个答案,警告只是为了告诉你,你可能对你的数据类型使用了错误的测试,答案可能不是你想要的)

另外如果你想要你可以看看R中的coin包,它有一个wilcox_test函数,可以在有关系时计算精确的p值


0
投票

考虑将数据框拆分为所有X0和X1变量,然后运行mapply(或其包装器,Map)。这允许您在容器(列表,矩阵,数据框等)中保留类似的对象,而不是充斥您的全局环境并且需要繁琐的个人分配的单个变量。

另外,正如你所看到的,有些变量没有正确地通过wilcox.test运行,为此考虑在tryCatch中包装调用以输出那些失败实例的NA

# SUBSET ONLY X0 VARIABLES
mydata_X0 <- mydata[grep("X0", names(mydata))]
# ORDER COLUMNS
mydata_X0 <- mydata_X0[order(names(mydata_X0))]

# SUBSET ONLY X0 VARIABLES
mydata_X1 <- mydata[grep("X1", names(mydata))]
# ORDER COLUMNS
mydata_X1 <- mydata_X1[order(names(mydata_X1))]

# TRY/CATCH WRAPPER TO wilcox.test
wilcox_test_proc <- function(x, y) {
  tryCatch(wilcox.test(x, y),
           error = function(e) NA)
}

# SIMPLIFIED VERSION
wilcox_test_matrix <- mapply(wilcox_test_proc, mydata_X0, mydata_X1)

# LIST VERSION
wilcox_test_list <- Map(wilcox_test_proc, mydata_X0, mydata_X1)

数据

set.seed(962018)
mydata <- setNames(data.frame(replicate(18, runif(50))),
                   c("X0ipss", "X0quo", "X0oiief", "X0psa", "X0qmax", 
                     "X0pvr", "X0pv", "X0ct_perfusion_flow", "X0pvct",
                     "X1ipss", "X1quo", "X1oiief", "X1psa", "X1qmax", 
                     "X1pvr", "X1pv", "X1ct_perfusion_flow", "X1pvct"))

产量

wilcox_test_matrix

#             X0ct_perfusion_flow                                
# statistic   1198                                               
# parameter   NULL                                               
# p.value     0.7225658                                          
# null.value  0                                                  
# alternative "two.sided"                                        
# method      "Wilcoxon rank sum test with continuity correction"
#             X0ipss                                             
# statistic   1339                                               
# parameter   NULL                                               
# p.value     0.5417935                                          
# null.value  0                                                  
# alternative "two.sided"                                        
# method      "Wilcoxon rank sum test with continuity correction"
#             X0oiief                                            
# statistic   1206                                               
# parameter   NULL                                               
# p.value     0.7642678                                          
# null.value  0                                                  
# alternative "two.sided"                                        
# method      "Wilcoxon rank sum test with continuity correction"
# ...
© www.soinside.com 2019 - 2024. All rights reserved.