2015-03-02 2 views
0

Я выполнил тест kruskal wallis по данным мульти-обработки, где я сравнивал пять различных методов.Показать квалификационные экзамены Kruskal-Wallis

Друг показал мне расчет в spss, и результаты включали средние ранги каждого метода.

В R, я только получаю chi2 и df value и p-value при применении kruskal.test к моим данным, установленным. эти значения равны значениям в 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?

+0

Возможно, вас заинтересуют тесты Данна, которые являются post-hoc-тестами тестов Kruskal-Wallis. 'dunn.test' в R. Я не уверен, как получить медианные ряды из объекта' kruskal.test'. Сожалею. –

ответ

0

Стол, который вы хотите, к сожалению, должен вычислить. Luckely Я сделал функцию для вас:

#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 

Вы не общие данные, так что вы должны выяснить сами, как это будет работать для вашего набор данных.

0

У меня было задание, в котором я должен был это сделать. Создайте кадр данных, где один столбец - это объединенные значения, которые вы оцениваете, один столбец - это категории, к которым принадлежит каждое значение, а последний столбец - ранжирование каждого значения. Функция 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 

Это даст вам таблицу, которая выглядит так.

Смежные вопросы