Een cramer-von mises-test uitvoeren in r (met voorbeelden)
De Cramer-Von Mises-test wordt gebruikt om te bepalen of een steekproef al dan niet uit eennormale verdeling komt.
Dit type test is handig om te bepalen of een bepaalde gegevensset al dan niet uit een normale verdeling komt, wat een veelgebruikte aanname is in veel statistische tests, waaronder regressie , ANOVA , t-tests en vele andere. ‚anderen.
We kunnen eenvoudig een Cramer-Von Mises-test uitvoeren met behulp van de cvm.test() functie uit het goftest- pakket in R.
Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.
Voorbeeld 1: Cramer-Von Mises-test op normale gegevens
De volgende code laat zien hoe u een Cramer-Von Mises-test uitvoert op een gegevensset met steekproefomvang n=100:
library (goftest) #make this example reproducible set. seeds (0) #create dataset of 100 random values generated from a normal distribution data <- rnorm(100) #perform Cramer-Von Mises test for normality cvm. test (data, ' pnorm ') Cramer-von Mises test of goodness-of-fit Null hypothesis: Normal distribution Parameters assumed to be fixed data:data omega2 = 0.078666, p-value = 0.7007
De p-waarde van de test blijkt 0,7007 te zijn.
Omdat deze waarde niet kleiner is dan 0,05, kunnen we aannemen dat de steekproefgegevens afkomstig zijn uit een normaal verdeelde populatie.
Dit resultaat zou niet verrassend moeten zijn, aangezien we de voorbeeldgegevens hebben gegenereerd met behulp van de functie rnorm() , die willekeurige waarden genereert uit een standaard normale verdeling .
Gerelateerd: Een gids voor dnorm, pnorm, qnorm en rnorm in R
We kunnen ook een histogram maken om visueel te verifiëren dat de voorbeeldgegevens normaal verdeeld zijn:
hist(data, col=' steelblue ')
We kunnen zien dat de verdeling vrij klokvormig is met een piek in het midden van de verdeling, wat typerend is voor normaal verdeelde gegevens.
Voorbeeld 2: Cramer-Von Mises-test op niet-normale gegevens
De volgende code laat zien hoe je een Cramer-Von Mises-test uitvoert op een dataset met een steekproefomvang van 100, waarbij de waarden willekeurig worden gegenereerd op basis van een Poisson-verdeling :
library (goftest) #make this example reproducible set. seeds (0) #create dataset of 100 random values generated from a Poisson distribution data <- rpois(n=100, lambda=3) #perform Cramer-Von Mises test for normality cvm. test (data, ' pnorm ') Cramer-von Mises test of goodness-of-fit Null hypothesis: Normal distribution Parameters assumed to be fixed data:data omega2 = 27.96, p-value < 2.2e-16
De p-waarde van de test blijkt extreem laag te zijn.
Omdat deze waarde kleiner is dan 0,05, hebben we voldoende bewijs om te zeggen dat de steekproefgegevens niet afkomstig zijn van een normaal verdeelde populatie.
Dit resultaat zou niet verrassend moeten zijn, aangezien we de voorbeeldgegevens hebben gegenereerd met behulp van de functie rpois() , die willekeurige waarden genereert uit een Poisson-verdeling.
Gerelateerd: Een gids voor dpois, ppois, qpois en rpois in R
We kunnen ook een histogram maken om visueel te zien dat de voorbeeldgegevens niet normaal verdeeld zijn:
hist(data, col=' coral2 ')
We kunnen zien dat de verdelingrechtsscheef is en niet de typische „klokvorm“ heeft die hoort bij een normale verdeling.
Ons histogram komt dus overeen met de resultaten van de Cramer-Von Mises-test en bevestigt dat onze voorbeeldgegevens niet uit een normale verdeling komen.
Wat te doen met niet-normale gegevens
Als een bepaalde dataset niet normaal verdeeld is , kunnen we vaak een van de volgende transformaties uitvoeren om deze normaler te maken:
1. Logtransformatie: transformeer de responsvariabele van y naar log(y) .
2. Vierkantsworteltransformatie: Transformeer de responsvariabele van y naar √y .
3. Derdemachtsworteltransformatie: transformeer de responsvariabele van y naar y 1/3 .
Door deze transformaties uit te voeren, benadert de responsvariabele doorgaans de normale verdeling.
Raadpleeg deze tutorial om te zien hoe u deze transformaties in de praktijk kunt uitvoeren.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere normaliteitstests in R kunt uitvoeren:
Hoe een Shapiro-Wilk-test uit te voeren in R
Hoe een Anderson-Darling-test uit te voeren in R
Hoe een Kolmogorov-Smirnov-test uit te voeren in R