จะใช้ฟังก์ชันทดสอบ Levene ใน R ได้อย่างไร?


14

ฉันเป็นมือใหม่สำหรับสถิติและ R และฉันมีปัญหากับการใช้ฟังก์ชัน Levene (ฉันต้องการตรวจสอบความเท่าเทียมกันของความแปรปรวนของสองตัวอย่าง) เอกสารบอกว่าฉันควรจะทำงาน:

levene.test (y, กลุ่ม)

แต่ฉันไม่รู้ว่าควรใส่อะไรเป็นกลุ่ม y? ฉันมีสองตัวอย่างที่แตกต่างกันซึ่งฉันต้องการตรวจสอบความเท่าเทียมกันของความแปรปรวน ฉันควรใส่ค่าตัวอย่างหนึ่งค่าเป็น 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

@Jakub: เอาละมันเป็นแบบนี้เพราะมันถูกนำไปใช้โดยใช้โครงสร้าง วิธีใช้ระบุว่าอาร์กิวเมนต์แรกจะต้องเป็นตัวแปรตอบสนองในขณะที่อาร์กิวเมนต์ที่สองจะต้องเป็นตัวแปรกลุ่ม
ocram

ในหลายกรณี R ดูเหมือนจะชอบรูปแบบข้อมูลประเภทนี้ซึ่งมักเรียกว่า "ยาว" แพคเกจ reshape มีฟังก์ชั่นที่เรียกว่า melt and cast ที่สามารถใช้ในการปรับแต่งข้อมูลของคุณ แต่มันมีความซับซ้อนมากกว่าสิ่งที่คุณต้องการสำหรับสองกรณีแบบง่าย ๆ
russellpierce

เพื่อยืนยันนี่จะไม่ทดสอบสเปกตรัมความถี่ของตัวอย่างที่ 1 และตัวอย่างที่ 2 ใช่ไหม ตัวอย่างเช่นสมมติว่าตัวอย่าง 1 คือ: 1,0,2,1,0 และตัวอย่างที่ 2 คือ: 1,1,3,0,0 มันจะไม่ทำการสุ่มตัวอย่าง 1 และ 0 ของตัวอย่าง 1 เพื่อสร้างการกระจายตัวของตัวอย่างที่ 1 ใช่ไหม ฉันหวังว่าคำถามการติดตามของฉันจะสมเหตุสมผลหรือไม่
Atticus29

14

คำตอบของ Ocram มีชิ้นส่วนที่สำคัญทั้งหมด อย่างไรก็ตามคุณไม่จำเป็นต้องโหลด Rcmdr ทั้งหมดหากคุณไม่ต้องการ ห้องสมุดที่เกี่ยวข้องคือ "รถยนต์" แต่ตามที่ ocram บ่งชี้ levene.test เลิกใช้แล้ว โปรดทราบว่าการเลิกใช้งานไม่ใช่การเปลี่ยนแปลงการทำงานหรือรหัส (ณ จุดนี้ 09/18/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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.