Як використовувати функцію тесту Levene в R?


14

Я новачок у статистиці та R, і у мене проблеми з використанням функції Levene (я хотів би перевірити рівність дисперсії двох зразків). Документація говорить, що я повинен запускати:

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

Але я поняття не маю, що я повинен ставити як y та групу? У мене є два різних зразки, які я хотів би перевірити рівність дисперсії. Чи слід ставити одне зі значень вибірки як y, а друге як параметр групи?

Якісь підказки?

Відповіді:


17

Скажімо, що в R ваш 1-й зразок зберігається у названому векторі, sample1а ваш другий зразок - у названому векторі sample2.

Спочатку потрібно об'єднати два зразки в одному векторі та створити інший вектор, що визначає дві групи:

y <- c(sample1, sample2)

і

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

Тепер ви можете зателефонувати

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

EDIT

Спробувавши це в 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. Не було б бін 1s і 0s зразка 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.