D Cohena dla testu t próbki zależnej

10

Szybkie pytanie: widziałem d Cohena obliczonego na dwa różne sposoby dla testu t zależnych próbek (np. Projekt wewnątrz próbek testujący skuteczność leku z punktami czasowymi przed / po).

  1. Wykorzystując standardowe odchylenie wyniku zmiany w mianowniku równania dla d Cohena.
  2. Wykorzystanie standardowego odchylenia wyniku przedtestowego w mianowniku równania dla d Cohena.

Znalazłem bardzo mało literatury, która właściwie określa, których użyć i / lub kiedy użyć którejkolwiek z opcji.

Jakieś szybkie myśli?

gloryatsea
źródło
czy odkryłeś, jak obliczyć wartość d Cohena dla testu t dla sparowanej próbki?
user552231,
@ user552231 Istnieje kod źródłowy R dla Cochen's D. Czy szukałeś?
HelloWorld,

Odpowiedzi:

6

Geoff Cumming ma kilka komentarzy na ten temat (zaczerpnięte z Cumming, 2013 ):

Jednak w wielu przypadkach najlepszym wyborem standaryzatora nie jest SD potrzebna do przeprowadzenia wnioskowania na temat danego efektu. Rozważmy na przykład sparowany projekt, taki jak prosty eksperyment poprzedzający post, w którym pojedyncza grupa uczestników dostarcza zarówno dane przedtestowe, jak i po teście. Najodpowiedniejszym standaryzatorem jest praktycznie zawsze (Cumming, 2012, s. 290–294; Cumming i Finch, 2001, s. 568–570) oszacowanie SD w populacji w fazie badań wstępnych, być może , SD w badaniach wstępnych w naszych danych. Natomiast wnioskowanie na temat różnicy wymaga , SD sparowanych różnic - czy to dla sparowanego testu t, czy do obliczenia CI różnicy (Cumming i Finch, 2005). W zakresie, w jakim wyniki przedtestowe i posttestowe są skorelowane,s d i f f s d i f f s 1 s d i f fs1sdiffsdiffbędzie mniejsza niż , nasz eksperyment będzie bardziej czuły, a wartość d obliczona błędnie przy użyciu jako standaryzatora będzie zbyt duża.s1sdiff

Głównym powodem wyboru jako standaryzatora w sparowanym projekcie jest to, że SD populacji testowej praktycznie zawsze ma najlepszy sens koncepcyjny jako jednostka odniesienia. Innym ważnym powodem jest uzyskanie wartości d, które prawdopodobnie będą porównywalne z wartościami d podanymi w innych eksperymentach projektowania w parach, które mogą mieć różne korelacje przed testem i po badaniu oraz w eksperymentach z różnymi projektami, w tym projektem grup niezależnych, z których wszystkie badają ten sam efekt. Wartości d we wszystkich takich przypadkach prawdopodobnie będą porównywalne, ponieważ używają tego samego standaryzatora - kontroli SD lub SDT. Taka porównywalność jest niezbędna do metaanalizy, a także do sensownej interpretacji w kontekście.spre

dmartin
źródło
3

Formalną odpowiedź znalazłem w Frontiers in Psychology . Jeśli jest statystyką testową, a jest liczbą obserwacji, to:N d = ttN

d=tN
użytkownik552231
źródło
Zauważ, że da ci to znormalizowaną średnią zmianę, przy czym średnia zmiana jest znormalizowana pod względem standardowego odchylenia wyników zmian (co w pytaniu jest oznaczone jako 1.).
Wolfgang
0

Oto sugerowana funkcja R, która oblicza g Hedgesa (bezstronna wersja d Cohena) wraz z przedziałem ufności dla projektu między lub wewnątrz podmiotu:

gethedgesg <-function( x1, x2, design = "between", coverage = 0.95) {
  # mandatory arguments are x1 and x2, both a vector of data

  require(psych) # for the functions SD and harmonic.mean.

  # store the columns in a dataframe: more convenient to handle one variable than two
  X <- data.frame(x1,x2)

  # get basic descriptive statistics
  ns  <- lengths(X)
  mns <- colMeans(X)
  sds <- SD(X)

  # get pairwise statistics
  ntilde <- harmonic.mean(ns)
  dmn    <- abs(mns[2]-mns[1])
  sdp    <- sqrt( (ns[1]-1) *sds[1]^2 + (ns[2]-1)*sds[2]^2) / sqrt(ns[1]+ns[2]-2)

  # compute biased Cohen's d (equation 1) 
  cohend <- dmn / sdp

  # compute unbiased Hedges' g (equations 2a and 3)
  eta     <- ns[1] + ns[2] - 2
  J       <- gamma(eta/2) / (sqrt(eta/2) * gamma((eta-1)/2) )
  hedgesg <-  cohend * J

  # compute noncentrality parameter (equation 5a or 5b depending on the design)
  lambda <- if(design == "between") {
    hedgesg * sqrt( ntilde/2)
  } else {
    r <- cor(X)[1,2]
    hedgesg * sqrt( ntilde/(2 * (1-r)) )
  }

  # confidence interval of the hedges g (equations 6 and 7)
  tlow <- qt(1/2 - coverage/2, df = eta, ncp = lambda )
  thig <- qt(1/2 + coverage/2, df = eta, ncp = lambda )

  dlow <- tlow / lambda * hedgesg 
  dhig <- thig / lambda * hedgesg 

  # all done! display the results
  cat("Hedges'g = ", hedgesg, "\n", coverage*100, "% CI = [", dlow, dhig, "]\n")

}

Oto jak można go użyć:

x1 <- c(53, 68, 66, 69, 83, 91)
x2 <- c(49, 60, 67, 75, 78, 89)

# using the defaults: between design and 95% coverage
gethedgesg(x1, x2)

# changing the defaults explicitely
gethedgesg(x1, x2, design = "within", coverage = 0.90 )

Mam nadzieję, że to pomoże.

Denis Cousineau
źródło