Omega กำลังสองสำหรับการวัดผลกระทบใน R


10

หนังสือสถิติที่ฉันกำลังอ่านแนะนำให้โอเมก้ากำลังสองเพื่อวัดผลกระทบของการทดลองของฉัน ฉันได้พิสูจน์แล้วว่าใช้การออกแบบการแบ่งส่วน (ผสมผสานระหว่างการออกแบบภายในและระหว่างวิชา) ว่าปัจจัยภายในเรื่องของฉันมีความสำคัญทางสถิติด้วย p <0.001 และ F = 17

ตอนนี้ฉันกำลังมองหาว่าความแตกต่างใหญ่แค่ไหน ... มีการใช้โอเมก้ากำลังสองหา R (หรือ python หรือไม่ฉันรู้ว่า ... ใครจะฝันได้;) การค้นหาบนอินเทอร์เน็ตสำหรับสิ่งที่เกี่ยวข้องกับ R คือ เจ็บปวด*ฉันไม่รู้ว่าฉันจะหาสิ่งของด้วย C ได้อย่างไร

ขอบคุณ!


3
ฉันไม่ทราบถึงฟังก์ชั่นดังกล่าว แต่บางทีใครบางคนสามารถดูสูตรใน Olejnik และ Algina (2003) cps.nova.edu/marker/olejnik2003.pdfและเขียนฟังก์ชั่นได้
Jeromy Anglim

3
@Jeromy การอ้างอิงที่ดี! อันนี้ก็ควรค่าเช่นกัน: สถิติขนาดเอฟเฟ็กต์ที่แนะนำสำหรับการออกแบบมาตรการซ้ำ ๆ (BRM 2005 37 (3)), j.mp/cT9uEQ
chl

2
@chl ขอบคุณ เห็นได้ชัดว่า ezANOVA () ในแพ็คเกจ ez ใน R รายงานกทพ. ทั่วไป
Jeromy Anglim

คำตอบ:


7

ฟังก์ชั่นในการคำนวณโอเมก้าสแควร์นั้นง่ายต่อการเขียน ฟังก์ชั่นนี้ใช้เวลาส่งคืนวัตถุโดยการทดสอบ aov และคำนวณและส่งคืนและโอเมก้ากำลังสอง:

omega_sq <- function(aovm){
    sum_stats <- summary(aovm)[[1]]
    SSm <- sum_stats[["Sum Sq"]][1]
    SSr <- sum_stats[["Sum Sq"]][2]
    DFm <- sum_stats[["Df"]][1]
    MSr <- sum_stats[["Mean Sq"]][2]
    W2 <- (SSm-DFm*MSr)/(SSm+SSr+MSr)
    return(W2)
}

แก้ไข: ฟังก์ชั่นอัพเดทสำหรับรุ่น n-way aov:

omega_sq <- function(aov_in, neg2zero=T){
    aovtab <- summary(aov_in)[[1]]
    n_terms <- length(aovtab[["Sum Sq"]]) - 1
    output <- rep(-1, n_terms)
    SSr <- aovtab[["Sum Sq"]][n_terms + 1]
    MSr <- aovtab[["Mean Sq"]][n_terms + 1]
    SSt <- sum(aovtab[["Sum Sq"]])
    for(i in 1:n_terms){
        SSm <- aovtab[["Sum Sq"]][i]
        DFm <- aovtab[["Df"]][i]
        output[i] <- (SSm-DFm*MSr)/(SSt+MSr)
        if(neg2zero & output[i] < 0){output[i] <- 0}
    }
    names(output) <- rownames(aovtab)[1:n_terms]

    return(output)
}

3

ฉันต้องรายงานเมื่อเร็ว ๆ นี้ ω2.

partialOmegas <- function(mod){
    aovMod <- mod
    if(!any(class(aovMod) %in% 'aov')) aovMod <- aov(mod)
    sumAov     <- summary(aovMod)[[1]]
    residRow   <- nrow(sumAov)
    dfError    <- sumAov[residRow,1]
    msError    <- sumAov[residRow,3]
    nTotal     <- nrow(model.frame(aovMod))
    dfEffects  <- sumAov[1:{residRow-1},1]
    ssEffects  <- sumAov[1:{residRow-1},2]
    msEffects  <- sumAov[1:{residRow-1},3]
    partOmegas <- abs((dfEffects*(msEffects-msError)) /
                  (ssEffects + (nTotal -dfEffects)*msError))
    names(partOmegas) <- rownames(sumAov)[1:{residRow-1}]
    partOmegas
}

มันเป็นฟังก์ชั่นยุ่ง ๆ ที่สามารถทำความสะอาดได้ง่าย มันคำนวณบางส่วนω2และควรใช้กับการออกแบบแบบแฟคทอเรียลระหว่างหัวข้อเท่านั้น


2

ผมขอแนะนำว่าทั่วไปตารางการทางพิเศษแห่งประเทศไทยถือว่า ( เตะ , เตะโทษ ) เป็นมาตรการที่เหมาะสมมากขึ้นของขนาดของผล มันรวมอยู่ในเอาต์พุต ANOVA ในแพ็คเกจ ezสำหรับ R


5
ที่จริงแล้ว eta-squared เป็นสถิติเอนเอียงเชิงบวกอย่างมาก ดังนั้นจึงเป็นสถานการณ์ที่เลวร้ายยิ่งกว่าโอเมก้าสแควร์แม้ว่าจะเป็นเพราะความเรียบง่ายมันจึงเป็นที่นิยมมากกว่า

ฉันเห็นด้วยกับผู้ใช้ข้างต้น นี่คือลิงค์สำหรับสำรองข้อมูล daniellakens.blogspot.nl/2015/06/…
ข้อความถึง


0

Daniel "strengejacke" แพ็คเกจของLüdecke sjstatsไม่สามารถทำโอเมก้าสแควร์, โอเมก้าสแควร์บางส่วนและอื่น ๆ สำหรับ ANOVA รุ่น ลองดูสิ

นี่เป็นบทความสั้น ๆ ที่แสดงให้เห็นว่า:

https://cran.r-project.org/web/packages/sjstats/vignettes/anova-statistics.html

install.packages("sjstats")
library(sjstats)

mod1 <- aov(y~x, data= d.frame)

anova_stats(mod1)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.