Cox-Mantel 検定 Last modified: Aug 24, 2009
目的
Cox-Mantel 検定を行う
使用法
Cox.Mantel(group, event, time)
引数
group 群を識別するベクトル(1, 2 のいずれか)
event 死亡なら 1,生存なら 0 の値をとるベクトル
time 生存期間ベクトル
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/Cox_Mantel.R", encoding="euc-jp")
# Cox-Mantel 検定
Cox.Mantel <- function( group, # 群を識別するベクトル(1, 2 のいずれか)
event, # 死亡なら 1,生存なら 0 の値をとるベクトル
time) # 生存期間ベクトル
{
method <- "Cox-Mantel 検定"
data.name <- sprintf("time: %s, event: %s, group: %s",
deparse(substitute(time)), deparse(substitute(event)), deparse(substitute(group)))
OK <- complete.cases(group, event, time) # 欠損値を持つケースを除く
group <- group[OK]
event <- event[OK]
time <- time[OK]
stopifnot(length(group) == length(event), # 要素数が同じであること
length(group) == length(time))
len <- length(group) # 要素数
tg <- table(time, group*10+event) # 群とエンドポイントごとに生存時間をまとめる
k <- nrow(tg) # 行数
nia <- table(group)[1] # 第 1 群のケース数
nib <- len-nia # 第 2 群のケース数
na <- c(nia, (rep(nia, k)-cumsum(tg[,1]+tg[,2]))[-k]) # 第 1 群の総症例数
nb <- c(nib, (rep(nib, k)-cumsum(tg[,3]+tg[,4]))[-k]) # 第 2 群の総症例数
m <- tg[,2]+tg[,4] # 両群の死亡数の合計
s <- m > 0 # 死亡があった死亡期間のベクトル
m <- m[s] # 取り出す
r <- (na+nb)[s] # 各死亡期間における死亡リスク保有者数
A <- nb[s]/r
U <- sum(tg[,4])-sum(m*A) # 検定統計量
I <- sum(m*(r-m)/(r-1)*A*(1-A)) # 誤差分散
Z <- U/sqrt(I) # 検定統計量を標準得点に換算
P <- pnorm(abs(Z), lower.tail=FALSE)*2 # P 値
return(structure(list(statistic=c(U=U, "V(U)"=I, Z=Z), p.value=P,
method=method, data.name=data.name), class="htest"))
}
使用例
# 富永祐民「治療効果判定のための実用統計学 − 生命表法の解説 −」蟹書房(第3回改訂版)74 ページ,表 4.1 のデータ
# 解析結果は 111 ページ
# 1 は A 群,2 は B 群を表す
> group <- c(1, 1, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1)
# 1 は死亡,0 は 生存(打ち切り)を表す
> event <- c(1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0)
# 生存期間
> time <- c(2, 20, 5, 1, 3, 17, 2, 3, 15, 14, 12, 13, 11, 11, 10, 8, 8, 3, 7, 3, 6, 2, 5, 4, 2, 3, 1, 3, 2, 1)
> Cox.Mantel(group, event, time)
Cox-Mantel 検定
data: time: time, event: event, group: group
U = 3.0298, V(U) = 2.7155, Z = 1.8386, p-value = 0.06597
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI