Hintergrund
Ich führe eine Metaanalyse durch, die zuvor veröffentlichte Daten enthält. Oft werden Unterschiede zwischen Behandlungen mit P-Werten, niedrigstwertigen Unterschieden (LSD) und anderen Statistiken angegeben, liefern jedoch keine direkte Schätzung der Varianz.
Im Kontext des von mir verwendeten Modells ist eine Überschätzung der Varianz in Ordnung.
Problem
Hier ist eine Liste von Transformationen zu wobei (Saville 2003) , die ich in Betracht ziehe, Feedback erwünscht; Im Folgenden gehe ich davon aus, dass also und Variablen normal verteilt sind, sofern nicht anders angegeben:S E = √ α=0,051- α / 2=0,975
Fragen:
gegebenes , und Behandlungsmittel undn ≤ X 1 ≤ X 2 S E = ≤ X 1 - ≤ X 2
gegebenes LSD (Rosenberg 2004) , , , wobei die Anzahl der Blöcke ist und standardmäßig für RCBD n b b n = b S E = L S D.
gegebene MSD (minimaler signifikanter Unterschied) (Wang 2000) , , , df =α 2 n - 2 S E = M S D.
bei einem Konfidenzintervall von 95% (Saville 2003) (gemessen vom Mittelwert bis zur oberen oder unteren Konfidenzgrenze), undn S E = C I.
bei Tukeys HSD, , wobei die 'studentisierte Bereichsstatistik' ist, istq S E = H S D.
Eine R-Funktion zum Einkapseln dieser Gleichungen:
Beispieldaten:
data <- data.frame(Y=rep(1,5), stat=rep(1,5), n=rep(4,5), statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD')
Beispiel Verwendung:
transformstats(data)
Die
transformstats
Funktion: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) }
Verweise