目的 リジット分析を行う。 参考文献 1) 富永祐民:治療効果判定のための実用統計学--生命表法の解説--,蟹書房 2) 石村貞夫ら:よくわかる医学・歯学・薬学のための統計解析,東京図書 使用法 Ridit(na, nb, combine=FALSE) 引数 na 第一群の度数。combine=FALSE のときは,基準となる群 nb 第二群の度数。combine=FALSE のときは,比較される群 combine 両群をプールして基準とする場合に TRUE とする。 省略時は FALSE が仮定される。 ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/Ridit.R", encoding="euc-jp") # リジット分析を行う Ridit <- function( na, # 第一群の度数 nb, # 第二群の度数 combine=FALSE) # 両群をプールして基準にするとき TRUE { ridit <- function(na) # リジットを計算する関数 { cna <- cumsum(na) return((na/2+c(0, cna[-length(cna)]))/sum(na)) } data.name <- paste(deparse(substitute(na)), "and", deparse(substitute(nb))) if (combine == FALSE) { # 片方の群を基準にする場合 method <- "リジット分析(片方の群を基準にする場合)" n2 <- sum(nb) # 比較される群 nb の総数 r <- sum(nb*ridit(na))/n2 Z <- abs(r-0.5)*sqrt(12*n2) P <- pnorm(Z, lower.tail=FALSE)*2 names(Z) <- "Z-value" names(r) <- "ridit" return(structure(list(statistic=Z, p.value=P, estimate=r, method=method, data.name=data.name), class="htest")) } else { # 群をプールして基準とする場合 method <- "リジット分析(群をプールして基準とする場合)" r <- ridit(na+nb) n1 <- sum(na) ra <- sum(r*na)/n1 n2 <- sum(nb) rb <- sum(r*nb)/n2 Z <- abs(ra-rb)/sqrt((n1+n2)/(12*n1*n2)) P <- pnorm(Z, lower.tail=FALSE)*2 names(Z) <- "Z-value" return(structure(list(statistic=Z, p.value=P, estimate=c("ridit-a"=ra, "ridit-b"=rb), method=method, data.name=data.name), class="htest")) } } 使用例 片方の群を基準にする場合 > na <- c(4, 11, 14, 3) > nb <- c(6, 13, 9, 1) > Ridit(na, nb, FALSE) リジット分析(片方の群を基準にする場合) data: na and nb Z-value = 2.0102, p-value = 0.04441 sample estimates: ridit 0.3922414 群をプールして基準とする場合 > k1 <- c(10, 43, 122, 66) > k2 <- c(12, 25, 53, 15) > Ridit(k1, k2, combine = TRUE) リジット分析(群をプールして基準とする場合) data: k1 and k2 Z-value = 3.0942, p-value = 0.001974 sample estimates: ridit-a ridit-b 0.5316960 0.4272502