コクラン・アーミテージ検定     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

Made with Macintosh