Czy te formuły do ​​przekształcania P, LSD, MSD, HSD, CI do SE jako dokładne lub zawyżone / zachowawcze oszacowanie prawidłowe?


11

tło

Przeprowadzam metaanalizę, która obejmuje wcześniej opublikowane dane. Często różnice między terapiami są zgłaszane z wartościami P, różnicami najmniej znaczącymi (LSD) i innymi statystykami, ale nie zapewniają bezpośredniego oszacowania wariancji.

W kontekście modelu, którego używam, przeszacowanie wariancji jest w porządku.

Problem

Oto lista transformacji do której (Saville 2003), które rozważam, mile widziane opinie; poniżej zakładam, że więc i zmienne są normalnie rozmieszczone, chyba że zaznaczono inaczej:S E = SE α=0,051- α / 2=0,975SE=MSE/n α=0.051α/2=0.975

Pytania:

  1. podane , , a środki leczenia in ˉ X 1 ˉ X 2 S E = ˉ X 1 - ˉ X 2PnX¯1X¯2

    SE=X¯1X¯2t(1P2,2n2)2/n
  2. biorąc pod uwagę LSD (Rosenberg 2004) , , , gdzie jest liczbą bloków, a domyślnie dla RCBD αnbbn=b

    SE=LSDt(0.975,n)2bn
  3. biorąc pod uwagę MSD (minimalna znacząca różnica) (Wang 2000) , , , df =nα2n2

    SE=MSDt(0.975,2n2)2
  4. biorąc pod uwagę 95% przedział ufności (Saville 2003) (mierzony od średniej do górnej lub dolnej granicy ufności), , iαn

    SE=CIt(α/2,n)
  5. biorąc pod uwagę HSD Tukeya, , gdzie jest „statystyką zakresu uczonego”,nq

    SE=HSDq(0.975,n)

Funkcja R do enkapsulacji tych równań:

  1. Przykładowe dane:

    data <- data.frame(Y=rep(1,5), 
                       stat=rep(1,5), 
                       n=rep(4,5), 
                       statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD') 
    
  2. Przykład użycia:

    transformstats(data)    
    
  3. transformstatsFunkcja:

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

Bibliografia

Saville 2003 Can J. Exptl Psych. (pdf)

Rosenberg i in. 2004 (link)

Wang i in. 2000 Środowisko Tox. i Chem 19 (1): 113-117 (link)


Nie jestem pewien, czy większość CI jest naprawdę obliczana na podstawie wartości t, czy raczej na podstawie wartości z. Jednak w przypadku większych ns (> 30) nie powinno to mieć większego znaczenia.
Henrik

@Henrik dla małego , statystyka t jest właściwa, a jak powiedziałeś, gdy wzrasta, t zbliża się do Z. Zobacz także math.stackexchange.com/q/23246/3733nnn
David LeBauer

Odpowiedzi:


7

Twoje równanie LSD wygląda dobrze. Jeśli chcesz wrócić do wariancji i masz podsumowującą statystykę, która mówi coś o zmienności lub znaczeniu efektu, to prawie zawsze możesz wrócić do wariancji - wystarczy znać formułę. Na przykład w równaniu dla LSD, które chcesz rozwiązać dla MSE, MSE = (LSD / t _) ^ 2/2 * b


W przypadku MSD, jeśli MSD = t_ {alfa, 2n-2} * sd sqrt (2 / n), czy SE = MSD n / (t_ {alpha, n} * sqrt (2)) jest poprawne?
David LeBauer,

7

Mogę się tylko zgodzić z Johnem. Co więcej, być może ten artykuł Davida Saville'a pomaga w sformułowaniu obliczenia miar zmienności z LSDs i in .:
Saville DJ (2003). Podstawowe statystyki i niespójność wielu procedur porównawczych. Canadian Journal of Experimental Psychology, 57, 167–175

AKTUALIZACJA:
Jeśli szukasz więcej formuł do konwersji między różnymi rozmiarami efektów, książki na temat metaanalizy powinny zawierać wiele z nich. Nie jestem jednak ekspertem w tej dziedzinie i nie mogę tego polecić.
Ale pamiętam, że książka Rosenthala i Rosnowa pomogła kiedyś w sformułowaniu:
Essentials of Behavioural Research: Methods and Data Analysis
Ponadto słyszałem wiele dobrych rzeczy na temat formuł zawartych w tej książce Rosenthala, Rosnowa i Rubina (chociaż Nigdy go nie używałem):
Kontrasty i rozmiary efektów w badaniach behawioralnych: podejście korelacyjne (Zdecydowanie powinieneś spróbować, jeśli jest w pobliżu biblioteki).

Jeśli to nie wystarczy, może zadaj inne pytanie na temat literatury w celu przeliczenia wielkości efektów w metaanalizach. Być może ktoś bardziej zaangażowany w metaanalizę ma bardziej ugruntowane rekomendacje.


0

Możesz rozważyć wypróbowanie pakietu R compute.es . Istnieje kilka funkcji służących do uzyskiwania oszacowań wielkości efektu i wariancji wielkości efektu.


jest to fajny pakiet, który napisałeś, ale jestem zainteresowany oszacowaniem próbki SE, a te funkcje wydają się dawać oszacowania wariancji dla wielkości efektu metaanalizy, podczas gdy chciałbym wnioskować o wariancji populacji (np. skalowany do oryginalne dane). Czy możesz podać przykład, w jaki sposób można wykorzystać funkcje w compute.espakiecie do odtworzenia równań i funkcji, które napisałem powyżej?
David LeBauer,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.