Omega au carré pour la mesure de l'effet dans R?

10

Le livre de statistiques que je lis recommande l'oméga carré pour mesurer les effets de mes expériences. J'ai déjà prouvé en utilisant un plan de parcelle divisé (mélange de plans intra-sujets et inter-sujets) que mes facteurs intra-sujets sont statistiquement significatifs avec p <0,001 et F = 17.

Maintenant, je cherche à voir quelle est la différence ... y a-t-il une implémentation d'oméga au carré quelque part pour R (ou python? Je sais ... on peut rêver;) La recherche sur Internet de trucs liés à R est un la douleur * , je ne sais pas comment j'arrive à trouver des trucs avec C.

Merci!

levesque
la source
3
Je ne connais pas une telle fonction, mais peut-être que quelqu'un pourrait regarder les formules dans Olejnik et Algina (2003) cps.nova.edu/marker/olejnik2003.pdf et écrire une fonction
Jeromy Anglim
3
@Jeromy Nice reference! Celui-ci vaut également la peine d'être étudié: Statistiques de taille d'effet recommandées pour les plans de mesures répétées (BRM 2005 37 (3)), j.mp/cT9uEQ
chl
2
@chl Merci. Apparemment, ezANOVA () dans le paquet ez dans R rapporte généralisé eta au carré.
Jeromy Anglim

Réponses:

7

Une fonction pour calculer les oméga au carré est simple à écrire. Cette fonction prend l'objet retourné par le test aov, et calcule et retourne et oméga au carré:

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: fonction mise à jour pour les modèles aov à n voies:

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
la source
3

J'ai dû signaler récemment 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
}

C'est une fonction désordonnée qui peut être facilement nettoyée. Il calcule les partiels et ne devrait probablement être utilisé que sur des plans factoriels entre sujets.ω2

Stephen Martin
la source
2

Je suggère que le carré éta généralisé soit considéré ( ref , ref ) comme une mesure plus appropriée de la taille de l'effet. Il est inclus dans la sortie ANOVA dans le package ez pour R.

Mike Lawrence
la source
5
En fait, eta-carré est une statistique fortement biaisée positivement. Il est donc bien pire dans cette situation que l'oméga carré, bien qu'en raison de sa simplicité, il soit plus populaire.
Je suis d'accord avec l'utilisateur ci-dessus. Voici un lien pour le sauvegarder. daniellakens.blogspot.nl/2015/06/…
Deleet