Jak wykonać test friedmana w r
Test Friedmana jest nieparametryczną alternatywą dla ANOVA z powtarzanymi pomiarami. Służy do określenia, czy istnieje statystycznie istotna różnica między średnimi z trzech lub więcej grup, w których w każdej grupie występują ci sami pacjenci.
W tym samouczku wyjaśniono, jak wykonać test Friedmana w języku R.
Przykład: test Friedmana w R
Aby wykonać test Friedmana w R, możemy skorzystać z funkcji friedman.test() , która wykorzystuje następującą składnię:
friedman.test (y, grupy, bloki)
Złoto:
- y: wektor wartości odpowiedzi.
- grupy: wektor wartości wskazujący „grupę”, do której należy obserwacja.
- bloki: wektor wartości wskazujący zmienną „blokującą”.
Ta funkcja generuje statystykę testu Chi-kwadrat i odpowiadającą jej wartość p. Jeśli wartość p jest poniżej pewnego poziomu istotności (najczęściej wybierane wartości to 0,10, 0,05 i 0,01), wówczas istnieją wystarczające dowody na to, że średnie między każdą z grup nie są równe.
Aby zilustrować sposób korzystania z tej funkcji, utworzymy zbiór danych pokazujący czas reakcji pięciu pacjentów na cztery różne leki. Ponieważ każdemu pacjentowi mierzy się każdy z czterech leków, użyjemy testu Friedmana, aby określić, czy średni czas reakcji różni się w zależności od leku.
Najpierw utworzymy zbiór danych:
#create data data <- data.frame(person = rep(1:5, each=4), drug = rep(c(1, 2, 3, 4), times=5), score = c(30, 28, 16, 34, 14, 18, 10, 22, 24, 20, 18, 30, 38, 34, 20, 44, 26, 28, 14, 30)) #view data data person drug score 1 1 1 30 2 1 2 28 3 1 3 16 4 1 4 34 5 2 1 14 6 2 2 18 7 2 3 10 8 2 4 22 9 3 1 24 10 3 2 20 11 3 3 18 12 3 4 30 13 4 1 38 14 4 2 34 15 4 3 20 16 4 4 44 17 5 1 26 18 5 2 28 19 5 3 14 20 5 4 30
Następnie przeprowadzimy test Friedmana, używając wyniku jako zmiennej odpowiedzi, leku jako zmiennej grupującej i osoby jako zmiennej blokującej:
#perform Friedman Test
friedman.test(y=data$score, groups=data$drug, blocks=data$person)
Friedman rank sum test
data: data$score, data$drug and data$person
Friedman chi-squared = 13.56, df = 3, p-value = 0.00357
Statystyka testu chi-kwadrat wynosi 13,56 , a odpowiadająca jej wartość p wynosi 0,00357 . Ponieważ ta wartość p jest mniejsza niż 0,05, możemy odrzucić hipotezę zerową, że średni czas odpowiedzi jest taki sam dla wszystkich czterech leków. Mamy wystarczające dowody, aby stwierdzić, że rodzaj stosowanego leku powoduje statystycznie istotne różnice w czasie reakcji.
Chociaż test Friedmana mówi nam, czy istnieją różnice w średnim czasie reakcji między lekami, nie mówi nam konkretnie, które leki mają inny średni czas reakcji. Aby to zrozumieć, musimy przeprowadzić testy post-hoc.
W przypadku testu Friedmana odpowiednim testem post hoc jest test sumy rang Wilcoxona parami z poprawką Bonferroniego, który można wdrożyć za pomocą następującej składni:
pairwise.wilcox.test(data$score, data$drug, p.adj = „bonf”)
Złoto:
- x: wektor odpowiedzi
- g: grupowanie wektorów
- p.adj: metoda dostosowania wartości p; opcje obejmują holm, hochberg, hommel, bonferroni, BH, BY, fdr i none
Oto składnia, której użyjemy w naszym przykładzie:
#perform post-hoc tests
pairwise.wilcox.test(data$score, data$drug, p.adj = "bonf")
Pairwise comparisons using Wilcoxon rank sum test
data: data$score and data$drug
1 2 3
2 1,000 - -
3 0.449 0.210 -
4 1,000 1,000 0.072
P value adjustment method: bonferroni
Daje to macierz pokazującą wartość p dla każdego testu sumy rang Wilcoxona parami. Widzimy, że jedynymi grupami leków, w których występuje statystycznie istotna różnica na poziomie 0,10, są grupy 3 i 4 ( p = 0,072 ).