Hoe de friedman-test uit te voeren in r


De Friedman-test is een niet-parametrisch alternatief voor ANOVA met herhaalde metingen. Het wordt gebruikt om te bepalen of er al dan niet een statistisch significant verschil bestaat tussen de gemiddelden van drie of meer groepen waarin dezelfde onderwerpen in elke groep voorkomen.

In deze tutorial wordt uitgelegd hoe u de Friedman-test uitvoert in R.

Voorbeeld: de Friedman-test in R

Om de Friedman-test in R uit te voeren, kunnen we de functie friedman.test() gebruiken, die de volgende syntaxis gebruikt:

friedman.test (y, groepen, blokken)

Goud:

  • y: een vector van responswaarden.
  • groepen: een vector van waarden die de ‘groep’ aangeeft waartoe een waarneming behoort.
  • blokken: een vector van waarden die de “blokkerende” variabele aangeeft.

Deze functie produceert een Chi-kwadraat-teststatistiek en een overeenkomstige p-waarde. Als de p-waarde onder een bepaald significantieniveau ligt (veel voorkomende keuzes zijn 0,10, 0,05 en 0,01), dan is er voldoende bewijs dat de gemiddelden tussen elk van de groepen niet gelijk zijn.

Om te illustreren hoe u deze functie kunt gebruiken, zullen we een dataset maken die de reactietijd van vijf patiënten op vier verschillende medicijnen laat zien. Omdat elke patiënt op elk van de vier medicijnen wordt gemeten, zullen we de Friedman-test gebruiken om te bepalen of de gemiddelde reactietijd tussen medicijnen verschilt.

Eerst zullen we de dataset maken:

 #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

Vervolgens zullen we de Friedman-test uitvoeren met de score als de responsvariabele, het medicijn als de groeperingsvariabele en de persoon als de blokkerende variabele:

 #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

De Chi-kwadraat-teststatistiek is 13,56 en de overeenkomstige p-waarde is 0,00357 . Omdat deze p-waarde kleiner is dan 0,05, kunnen we de nulhypothese verwerpen dat de gemiddelde responstijd voor alle vier de geneesmiddelen hetzelfde is. We hebben voldoende bewijs om te concluderen dat het type medicatie dat wordt gebruikt resulteert in statistisch significante verschillen in responstijd.

Hoewel een Friedman-test ons vertelt of er verschillen zijn in de gemiddelde responstijden tussen medicijnen, vertelt deze ons niet specifiek welke medicijnen verschillende gemiddelde responstijden hebben. Om dit te begrijpen, moeten we post-hoc tests uitvoeren.

Voor een Friedman-test is de geschikte post-hoc-test de paarsgewijze Wilcoxon-rangsomtest met een Bonferroni-correctie, die kan worden geïmplementeerd met behulp van de volgende syntaxis:

pairwise.wilcox.test(data$score, data$drug, p.adj = “bonf”)

Goud:

  • x: responsvector
  • g: vectorgroepering
  • p.adj: aanpassingsmethode voor p-waarde; opties zijn holm, hochberg, hommel, bonferroni, BH, BY, fdr en geen

Dit is de syntaxis die we voor ons voorbeeld zullen gebruiken:

 #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 

Dit levert een matrix op die de p-waarde toont voor elke paarsgewijze Wilcoxon-rangsomtest. We kunnen zien dat de enige medicijngroepen met een statistisch significant verschil van 0,10 de groepen 3 en 4 zijn ( p = 0,072 ).

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert