Essas fórmulas para transformar P, LSD, MSD, HSD, CI e SE em uma estimativa exata ou inflada / conservadora de corretas?


11

fundo

Estou conduzindo uma meta-análise que inclui dados publicados anteriormente. Frequentemente, as diferenças entre os tratamentos são relatadas com valores de P, diferenças menos significativas (LSD) e outras estatísticas, mas não fornecem estimativa direta da variação.

No contexto do modelo que estou usando, uma superestimação de variação é aceitável.

Problema

Aqui está uma lista de transformações para onde (Saville 2003) que estou considerando, feedback apreciado; abaixo, suponho que então e as variáveis ​​são normalmente distribuídas, a menos que seja indicado o contrário:S E = SESE=MSE/n 1 - α / 2 = 0,975α=0.051α/2=0.975

Questões:

  1. dado , tratamento significa en ˉ X 1 ˉ X 2 S E = ˉ X 1 - ˉ X 2PnX¯1X¯2

    SE=X¯1X¯2t(1P2,2n2)2/n
  2. dado LSD (Rosenberg 2004) , , , onde é o número de blocos en por padrão para RCBD n b b n = b S E = L S Dαnbbn=b

    SE=LSDt(0.975,n)2bn
  3. dado MSD (diferença mínima significativa) (Wang 2000) , , , df =α 2 n - 2 S E = M S Dnα2n2

    SE=MSDt(0.975,2n2)2
  4. dado um intervalo de confiança de 95% (Saville 2003) (medido do limite de confiança médio ao limite superior ou inferior), en S E = C Iαn

    SE=CIt(α/2,n)
  5. dado o HSD de Tukey, , em que é a 'estatística do intervalo estudado',q S E = H S Dnq

    SE=HSDq(0.975,n)

Uma função R para encapsular estas equações:

  1. Dados de exemplo:

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

    transformstats(data)    
    
  3. A transformstatsfunção:

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

Referências

Universidade Federal do Rio Grande do Sul. (pdf)

Rosenberg e cols. 2004 (link)

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


Não tenho certeza se a maioria dos ICs é realmente calculada via valores t ou melhor, via valores z. No entanto, em ns maiores (> 30), isso não deve fazer muita diferença.
Henrik

@Henrik para pequenas , a estatística t é apropriado, e como você disse, como aumenta, t aproxima Z. Veja também math.stackexchange.com/q/23246/3733nnn
David LeBauer

Respostas:


7

Sua equação LSD parece bem. Se você deseja voltar à variação e possui uma estatística resumida que diz algo sobre variabilidade ou significado de um efeito, quase sempre pode voltar à variação - você só precisa saber a fórmula. Por exemplo, na sua equação para LSD você deseja resolver para MSE, MSE = (LSD / t _) ^ 2/2 * b


Para MSD, se MSD = t_ {alpha, 2n-2} * sd sqrt (2 / n), SE = MSD n / (t_ {alpha, n} * sqrt (2)) está correto?
David LeBauer

7

Eu só posso concordar com John. Além disso, talvez este artigo de David Saville o ajude com alguma fórmula para recalcular as medidas de variabilidade de LSDs et al .:
Saville DJ (2003). Estatísticas básicas e a inconsistência de vários procedimentos de comparação. Jornal Canadense de Psicologia Experimental, 57, 167-175

ATUALIZAÇÃO:
Se você estiver procurando por mais fórmulas para converter entre vários tamanhos de efeito, os livros sobre meta-análise devem fornecer muitas delas. No entanto, não sou especialista nesta área e não posso recomendar um.
Mas lembro que o livro de Rosenthal e Rosnow uma vez ajudou com alguma fórmula:
Fundamentos da pesquisa comportamental: métodos e análise de dados
Além disso, ouvi muitas coisas boas sobre as fórmulas contidas neste livro de Rosenthal, Rosnow & Rubin (embora Eu nunca o usei:
Contrastes e tamanhos de efeitos na pesquisa comportamental: uma abordagem correlacional (você definitivamente deve tentar se uma biblioteca próxima a tiver).

Se isso não for suficiente, talvez faça outra pergunta na literatura para converter tamanhos de efeito para metanálises. Talvez alguém mais interessado na metanálise tenha recomendações mais fundamentadas.


0

Você pode considerar tentar o pacote R compute.es . Existem várias funções para derivar estimativas de tamanho de efeito e a variação do tamanho do efeito.


esse é um bom pacote que você escreveu, mas estou interessado em estimar a amostra SE, e essas funções parecem fornecer estimativas de variação para os tamanhos dos efeitos da metanálise, enquanto eu gostaria de inferir a variação da população (por exemplo, dimensionada para os dados originais). Você poderia fornecer um exemplo de como as funções no compute.espacote podem ser usadas para replicar as equações e funções que escrevi acima?
David LeBauer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.