Hoe multivariate normaliteitstests uit te voeren in r
Als we willen testen of een enkele variabele normaal verdeeld is of niet, kunnen we een QQ-plot maken om de verdeling te visualiseren of een formele statistische test uitvoeren, zoals een Anderson Darling-test of een Jarque-Bera-test .
Als we echter willen testen of meerdere variabelen normaal verdeeld zijn als groep, moeten we een multivariate normaliteitstest uitvoeren.
In deze zelfstudie wordt uitgelegd hoe u de volgende multivariate normaliteitstests uitvoert voor een bepaalde gegevensset in R:
- Mardia’s test
- Energietest
- Multivariate kurtosis- en scheefheidstesten
Gerelateerd: Als we uitschieters in een multivariate context willen identificeren, kunnen we Mahalanobis-afstand gebruiken.
Voorbeeld: Mardia’s test in R
De Mardia-test bepaalt of een groep variabelen al dan niet een multivariate normale verdeling volgt. De nul- en alternatieve hypothesen van de test zijn als volgt:
H 0 (nul): De variabelen volgen een multivariate normale verdeling.
H a (alternatief): De variabelen volgen geen multivariate normale verdeling.
De volgende code laat zien hoe u deze test in R kunt uitvoeren met behulp van het QuantPsyc- pakket:
library (QuantPsyc) #create dataset set.seed(0) data <- data.frame(x1 = rnorm(50), x2 = rnorm(50), x3 = rnorm(50)) #perform Multivariate normality test mult.norm(data)$ mult.test Beta-hat kappa p-val Skewness 1.630474 13.5872843 0.1926626 Kurtosis 13.895364 -0.7130395 0.4758213
De functie mult.norm() test op multivariate normaliteit in zowel scheefheid als kurtosis van de dataset. Omdat beide p-waarden niet minder dan 0,05 zijn, slagen we er niet in de nulhypothese van de test te verwerpen. We hebben geen bewijs dat de drie variabelen in onze dataset geen multivariate verdeling volgen.
Voorbeeld: energietest in R
Een energietest is een andere statistische test die bepaalt of een groep variabelen al dan niet een multivariate normale verdeling volgt. De nul- en alternatieve hypothesen van de test zijn als volgt:
H 0 (nul): De variabelen volgen een multivariate normale verdeling.
H a (alternatief): De variabelen volgen geen multivariate normale verdeling.
De volgende code laat zien hoe u deze test in R kunt uitvoeren met behulp van het energiepakket :
library (energy) #create dataset set.seed(0) data <- data.frame(x1 = rnorm(50), x2 = rnorm(50), x3 = rnorm(50)) #perform Multivariate normality test mvnorm.etest(data, R= 100 ) Energy test of multivariate normality: estimated parameters data: x, sample size 50, dimension 3, replicates 100 E-statistic = 0.90923, p-value = 0.31
De p-waarde van de test is 0,31 . Omdat dit cijfer niet minder dan 0,05 bedraagt, slagen we er niet in de nulhypothese van de test te verwerpen. We hebben geen bewijs dat de drie variabelen in onze dataset geen multivariate verdeling volgen.
Opmerking: het argument R=100 specificeert 100 boost-toegewezen replica’s die moeten worden gebruikt bij het uitvoeren van de test. Voor gegevenssets met kleinere steekproeven kunt u dit aantal verhogen om een betrouwbaardere schatting van de teststatistiek te verkrijgen.
Aanvullende bronnen
Hoe u een QQ-plot in R maakt en interpreteert
Hoe een Anderson-Darling-test uit te voeren in R
Een Jarque-Bera-test uitvoeren in R
Hoe een Shapiro-Wilk-test uit te voeren in R