Как использовать функцию теста Левена в 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.