sfondo
Sto conducendo una meta-analisi che include dati precedentemente pubblicati. Spesso, le differenze tra i trattamenti sono riportate con valori di P, differenze meno significative (LSD) e altre statistiche ma non forniscono una stima diretta della varianza.
Nel contesto del modello che sto usando, una sopravvalutazione della varianza va bene.
Problema
Ecco un elenco di trasformazioni in dove (Saville 2003) che sto prendendo in considerazione, feedback apprezzato; sotto, presumo che quindi e le variabili sono normalmente distribuite se non diversamente indicato:S E = √ α=0,051- α / 2=0,975
Domande:
dato , e trattamento significa en ˉ X 1 ˉ X 2 S E = ˉ X 1 - ˉ X 2
dato LSD (Rosenberg 2004) , , , dove è il numero di blocchi e per impostazione predefinita per RCBD
dato MSD (differenza significativa minima) (Wang 2000) , , , df =
dato un intervallo di confidenza al 95% (Saville 2003) (misurato dalla media al limite di confidenza superiore o inferiore), e
dato l'HSD di Tukey, , dove è la "statistica dell'intervallo studentizzato",
Una funzione R per incapsulare queste equazioni:
Dati di esempio:
data <- data.frame(Y=rep(1,5), stat=rep(1,5), n=rep(4,5), statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD')
Esempio di utilizzo:
transformstats(data)
La
transformstats
funzione: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) }
Riferimenti