Как использовать функцию теста Левена в R?


14

Я новичок в статистике и R, и у меня возникли проблемы с использованием функции Левена (я хотел бы проверить равенство дисперсии двух выборок). В документации сказано, что я должен запустить:

levene.test (у, группа)

Но я понятия не имею, что я должен поставить как у и группа? У меня есть два разных образца, из которых я хотел бы проверить равенство дисперсии. Должен ли я поместить одно из значений образца в качестве y, а второе в качестве параметра группы?

Есть намеки?

Ответы:


17

Скажем, в R ваш 1-й образец хранится в векторе с именем, sample1а 2-й образец в векторе sample2.

Сначала вы должны объединить два образца в один вектор и создать другой вектор, определяющий две группы:

y <- c(sample1, sample2)

и

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

Теперь вы можете позвонить

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

РЕДАКТИРОВАТЬ

При попытке сделать это в R я получил следующее предупреждение:

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

В соответствии с этим, вы должны взглянуть на leveneTest...


Благодарность! Но не могли бы вы быть так добры и объяснить, почему так должно быть? Я хотел бы понять это, чтобы в следующий раз мне не приходилось задавать вопросы и помогать другим.
Якуб

@Jakub: Ну, это так, потому что это было реализовано с использованием этой структуры. В справке говорится, что первый аргумент должен быть переменной ответа, тогда как второй аргумент должен быть переменной группы.
Октябрь

Во многих случаях R, похоже, предпочитает этот тип формата данных, который часто называют «длинным». Пакет изменения формы предоставляет функции, называемые расплавлением и приведением, которые можно использовать для изменения формы ваших данных, но они более сложны, чем то, что вам нужно для простого случая с двумя переменными.
Russellpierce

Просто чтобы подтвердить, это не будет проверять частотные спектры образца 1 и образца 2, правильно? Так, например, скажем, образец 1: 1,0,2,1,0, а образец 2: 1,1,3,0,0. Это не будет складывать 1 и 0 образца 1, чтобы создать распределение образца 1, правильно? Я надеюсь, что мой дополнительный вопрос имеет смысл?
Atticus29

14

Ответ Окрама содержит все важные части. Однако вам не нужно загружать весь Rcmdr, если вы этого не хотите. Соответствующая библиотека - "машина". Но, как показывает ocram, levene.test устарела. Обратите внимание, что устаревание не является изменением функциональности или кода (на данный момент, 18.09.2011). Это просто изменение имени функции. Так что levene.test и leveneTest будут работать одинаково. Для записи я подумал, что приведу пример использования leveneTest и повторно используемого кода для изменения формы для этого простого случая:

#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)

4

Самым простым (на мой взгляд) способом подготовки данных является использование пакета 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)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.