コクラン・アーミテージ検定 Last modified: Jan 06, 2009
目的
コクラン・アーミテージ検定を行う
R には prop.trend.test という関数として用意されている。
上に示した結果のうち,傾向検定の結果(Trend の項目)のみが得られる。
注:コクラン・アーミテージ検定のトレンドを表すカイ二乗値(CA)と
Linear-by-Linear 検定(Mantel の傾向検定)のカイ二乗値(M)には,全サンプルサイズを n としたとき,
M = CA*(n-1)/n の関係がある。
使用法
Cochran.Armitage(r.i, n.i, x.i=1:length(r.i))
引数
r.i 反応数のベクトル
n.i ケース数のベクトル
X.i 外的基準。省略されたときは1から始まる整数値が仮定される
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/Cochran_Armitage.R", encoding="euc-jp")
# コクラン・アーミテージ検定
Cochran.Armitage <- function( r.i, # 反応数のベクトル
n.i, # ケース数のベクトル
x.i=seq(along=r.i)) # 外的基準。省略されたときは1から始まる整数値が仮定される
{
k <- length(r.i) # 群の数
stopifnot(length(n.i) == k, length(x.i) == k)
p.i <- r.i/n.i # 標本比率のベクトル
r <- sum(r.i) # 反応数の合計
n <- sum(n.i) # ケース数の合計
p.m <- r/n # プールした標本比率(標本比率の平均値)
x.m <- sum(n.i*x.i)/n # 外的基準の平均値
xx <- x.i-x.m # 平均偏差
b <- sum(n.i*(p.i-p.m)*xx)/sum(n.i*xx^2) # 傾き
a <- p.m-b*x.m # 切片
xt <- b^2*sum(n.i*xx^2)/(p.m*(1-p.m)) # 傾き(トレンド)に対するカイ二乗値
xh <- n^2*(sum(r.i^2/n.i)-r^2/n)/r/(n-r) # 非一様性
xq <- xh-xt # 直線からの乖離に対するカイ二乗値
chisq <- c(xt, xq, xh) # カイ二乗値
df <- c(1, k-2, k-1) # 自由度
P <- pchisq(chisq, df, lower.tail=FALSE) # P 値
res <- data.frame(chisq=chisq, df=df, P=P)
colnames(res) <- c("カイ二乗値", "自由度", "P 値")
rownames(res) <- c("トレンド", "直線からの乖離", "非一様性")
return(res)
}
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/wilcoxon_score.R", encoding="euc-jp")
# ウィルコクソン・スコア(平均順位)
wilcoxon.score <- function(n) # カテゴリーの度数ベクトル
{
a <- cumsum(n)
a <- c(0, a[-length(a)])
return(a+(n+1)/2) # カテゴリーのウィルコクソン・スコア
}
使用例
x.i <- c(10, 20, 30, 40, 50) # 各群の外的基準変数の値
n.i <- c(30, 35, 47, 21, 45) # 各群のケース数
r.i <- c(2, 4, 14, 13, 39) # 各群の反応ケース数
Cochran.Armitage(r.i, n.i, x.i) # 例題の場合は,第三引数を省略しても同じ結果になる
( score <- wilcoxon.score(n.i) )
Cochran.Armitage(r.i, n.i, score) # 外的基準としてウィルコクソン・スコア(平均順位)を使う
出力結果例
> Cochran.Armitage(r.i, n.i, x.i)
カイ二乗値 自由度 P 値
トレンド 68.572732 1 1.222834e-16
直線からの乖離 4.014484 3 2.599043e-01
非一様性 72.587216 4 6.449422e-15
> score <- wilcoxon.score(n.i)
[1] 15.5 48.0 89.0 123.0 156.0 # ウィルコクソン・スコア
> Cochran.Armitage(r.i, n.i, score)
カイ二乗値 自由度 P 値
トレンド 68.085779 1 1.565355e-16
直線からの乖離 4.501437 3 2.121622e-01
非一様性 72.587216 4 6.449422e-15
注
R には prop.trend.test という関数として用意されている。
上に示した結果のうち,傾向検定の結果(Trend の項目)のみが得られる。
> prop.trend.test(r.i, n.i) # デフォルトのスコアを使う
Chi-squared Test for Trend in Proportions
data: r.i out of n.i ,
using scores: 1 2 3 4 5 # デフォルトのスコア
X-squared = 68.5727, df = 1, p-value < 2.2e-16
> prop.trend.test(r.i, n.i, score) # 使用するスコアを指定する
Chi-squared Test for Trend in Proportions
data: r.i out of n.i ,
using scores: 15.5 48 89 123 156 # 使用されたスコア(ウィルコクソン・スコア)
X-squared = 68.0858, df = 1, p-value < 2.2e-16
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI