r - 治疗前后测量的 Wilcox.test
问题描述
我是 R 的新手,可能没有经验来排除这个问题是否与以前的帖子密切相关。如果是这样,请接受我的道歉。
我有前后测量(分别为 X0variablename 和 X1variablename)。变量是我导入的 .CSV 数据集中的列。我对每个变量有 11 个观察值,并想测试是否存在真正的差异(中位数是使用 describe fct(psych pack)计算的)。
我的数据集中的某些列不适合此测试,因此我手动编写了所有列:
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 值
解决方案
考虑将数据框拆分为所有X0和X1变量,然后运行mapply
(或其包装器Map
)。这允许您将相似的对象保存在容器中(列表、矩阵、数据框等),而不是单个变量淹没您的全局环境并需要繁琐的单独分配。
另外,如您所见,一些变量没有正确地通过wilcox.test
,为此考虑将调用包装在 atryCatch
中以输出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"
# ...
推荐阅读
- javascript - webgl bufferdata 和 enableVertexAttribute 函数需要很多时间
- javascript - 如何获取引导模式的数据并发送 PHP
- git - 将 git 子模块转换为常规目录并保留主树中的历史记录?
- lua - 在 Lua 中截取桌面截图
- visual-studio - Visual Studio 不需要的还原设置
- python - 使用 python 烧瓶的 Slack 事件 API 响应
- iis - 使用 C# 代码在 html 页面中获取登录用户并且无需在 VS 中打开?
- github - git hub上的奇数合并
- node.js - 如何修复mongodb中的重复键错误,并遵守createIndexes方法?
- wso2 - 如何使用 WSO2 在 SOAP API 之间进行路由