R 计算现有循环中Wilcoxon的效果大小
我是一个新手/中级R用户,从未真正接触过循环和编写函数。昨天我无意中发现了一段很好的代码,它允许我对整个数据集进行Wilcoxon测试。然而,我也希望它能计算出效果大小,似乎我无法将该函数添加到现有代码中。如果您有任何意见,我们将不胜感激 威尔科克森环:R 计算现有循环中Wilcoxon的效果大小,r,statistics,R,Statistics,我是一个新手/中级R用户,从未真正接触过循环和编写函数。昨天我无意中发现了一段很好的代码,它允许我对整个数据集进行Wilcoxon测试。然而,我也希望它能计算出效果大小,似乎我无法将该函数添加到现有代码中。如果您有任何意见,我们将不胜感激 威尔科克森环: test.fun <- function(data, col) { c1 <- combn(unique(data$group),2) sigs <- list() for(i in 1:ncol(c1))
test.fun <- function(data, col) {
c1 <- combn(unique(data$group),2)
sigs <- list()
for(i in 1:ncol(c1)) {
sigs[[i]] <- wilcox.test(
as.numeric(data[data$group == c1[1,i],col]),
as.numeric(data[data$group == c1[2,i],col])
)
}
names(sigs) <- paste("Group",c1[1,],"by Group",c1[2,])
tests <- data.frame(Test=names(sigs),
W=unlist(lapply(sigs,function(x) x$statistic)),
p=unlist(lapply(sigs,function(x) x$p.value)),row.names=NULL)
return(tests)
}
test.fun下面是我尝试组合这些函数的步骤
请不要在我的个人资料中警告我不是一个长期专家——我回答问题的动机是a)兴趣和b)我自己的进步。因此,请仔细检查所有结果,然后再相信它。至少在别人纠正我的错误之前,它会让你继续前进:)
因此,考虑到这一点:
首先,您应该从rFromWilcoxon
中删除cat
行,并将其替换为r
然后更改test.fun
如下:
test.fun <- function(data, col, group = 'group') {
c1 <- combn(unique(data[[group]]),2)
N <- nrow(data) / ncol(c1) # Calculates N assuming all groups are equal size
sigs <- list()
for(i in 1:ncol(c1)) {
sigs[[i]] <- wilcox.test(
as.numeric(data[data[[group]] == c1[1, i], col]),
as.numeric(data[data[[group]] == c1[2, i], col])
)
}
r <- lapply(sigs, function(i) rFromWilcox(i, N)) # Applies rFromWilcox function
names(sigs) <- paste("Group",c1[1,],"by Group",c1[2,])
tests <- data.frame(Test = names(sigs),
W = unlist(lapply(sigs,function(x) x$statistic)),
p = unlist(lapply(sigs,function(x) x$p.value)),row.names=NULL,
r = unlist(r))
tests
}
test.fun工作起来很有魅力!谢谢!
test.fun <- function(data, col, group = 'group') {
c1 <- combn(unique(data[[group]]),2)
N <- nrow(data) / ncol(c1) # Calculates N assuming all groups are equal size
sigs <- list()
for(i in 1:ncol(c1)) {
sigs[[i]] <- wilcox.test(
as.numeric(data[data[[group]] == c1[1, i], col]),
as.numeric(data[data[[group]] == c1[2, i], col])
)
}
r <- lapply(sigs, function(i) rFromWilcox(i, N)) # Applies rFromWilcox function
names(sigs) <- paste("Group",c1[1,],"by Group",c1[2,])
tests <- data.frame(Test = names(sigs),
W = unlist(lapply(sigs,function(x) x$statistic)),
p = unlist(lapply(sigs,function(x) x$p.value)),row.names=NULL,
r = unlist(r))
tests
}