Comment utiliser la fonction de test de Levene dans R?

14

Je suis novice dans les statistiques et R et j'ai un problème avec l'utilisation de la fonction Levene (je voudrais vérifier l'égalité de variance de deux échantillons). La documentation indique que je devrais exécuter:

levene.test (y, groupe)

Mais je n'ai aucune idée de ce que je devrais mettre en tant que groupe et y? J'ai deux échantillons différents dont je voudrais vérifier l'égalité de variance. Dois-je mettre une des valeurs de l'échantillon comme y et la seconde comme paramètre de groupe?

Des indices?

Jakub
la source

Réponses:

17

Disons que, dans R, votre 1er échantillon est stocké dans un vecteur nommé sample1et votre 2ème échantillon est stocké dans un vecteur nommé sample2.

Vous devez d'abord combiner vos deux échantillons en un seul vecteur et créer un autre vecteur définissant les deux groupes:

y <- c(sample1, sample2)

et

group <- as.factor(c(rep(1, length(sample1)), rep(2, length(sample2))))

Maintenant, vous pouvez appeler

library(car)
levene.test(y, group)

ÉDITER

En essayant cela dans R, j'ai reçu l'avertissement suivant:

'levene.test' has now been removed. Use 'leveneTest' instead...

Selon cela, vous devriez leveneTestplutôt regarder ...

ocram
la source
Merci! Mais seriez-vous si gentil et expliquez pourquoi il devrait en être ainsi? J'adorerais le comprendre pour que la prochaine fois je n'ai pas à poser de questions et pourrais aider les autres.
Jakub
@Jakub: Eh bien, il en va ainsi car il a été implémenté en utilisant cette structure. L'aide indique que le premier argument doit être la variable de réponse tandis que le deuxième argument doit être la variable de groupe.
ocram
Dans de nombreux cas, R semble préférer ce type de format de données, souvent appelé «long». Le package de remodelage fournit des fonctions appelées fusion et conversion qui peuvent être utilisées pour remodeler vos données, mais elles sont plus complexes que ce dont vous avez besoin pour un cas simple à deux variables.
russellpierce
Juste pour confirmer, cela ne testerait pas les spectres de fréquence de l'échantillon 1 et de l'échantillon 2, n'est-ce pas? Ainsi, par exemple, disons que l'échantillon 1 est: 1,0,2,1,0 et l'échantillon 2 est: 1,1,3,0,0. Cela ne regrouperait pas les 1 et les 0 de l'échantillon 1 pour créer la distribution de l'échantillon 1, n'est-ce pas? J'espère que ma question de suivi a du sens?
Atticus29
14

La réponse d'Ocram contient toutes les pièces importantes. Cependant, vous n'avez pas besoin de charger tout Rcmdr si vous ne le souhaitez pas. La bibliothèque concernée est "voiture". Mais comme l'indique ocram, levene.test est déconseillé. Notez que la dépréciation n'est pas un changement de fonctionnalité ou de code (à ce stade, 18/09/2011). Il s'agit simplement d'un changement dans le nom de la fonction. Levene.test et leveneTest fonctionneront donc de la même manière. Pour mémoire, je pensais fournir un exemple utilisant leveneTest et du code de remodelage réutilisable pour ce cas simple:

#Creating example code
sample1 <- rnorm(20)
sample2 <- rnorm(20)

#General code to reshape two vectors into a long data.frame
twoVarWideToLong <- function(sample1,sample2) {
    res <- data.frame(
        GroupID=as.factor(c(rep(1, length(sample1)), rep(2, length(sample2)))),
        DV=c(sample1, sample2)
    )   
}   

#Reshaping the example data
long.data <- twoVarWideToLong(sample1,sample2)

#There are many different calls here that will work... but here is an example
leveneTest(DV~GroupID,long.data)
russellpierce
la source
4

La façon la plus simple (à mon avis) de préparer les données est d'utiliser le package reshape2:

#Load packages
library(reshape2)
library(car)

#Creating example data
sample1 <- rnorm(20)
sample2 <- rnorm(20)

#Combine data
sample <- as.data.frame(cbind(sample1, sample2))

#Melt data
dataset <- melt(sample)

#Compute test
leveneTest(value ~ variable, dataset)
Jot eN
la source