배경
이전에 게시 된 데이터가 포함 된 메타 분석을 수행하고 있습니다. 종종, 치료 간의 차이는 P- 값, 최하위 차이 (LSD) 및 기타 통계로보고되지만 분산의 직접적인 추정치는 제공하지 않습니다.
내가 사용하는 모델과 관련하여 과대 평가의 분산은 괜찮습니다.
문제
다음은 제가 고려하고 있는 (Saville 2003)의 로의 변환 목록입니다 . 아래에서는 이므로 이며 달리 명시되지 않는 한 변수는 정상적으로 분포한다고 가정합니다.S E = √ α=0.051− α / 2=0.975
질문 :
주어진 , 및 처리는 및N ˉ X 1 ˉ X 2 S E = ˉ X 1 - ˉ X 2
주어진 LSD (Rosenberg 2004) , , , 여기서 는 블록 수이고, 는 기본적으로 RCBD n b b n = b S E = L S D
주어진 MSD (최소 유의 차) (Wang 2000) , , , df =α 2 n − 2 S E = M S D
95 % 신뢰 구간 (Saville 2003) (평균에서 신뢰 상한 또는 하한으로 측정), 및N S E = C I
Tukey의 HSD의 주어진 , 여기서 인 '스튜던트 범위 통계치'q S E = H S D
이 방정식을 캡슐화하는 R 함수 :
데이터 예 :
data <- data.frame(Y=rep(1,5), stat=rep(1,5), n=rep(4,5), statname=c('SD', 'MSE', 'LSD', 'HSD', 'MSD')
사용 예 :
transformstats(data)
transformstats
기능 :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) }
참고 문헌