Sont ces formules de transformation P, LSD, MSD, HSD, CI, à SE comme une estimation exacte ou gonflé / conservateur de

11

Contexte

Je mène une méta-analyse qui inclut des données publiées précédemment. Souvent, les différences entre les traitements sont signalées avec les valeurs P, les différences les moins significatives (LSD) et d'autres statistiques, mais ne fournissent aucune estimation directe de la variance.

Dans le contexte du modèle que j'utilise, une surestimation de la variance est acceptable.

Problème

Voici une liste de transformations vers S E = SE (Saville 2003)que je considère,rétroaction appréciée; ci-dessous, je suppose queα=0,05donc1- α / 2=0,975 et les variables sont normalement distribuées sauf indication contraire:SE=MSE/n α=0.051α/2=0.975

Des questions:

  1. étant donné , n et les moyens de traitement ˉ X 1 et ˉ X 2 S E = ˉ X 1 - ˉ X 2PnX¯1X¯2

    SE=X¯1X¯2t(1P2,2n2)2/n
  2. αnbbn=b

    SE=LSDt(0.975,n)2bn
  3. nα2n2

    SE=MSDt(0.975,2n2)2
  4. αn

    SE=CIt(α/2,n)
  5. nq

    SE=HSDq(0.975,n)

Une fonction R pour encapsuler ces équations:

  1. Exemples de données:

    data <- data.frame(Y=rep(1,5), 
                       stat=rep(1,5), 
                       n=rep(4,5), 
                       statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD') 
    
  2. Exemple d'utilisation:

    transformstats(data)    
    
  3. La transformstatsfonction:

    transformstats <- function(data) {
      ## Transformation of stats to SE
      ## transform SD to SE
      if ("SD" %in% data$statname) {
        sdi <- which(data$statname == "SD")
        data$stat[sdi] <- data$stat[sdi] / sqrt(data$n[sdi])
        data$statname[sdi] <- "SE"
          }
      ## transform MSE to SE
      if ("MSE" %in% data$statname) {
        msei <- which(data$statname == "MSE")
        data$stat[msei] <- sqrt (data$stat[msei]/data$n[msei])
        data$statname[msei] <- "SE"
      }
      ## 95%CI measured from mean to upper or lower CI
      ## SE = CI/t
      if ("95%CI" %in% data$statname) {
        cii <- which(data$statname == '95%CI')
        data$stat[cii] <- data$stat[cii]/qt(0.975,data$n[cii])
        data$statname[cii] <- "SE"
      }
      ## Fisher's Least Significant Difference (LSD)
      ## conservatively assume no within block replication
      if ("LSD" %in% data$statname) {
        lsdi <- which(data$statname == "LSD")
        data$stat[lsdi] <- data$stat[lsdi] / (qt(0.975,data$n[lsdi]) * sqrt( (2 * data$n[lsdi])))
        data$statname[lsdi] <- "SE"
      }
      ## Tukey's Honestly Significant Difference (HSD),
      ## conservatively assuming 3 groups being tested so df =2
      if ("HSD" %in% data$statname) {
        hsdi <- which(data$statname == "HSD" & data$n > 1)
        data$stat[hsdi] <- data$stat[hsdi] / (qtukey(0.975, data$n[lsdi], df = 2))
        data$statname[hsdi] <- "SE"
      }              
      ## MSD Minimum Squared Difference
      ## MSD = t_{\alpha/2, 2n-2}*SD*sqrt(2/n)
      ## SE  = MSD*n/(t*sqrt(2))
      if ("MSD" %in% data$statname) {
        msdi <- which(data$statname == "MSD")
        data$stat[msdi] <- data$stat[msdi] * data$n[msdi] / (qt(0.975,2*data$n[lsdi]-2)*sqrt(2))
        data$statname[msdi] <- "SE"
      }
      if (FALSE %in% c('SE','none') %in% data$statname) {
        print(paste(trait, ': ERROR!!! data contains untransformed statistics'))
      }
      return(data)
    }
    

Les références

Saville 2003Can J. Exptl Psych. (pdf)

Rosenberg et al 2004 (lien)

Wang et al. 2000 Env. Tox. et Chem 19 (1): 113-117 (lien)

David
la source
Je ne sais pas si la plupart des CI sont vraiment calculés via des valeurs t ou plutôt via des valeurs z. Cependant, sur des ns plus grands (> 30), cela ne devrait pas faire beaucoup de différence.
Henrik
nn

Réponses:

7

Votre équation LSD semble bien. Si vous voulez revenir à la variance et que vous avez une statistique récapitulative qui dit quelque chose sur la variabilité ou la signification d'un effet, vous pouvez presque toujours revenir à la variance - il vous suffit de connaître la formule. Par exemple, dans votre équation pour LSD que vous voulez résoudre pour MSE, MSE = (LSD / t _) ^ 2/2 * b

John
la source
Pour MSD, si MSD = t_ {alpha, 2n-2} * sd sqrt (2 / n), SE = MSD n / (t_ {alpha, n} * sqrt (2)) est-il correct?
David LeBauer
7

Je ne peux qu'être d'accord avec John. De plus, peut - être cet article de David Saville vous aide-t-il avec une formule pour recalculer les mesures de variabilité à partir des LSD et al.:
Saville DJ (2003). Statistiques de base et incohérence de plusieurs procédures de comparaison. Journal canadien de psychologie expérimentale, 57, 167-175

MISE À JOUR:
Si vous recherchez plus de formules pour convertir entre différentes tailles d'effet, les livres sur la méta-analyse devraient en fournir beaucoup. Cependant, je ne suis pas un expert dans ce domaine et je ne peux pas en recommander un.
Mais, je me souviens que le livre de Rosenthal et Rosnow a aidé une fois avec une formule:
Essentials of Behavioral Research: Methods and Data Analysis
De plus, j'ai entendu beaucoup de bonnes choses sur les formules dans ce livre de Rosenthal, Rosnow & Rubin (bien que Je ne l'ai jamais utilisé):
Contrastes et tailles d'effet dans la recherche comportementale: une approche corrélationnelle (vous devriez certainement l'essayer si une bibliothèque à proximité en dispose).

Si cela ne suffit pas, posez peut-être une autre question sur la littérature pour convertir les tailles d'effet pour les méta-analyses. Peut-être que quelqu'un de plus en méta-analyse a des recommandations plus fondées.

Henrik
la source
0

Vous pouvez envisager d'essayer le package R compute.es . Il existe plusieurs fonctions pour dériver les estimations de la taille de l'effet et la variance de la taille de l'effet.

utilisateur3752
la source
c'est un joli package que vous avez écrit, mais je suis intéressé par l'estimation de l'échantillon SE, et ces fonctions semblent donner des estimations de la variance pour les tailles d'effet de la méta-analyse, alors que je voudrais inférer la variance de la population (par exemple, mise à l'échelle pour les données d'origine). Pourriez-vous fournir un exemple de la façon dont les fonctions du compute.espackage pourraient être utilisées pour répliquer les équations et la fonction que j'ai écrites ci-dessus?
David LeBauer