Omega al quadrato per misura dell'effetto in R?


10

Il libro di statistiche che sto leggendo raccomanda omega quadrato per misurare gli effetti dei miei esperimenti. Ho già dimostrato usando un disegno a trama divisa (mix di soggetti interni e disegno tra soggetti) che i miei fattori all'interno di soggetti sono statisticamente significativi con p <0,001 e F = 17.

Ora sto cercando di vedere quanto è grande la differenza ... c'è un'implementazione di Omega quadrata da qualche parte per R (o Python? Lo so ... si può sognare;) Cercare su Internet cose relative a R è un dolore il * , non so come riesco a trovare cose con C.

Grazie!


3
Non sono a conoscenza di una tale funzione, ma forse qualcuno potrebbe guardare le formule in Olejnik e Algina (2003) cps.nova.edu/marker/olejnik2003.pdf e scrivere una funzione
Jeromy Anglim

3
@Jeromy Bel riferimento! Anche questo vale la pena guardare: statistiche sulle dimensioni degli effetti consigliate per i disegni di misure ripetute (BRM 2005 37 (3)), j.mp/cT9uEQ
chl

2
@chl Grazie. Apparentemente, ezANOVA () nel pacchetto ez in R riporta eta generalizzata al quadrato.
Jeromy Anglim,

Risposte:


7

Una funzione per calcolare il quadrato di Omega è semplice da scrivere. Questa funzione prende l'oggetto restituito dal test AOV e calcola e restituisce e Omega quadrato:

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

modifica: funzione aggiornata per i modelli aov n-way:

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

Di recente ho dovuto segnalare un .ω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
}

È una funzione disordinata che può essere facilmente ripulita. Calcola il parziale e probabilmente dovrebbe essere usato solo su disegni fattoriali tra soggetti.ω2


2

Suggerirei che il quadrato eta generalizzato sia considerato ( ref , ref ) una misura più appropriata della dimensione dell'effetto. È incluso nell'output ANOVA nel pacchetto ez per R.


5
In realtà, eta-quadrato è una statistica fortemente distorta. È, quindi, molto peggio in questa situazione rispetto agli omega-quadrati, sebbene per la sua semplicità sia più popolare.

Sono d'accordo con l'utente sopra. Ecco un link per il backup. daniellakens.blogspot.nl/2015/06/…
Deleet


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.