Jak korzystać z funkcji testu Levene'a w R?

14

Jestem nowicjuszem w statystyce i R i mam problem z używaniem funkcji Levene'a (chciałbym sprawdzić równość wariancji dwóch próbek). Dokumentacja mówi, że powinienem uruchomić:

levene.test (y, grupa)

Ale nie mam pojęcia, co powinienem umieścić jako y i grupę? Mam dwie różne próbki, z których chciałbym sprawdzić równość wariancji. Czy powinienem ustawić jedną z wartości próbki jako y, a drugą jako parametr grupy?

Jakieś wskazówki?

Kuba
źródło

Odpowiedzi:

17

Powiedzmy, że w R twoja pierwsza próbka jest przechowywana w wektorze o nazwie, sample1a twoja druga próbka jest przechowywana w wektorze o nazwie sample2.

Najpierw musisz połączyć dwie próbki w jeden wektor i stworzyć inny wektor definiujący dwie grupy:

y <- c(sample1, sample2)

i

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

Teraz możesz zadzwonić

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

EDYTOWAĆ

Gdy próbuję tego w R, otrzymałem następujące ostrzeżenie:

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

Zgodnie z tym powinieneś rzucić okiem na leveneTest...

ocram
źródło
Dzięki! Ale czy byłbyś tak uprzejmy i wyjaśniłbyś, dlaczego tak powinno być? Bardzo chciałbym to zrozumieć, aby następnym razem nie musiałem zadawać pytań i pomagać innym.
Jakub
@Jakub: Cóż, idzie tak, ponieważ został zaimplementowany przy użyciu tej struktury. Pomoc stwierdza, że ​​pierwszy argument musi być zmienną odpowiedzi, podczas gdy drugi argument musi być zmienną grupy.
ocram
W wielu przypadkach R wydaje się preferować ten typ formatu danych, często określany jako „długi”. Pakiet przekształcania udostępnia funkcje o nazwie topienie i rzutowanie, których można używać do przekształcania danych, ale są one bardziej złożone niż to, czego potrzebujesz w przypadku prostej zmiennej o dwóch zmiennych.
russellpierce
Żeby to potwierdzić, nie przetestowałoby to widm częstotliwości próbki 1 i próbki 2, prawda? Powiedzmy na przykład, że próbka 1 to: 1,0,2,1,0, a próbka 2 to: 1,1,3,0,0. Nie utworzyłoby bin 1 i 0 z próbki 1, aby utworzyć rozkład próbki 1, prawda? Mam nadzieję, że moje dalsze pytanie ma sens?
Atticus29,
14

Odpowiedź Ocrama zawiera wszystkie ważne elementy. Jednak nie musisz ładować całego Rcmdr, jeśli nie chcesz. Odpowiednią biblioteką jest „samochód”. Ale jak wskazuje ocram, test levene.test jest przestarzały. Pamiętaj, że wycofanie nie jest zmianą funkcjonalności ani kodu (w tym momencie, 18.09.2011). Jest to po prostu zmiana nazwy funkcji. Więc levene.test i leveneTest będą działać tak samo. Dla przypomnienia, podałem przykład użycia leveneTest i kodu przekształcającego wielokrotnego użytku dla tego prostego przypadku:

#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
źródło
4

Najłatwiejszym (moim zdaniem) sposobem przygotowania danych jest użycie pakietu 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
źródło