ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

Jonckheere-Terpstra検定で量的変数の傾向性をみる(clinfunパッケージ)[R]

ヨンクヒール・タプストラ検定と読む。
ある変数がカテゴリーの順序に沿って単調変化しているかどうかをみる。
ノンパラメトリック検定で、Kruskal-Wallis検定と似たようなもの(?)らしい。

今回はオレンジの木の周囲長のデータを使う。
順序付きカテゴリー変数Treeの順に周囲長circumferenceが単調増加(あるいは減少)しているかを調べる。
(この仮説に意味があるかどうかは考えない)

> data(Orange)
> str(Orange)
Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame': 35 obs. of  3 variables:
 $ Tree         : Ord.factor w/ 5 levels "3"<"1"<"5"<"2"<..: 2 2 2 2 2 2 2 4 4 4 ...
 $ age          : num  118 484 664 1004 1231 ...
 $ circumference: num  30 58 87 115 120 142 145 33 69 111 ...
> boxplot(circumference~Tree,data=Orange)

図1:オレンジの木の周囲長

jonckheere.test( )を使って傾向性検定を行う

library(clinfun)
attach(Orange)
jonckheere.test(circumference, Tree)

jonckheere.test(x, g)では、

  • xに比較する連続変数
  • gに順序カテゴリー変数

を指定する。

> jonckheere.test(circumference, Tree)

    Jonckheere-Terpstra test

data:  
JT = 314.5, p-value = 0.04342
alternative hypothesis: two.sided

 警告メッセージ: 
 jonckheere.test(circumference, Tree): 
  Sample size > 100 or data with ties 
 p-value based on normal approximation. Specify nperm for permutation p-value

サンプルサイズ>100のときや、データに同じ数値があるときは上のようなメッセージが出る。

パーミュテーション法でP値を求める

パーミュテーション(=並べ替え)検定は次の手順で行われる。

  • 元のデータを並べ替えたデータから統計量を計算することを繰り返し、統計量全体の分布を得る。
  • その分布全体の中で、元のデータの統計量がどれくらい極端なのかを判定する(「極端さ」が全体の上位5%ならP=0.05など)。

npermでパーミュテーションの回数を指定する。
大きい方がP値の有効数字が多く(細かく)なる。
1000以上の数値を指定することが推奨される。

> jonckheere.test(circumference, Tree, nperm=2000)

    Jonckheere-Terpstra test

data:  
JT = 314.5, p-value = 0.048
alternative hypothesis: two.sided

おわりに

  • Cochran-Armitage検定よりさらに見かける機会が少ない