显示 Kruskal-Wallis 测试等级

Posted

技术标签:

【中文标题】显示 Kruskal-Wallis 测试等级【英文标题】:Show Kruskal-Wallis test ranks 【发布时间】:2015-05-03 00:41:52 【问题描述】:

我对多重处理数据进行了 kruskal wallis 检验,比较了五种不同的方法。

朋友给我看了spss中的计算,结果包括了每种方法的平均排名。

在 R 中,将kruskal.test 应用于我的数据集时,我只得到chi2df valuep-value。这些值等于 spss 中的值,但我没有得到任何排名。

如何打印计算的等级? 我的代码如下所示:

 comparison <- kruskal.test(all,V3,p.adj="bon",group=FALSE, main="over")

如果我打印比较,我会得到以下信息:

Kruskal-Wallis rank sum test
data:  all
Kruskal-Wallis chi-squared = 131.4412, df = 4, p-value < 2.2e-16

但我想从 spss 获得类似这样的额外输出:

Type    H   Middle Rank
1,00    57  121.11
2,00    57  148.32
3,00    57  217.49
4,00    57  53.75
5,00    57  174.33
total   285 

如何在 r 中完成这项工作?

【问题讨论】:

您可能对 Dunn 检验感兴趣,它是 Kruskal-Wallis 检验的事后检验。 R 中的dunn.test。我不确定如何从kruskal.test 对象中获得中位数排名。对不起。 【参考方案1】:

不幸的是,您需要自己计算的表格。幸运的是我为你做了一个函数:

#create some random data
ozone <- airquality$Ozone
names(ozone) <- airquality$Month


spssOutput <- function(vector) 
  # This function takes your data as one long
  # vector and ranks it. After that it computes 
  # the mean rank of each group. The groupes
  # need to be given as names to the vector.
  # the function returns a data frame with
  # the results in SPSS style.

  ma <- matrix(, ncol=3, nrow= 0)
  r  <- rank(vector, na.last = NA)
  to <- 0
  for(n in unique(names(r)))
    # compute the rank mean for group n
    g  <- r[names(r) == n]
    gt <- length(g)
    rm <- sum(g)/gt
    to <- to + gt
    ma <- rbind(ma, c(n, gt, rm))
  
  colnames(ma) <- c("Type","H","Middle Rank")
  ma <- rbind(ma, c("total", to, ""))
  as.data.frame(ma)


# calculate everything
out <- spssOutput(ozone)
print(out, row.names= FALSE)
kruskal.test(Ozone ~ Month, data = airquality) 

这将为您提供以下输出:

Type    H      Middle Rank
 5     26 36.6923076923077
 6      9 48.7222222222222
 7     26 77.9038461538462
 8     26 75.2307692307692
 9     29 48.6896551724138
total 116                 

Kruskal-Wallis rank sum test

data:  Ozone by Month
Kruskal-Wallis chi-squared = 29.2666, df = 4, p-value = 6.901e-06

您尚未共享您的数据,因此您必须自己弄清楚这将如何适用于您的数据集。

【讨论】:

【参考方案2】:

我有一个任务,我必须这样做。制作一个数据框,其中一列是您要排名的组合值,一列是每个值所属的类别,最后一列是每个值的排名。 rank() 函数是实际排名所需的函数。代码如下所示:

low <- c(0.56, 0.57, 0.58, 0.62, 0.64, 0.65, 0.67, 0.68, 0.74, 0.78, 0.85, 0.86)
medium <- c(0.70, 0.74, 0.75, 0.76, 0.78, 0.79, 0.80, 0.82, 0.83, 0.86)
high <- c(0.65, 0.73, 0.74, 0.76, 0.81,0.82, 0.85, 0.86, 0.88, 0.90)

data.value <- c(low, medium, high)
data.category <- c(rep("low", length(low)), rep("medium", length(medium)), rep("high", length(high)) )
data.rank <- rank(data.value)
data <- data.frame(data.value, data.category, data.rank)
data
         data.value data.category data.rank
1        0.56           low       1.0
2        0.57           low       2.0
3        0.58           low       3.0
4        0.62           low       4.0
5        0.64           low       5.0
6        0.65           low       6.5
7        0.67           low       8.0
8        0.68           low       9.0
9        0.74           low      13.0
10       0.78           low      18.5
11       0.85           low      26.5
12       0.86           low      29.0
13       0.70        medium      10.0
14       0.74        medium      13.0
15       0.75        medium      15.0
16       0.76        medium      16.5
17       0.78        medium      18.5
18       0.79        medium      20.0
19       0.80        medium      21.0
20       0.82        medium      23.5
21       0.83        medium      25.0
22       0.86        medium      29.0
23       0.65          high       6.5
24       0.73          high      11.0
25       0.74          high      13.0
26       0.76          high      16.5
27       0.81          high      22.0
28       0.82          high      23.5
29       0.85          high      26.5
30       0.86          high      29.0
31       0.88          high      31.0
32       0.90          high      32.0

这将为您提供一个如下所示的表格。

【讨论】:

以上是关于显示 Kruskal-Wallis 测试等级的主要内容,如果未能解决你的问题,请参考以下文章

在进行 Kruskal-Wallis 之后,我应该进行哪些事后测试?

R中列表子列表之间的Kruskal-Wallis测试

如何处理 Matlab 中 Kruskal-Wallis 测试中的缺失值?

R - stat_compare_means 从 Kruskal-Wallis 测试返回不同的值

python秩和检验(Kruskal-Wallis H Test)

带有调整 p 值的 R 的 Kruskal-Wallis 检验