Antecedentes
Estoy realizando un metanálisis que incluye datos publicados anteriormente. A menudo, las diferencias entre tratamientos se informan con valores de P, diferencias menos significativas (LSD) y otras estadísticas, pero no proporcionan una estimación directa de la varianza.
En el contexto del modelo que estoy usando, una sobreestimación de la varianza está bien.
Problema
Aquí hay una lista de transformaciones a donde (Saville 2003) que estoy considerando, comentarios apreciados; a continuación, supongo que entonces y las variables se distribuyen normalmente a menos que se indique lo contrario:
Preguntas:
dado , tratamiento significa y
dado LSD (Rosenberg 2004) , , , donde es el número de bloques, y por defecto para RCBD
MSD dada (diferencia mínima significativa) (Wang 2000) , , , df =
dado un intervalo de confianza del 95% (Saville 2003) (medido desde el límite de confianza medio a superior o inferior), y
dado el HSD de Tukey, , donde es la 'estadística de rango estudiado',
Una función R para encapsular estas ecuaciones:
Datos de ejemplo:
data <- data.frame(Y=rep(1,5), stat=rep(1,5), n=rep(4,5), statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD')
Ejemplo de uso:
transformstats(data)
La
transformstats
función: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) }
Referencias