Omega ao quadrado para medida de efeito em R?

10

O livro de estatísticas que estou lendo recomenda o ômega ao quadrado para medir os efeitos de meus experimentos. Eu já provei usando um design de plotagem dividida (mistura de assuntos entre sujeitos e entre sujeitos) que meus fatores dentro dos sujeitos são estatisticamente significativos com p <0,001 e F = 17.

Agora estou olhando para ver quão grande é a diferença ... existe uma implementação de ômega ao quadrado em algum lugar para R (ou python? Eu sei ... alguém pode sonhar;) Pesquisando na Internet por coisas relacionadas a R é um dor o * , eu não sei como consigo encontrar coisas com C.

obrigado!

leve
fonte
3
Não conheço essa função, mas talvez alguém possa olhar para as fórmulas de Olejnik e Algina (2003) cps.nova.edu/marker/olejnik2003.pdf e escrever uma função
Jeromy Anglim,
3
@ Jeremy Nice referência! Também vale a pena procurar esta: Estatísticas de tamanho de efeito recomendadas para desenhos de medidas repetidas (BRM 2005 37 (3)), j.mp/cT9uEQ
chl
2
@chl Obrigado. Aparentemente, ezANOVA () no pacote ez no R reporta eta ao quadrado generalizado.
precisa saber é o seguinte

Respostas:

7

Uma função para calcular ômega ao quadrado é simples de escrever. Essa função pega o objeto retornado pelo teste aov e calcula e retorna e ômega ao quadrado:

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

edit: função atualizada para os modelos nov-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)
}
Janak Mayer
fonte
3

Eu tive que relatar recentemente um .ω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
}

É uma função confusa que pode ser facilmente limpa. Ele calcula o parcial e provavelmente deve ser usado apenas em projetos fatoriais entre sujeitos.ω2

Stephen Martin
fonte
2

Eu sugeriria que o quadrado eta generalizado seja considerado ( ref , ref ) uma medida mais apropriada do tamanho do efeito. Ele está incluído na saída ANOVA no pacote ez para R.

Mike Lawrence
fonte
5
Na verdade, o eta-quadrado é uma estatística altamente positiva. É, portanto, muito pior nessa situação do que o ômega-quadrado, embora, devido à sua simplicidade, seja mais popular.
Eu concordo com o usuário acima. Aqui está um link para fazer backup. daniellakens.blogspot.nl/2015/06/...
Deleet