ノンパラメトリック検定
(nonparametric test)
とは,通常母集団分布に対しては密度 関数を持つことだけを仮定し,順序(
特にランク)
統計量を基礎とする検定統計量を用い る検定のことである.これらの検定関数の中にはオプションでパラメトリック検定を実行 できるものもある.3.1.1 Ansari-Bradley のスケール差に対する二標本検定 ansari.test()
書式:
#
既定のメソッドansari.test(x, y, alternative = c("two.sided", "less", "greater"), exact = NULL, conf.int = FALSE, conf.level = 0.95, ...)
#
クラス"formula"
に対するS3
メソッドansari.test(formula, data, subset, na.action, ...)
引数:
x
データ値の数値ベクトルy
データ値の数値ベクトルalternative
対立仮説."two.sided", "greater"
もしくは"less"
のいずれか.最初の一文字だけでよい
exact
論理値.正確なp
値を計算するか?conf.int
論理値.信頼区間を計算するか?conf.level
信頼区間の信頼係数formula
形式lhs~rhs
のモデル式で,lhs
はデータ値を与える数値変数,rhs
は対 応するグループを与える2
水準の因子data
モデル式中の変数を含むオプションのデータフレームsubset
観測値の部分集合を指示するオプションのベクトルna.action
欠損値処理を指示する関数.既定getOption("na.action") ...
メソッドに(
から)
引き渡される追加引数返り値: クラス
"htest"
のオブジェクトで,次の成分を持つリスト:statistic Ansari-Bradley
検定統計量の値p.value
検定のp
値null.value
帰無仮説下でのスケール比s
で常に1 alternative
対立仮説を示す文字列method
文字列"Ansari-Bradley test"
data.name
データ名を示す文字列conf.int
スケールパラメータの信頼区間(conf.int=TRUE
の時だけ存在) estimate
スケール比の推定値(conf.int=TRUE
の時だけ存在)
x, y
をそれぞれ密度関数f ((t − m)/s)/s
とf (t − m)
を持つ独立な標本とする.ここで,m
は未知の局外母数で,スケール比s
が関心のあるパラメータである.Ansari-Bradley
検定はs = 1
という帰無仮説を,両側対立仮説s 6 = 1 (
二つの分布は分散が違う)
,片側対 立仮説s > 1 (x
の分布のほうが分散が大,"greater")
,もしくはs < 1 (x
の分布のほ うが分散が小,"less")
,に対して検定する.(exact = TRUE
を指定しない限り)
既定では双方の標本が50
個未満の有限な観測値を含みタイ
(
同じ値のデータ)
がなければ正確なp
値を計算する.さもなければ,正規近似 が使われる.オプションで,ノンパラメトリックな信頼区間と
s
の推定値が計算される.もし正確なp
値が得られれば,Bauer
で説明されたアルゴリズムを用いて,正確な信頼区間が計算され,
Hodges-Lehmann
推定量が用いられる.さもなければ,信頼区間と推定量は正規近似に基づく.
注意:
Ansari-Bradley
検定の結果を,二標本の分散を比較するF
検定のそれと比較するためには,
s
がスケール比であり,したがってs
2 は分散比(
存在する限リ)
になること を注意しよう.F
検定では分散比自身が興味のあるパラメータである.特に信頼区間は,Ansari-Bradley
検定ではs
用であるが,F
検定ではs
2 用である.関 連:
k
標 本 の 分 散 の 同 一 性 に 対 す る(
ノ ン パ ラ メ ト リ ッ ク な)
ラ ン ク に 基 づ くfligner.test()
.ス ケ ー ル パ ラ メ ー タ の 同 一 性 に 対 す る も う 一 つ の ラ ン ク に よ る 検 定mood.test()
.分 散 の 同 一 性 に 対 す る パ ラ メ ト リ ッ ク 検 定var.test(), bartlett.test()
.# Hollander & Wolfeの対照血清を用いた血清中の鉄分量定量データ
> ramsay <- c(111, 107, 100, 99, 102, 106, 109, 108, 104, 99, 101, 96, 97, 102, 107, 113, 116, 113, 110, 98)
> jung.parekh <- c(107, 108, 106, 98, 105, 103, 110, 105, 104,
100, 96, 108, 103, 104, 114, 114, 113, 108, 106, 99)
# 例えば有意水準10%で帰無仮説(スケール比が1)は棄却されない
> ansari.test(ramsay, jung.parekh) Ansari-Bradley test
data: ramsay and jung.parekh # 二つのデータ変数名
AB = 185.5, p-value = 0.1815 # 検定統計量値とp値
alternative hypothesis: true ratio of scales is not equal to 1 # 両側対立仮説
Warning message: # データにタイがあるため正確なp値が計算不能
Cannot compute exact p-value with ties in:
ansari.test.default(ramsay, jung.parekh)
# 平均は同じだが分散が異なる二組の正規データを使用(95%信頼区間も計算)
# 例えば有意水準10%で帰無仮説(スケール比が1)は棄却されない
> ansari.test(rnorm(10), rnorm(10, 0, 2), conf.int = TRUE) Ansari-Bradley test
data: rnorm(10) and rnorm(10, 0, 2) # 二つのデータ変数名
AB = 65, p-value = 0.1521 # 検定統計量値とp値
alternative hypothesis: true ratio of scales is not equal to 1 # 両側対立仮説
95 percent confidence interval: 0.2494223 1.3557745 # スケール比の95%信頼区間
sample estimates: ratio of scales 0.5090272 # 2標本のスケール比の推定値
3.1.2 Fligner-Killeen の分散同一性の ( メディアン ) 検定 fligner.test()
fligner.test()
は各標本群の分散が同一であるという帰無仮説に対するFligner-Killeen (
メディアン)
検定を行う.書式:
fligner.test(x, ...)
fligner.test(x, g, ...) #
既定のS3
メソッド#
クラス"formula"
に対するS3
メソッドfligner.test(formula, data, subset, na.action, ...)
引数:
x
データ値の数値ベクトル,もしくは数値データベクトルのリストg x
の対応する要素のグルーピングを与える因子オブジェクトのベクトルで,もしx
がリストなら無視されるformula
形式lhs~rhs
のモデル式.lhs
はデータ値,rhs
は対応するグループdata
モデル式中の変数を含むオプションのデータフレームsubset
観測値の部分集合を指示するオプションのベクトルna.action
欠損値処理を指示する関数.既定getOption("na.action") ...
メソッドに(
から)
引き渡される追加引数.
返り値: クラス
"htest"
のオブジェクトで,次の成分を持つリスト:statistic Fligner-Killeen
のメディアンカイ2
乗検定統計量parameter
検定統計量の近似カイ2
乗分布の自由度p.value
検定のp
値method
文字列"Fligner-Killeen test for homogeneity of variances"
data.name
データの名前を与える文字列もし
x
がリストなら,その成分が分散の同一性を比較される標本とされ,従って数値ベ クトルでなければならない.この場合g
は無視され,検定は単にfligner.test(x)
とす れば良い.もし標本がまだリストに含まれていないならfligner.test(list(x, ...))
とせよ.さもなければx
は数値データベクトルでなければならず,g
はx
と同じ長さの ベクトルか因子オブジェクトで,x
の対応する要素のグルーピングを与える.Fligner-Killeen (
メディアン)
検定は,正規性からの逸脱に対し最も頑健な分散同一性に対する多くの検定に対するシミュレーション研究から提案された.
Conover, Johnson
を参照せよ.これはk
標本単純線形ランクで,中心化された標本の絶対値のランクと重 みa(i) = qnorm((1 + i/(n + 1))/2)
を用いる.ここに移植された版は各標本のメディア ンで中心化されている(F-K:med X^2
と参照される)
.関連:スケールパラメータの違いに対するランクに基づく二標本検定
ansari.test()
,mood.test()
.分散の同一性に対するパラメトリック検定var.test()
,bartlett.test()
.# 殺虫剤の効き目データInsectSpraysを使用.0.05>p値>0.01であるから,
# 帰無仮説は有意水準5%で棄却されるが,有意水準1%では棄却されない
> fligner.test(InsectSprays$count, InsectSprays$spray) Fligner-Killeen test for homogeneity of variances data: InsectSprays$count and InsectSprays$spray
Fligner-Killeen:med chi-squared = 14.4828, df = 5, p-value = 0.01282
# モデル式によるデータの指定.bartlett.test()と比較してみよ
> fligner.test(count ~ spray, data = InsectSprays) Fligner-Killeen test for homogeneity of variances data: count by spray
Fligner-Killeen:med chi-squared = 14.4828, df = 5, p-value = 0.01282
3.1.3 Friedman のランク和検定 friedman.test()
friedman.test()
は繰りかえしの無いブロックデータに対するFriedman
のランク和 検定を行う.書式:
friedman.test(y, ...)
friedman.test(y, groups, blocks, ...) #
既定のS3
メソッド#
クラス"formula"
に対するS3
メソッドfriedman.test(formula, data, subset, na.action, ...)
引数:
y
データ値の数値ベクトル,もしくはデータ行列groups
もしx
がベクトルなら,その対応するグループを与えるベクトル.もしy
が行列なら無視される.もし因子オブジェクトでなければ,因子に強制変換される
blocks
もしy
がベクトルならばその対応する要素のブロックを与える.もしy
が行列なら無視される.因子オブジェクトでなければ,因子に強制変換される
formula
形式a ~ b | c
のモデル式で,a, b, c
はそれぞれデータ値と対応するグループ,ブロック
data
モデル式中の変数を含むオプションのデータフレームsubset
観測値の部分集合を指示するオプションのベクトルna.action
欠損値処理を指示する関数.既定getOption("na.action") ...
メソッドに(
から)
引き渡される追加引数返り値: クラス
"htest"
のオブジェクトで,次の成分を持つリスト:statistic Friedman
のカイ2
乗統計量値parameter
検定統計量の近似カイ2
乗分布の自由度p.value
検定のp
値method
文字列"Friedman rank sum test"
data.name
データの名前を与える文字列friedman.test()
は繰りかえしの無い完全なブロックデザイン(
つまり,groups
とblocks
の水準の各組合せに対し,y
中の観測値が唯一つある)
を解析するのに使われる.データの正規性は仮定しない.帰無仮説は
blocks
からの影響を除けば,y
の位置パラメータが
groups
の各々において同じというものである.もしy
が行列なら,groups
とblocks
はそれぞれ列と行の添字から得られる.groups
とblocks
は欠損値NA
を含ん ではならない.もしy
が欠損値を含めば,対応するブロックは除かれる.関連:
quade.test()
.# Hollander & Wolfe の例.一塁をまわる三種類の方法("丸く","鋭角に",そして"鈍角に")を比較
# 18人の選手と3種類の方法毎の,本塁から35フィートの一塁ベース上の位置から,二塁ベースのショ
# ートより15フィートの位置までの二回の走塁時間の平均値を記録した
> RoundingTimes
<-matrix(c(5.40,5.50,5.55,5.85,5.70,5.75,5.20,5.60,5.50,5.55,5.50,5.40, 5.90,5.85,5.70,5.45,5.55,5.60,5.40,5.40,5.35,5.45,5.50,5.35, 5.25,5.15,5.00,5.85,5.80,5.70,5.25,5.20,5.10,5.65,5.55,5.45, 5.60,5.35,5.45,5.05,5.00,4.95,5.50,5.50,5.40,5.45,5.55,5.50, 5.55,5.55,5.35,5.45,5.50,5.55,5.50,5.45,5.25,5.65,5.60,5.40, 5.70,5.65,5.55,6.30,6.30,6.25),
nr = 22, byrow = TRUE,
dimnames=list(1:22, c("Round Out","Narrow Angle","Wide Angle")))
# 走塁時間は一塁をまわる方法には無関係という帰無仮説を否定する強い証拠(0.5%有意)
> friedman.test(RoundingTimes) Friedman rank sum test data: RoundingTimes
Friedman chi-squared = 11.1429, df = 2, p-value = 0.003805
# 織機の縦糸の切断回数データwarpbreaksを使用.結果は縦糸の張力の影響を除けば,切断
# 回数の平均値(の位置パラメータ)は羊毛糸の種類によらないという帰無仮説は棄却されない
> wb <- aggregate(warpbreaks$breaks,
by=list(w=warpbreaks$wool, t=warpbreaks$tension), FUN=mean)
> wb
w t x # wは羊毛糸の種類
1 A L 44.55556 # tは縦糸の張力
2 B L 28.22222 # xは切断回数の平均値
3 A M 24.00000 4 B M 28.77778 5 A H 24.55556 6 B H 18.77778
> friedman.test(wb$x, wb$w, wb$t) Friedman rank sum test data: wb$x, wb$w and wb$t
Friedman chi-squared = 0.3333, df = 1, p-value = 0.5637
> friedman.test(x ~ w | t, data = wb) # モデル式によるデータ指定 Friedman rank sum test
data: x and w and t
Friedman chi-squared = 0.3333, df = 1, p-value = 0.5637
3.1.4 Kruskal-Wallis のランク和検定 kruskal.test()
kruskal.test()
はx
分布の位置パラメータが各グループ(
標本)
に対して同一である という帰無仮説に対するKruskal-Wallis
のランク和検定を行う.対立仮説は少なくとも 一つが異なるというものである.書式:
kruskal.test(x, ...)
kruskal.test(x, g, ...) #
既定のS3
メソッド#
クラス"formula"
に対するS3
メソッドkruskal.test(formula, data, subset, na.action, ...)
引数:
x
データ値の数値ベクトル,もしくは数値データベクトルのリストg x
の対応する要素に対するグループを与えるベクトルもしくは因子オブジェクト.もし
x
がリストなら無視されるformula
形式lhs~rhs
のモデル式で,lhs
はデータ値,rhs
は対応するグループdata
モデル式中の変数を含むオプションのデータフレームna.action
欠損値処理を指示する関数.既定getOption("na.action") ...
メソッドに(
から)
引き渡される追加引数.
返り値: クラス
"htest"
のオブジェクトで,次の成分を持つリスト:statistic Kruskal-Wallis
のランク和統計量parameter
検定統計量の近似カイ2
乗分布の自由度p.value
検定のp
値method
文字列"Kruskal-Wallis rank sum test"
data.name
データの名前を与える文字列もし
x
がリストなら,その成分が比較される標本とされ,従って数値データベクトルで なければならない.この場合g
は無視され,検定は単にkruskal.test(x)
とすれば良い.もし標本がまだリストに結合されていなければ
kruskal.test(list(x, ...))
と する.さもなければx
は数値データベクトルでなければならず,g
はx
と同じ長さのベ クトルか因子オブジェクトで,x
の対応する要素のグルーピングを与える.関連:二標本に対する特別な場合である
Wilcoxon
ランク和検定wilcox.test()
.正規 分布の仮定下での一元配置位置パラメータ解析を行うlm()
とanova()
の組合せ.二標 本に対する特別な場合としてのStudent
のt
検定t.test()
.# 粘液線毛排除機構の効率性.3グループの分布中心が異なるという帰無仮説は棄却されない
> x <- c(2.9, 3.0, 2.5, 2.6, 3.2) # 健常者
> y <- c(3.8, 2.7, 4.0, 2.4) # 閉塞性気道疾患患者
> z <- c(2.8, 3.4, 3.7, 2.2, 2.0) # 石綿肺症患者
> kruskal.test(list(x, y, z)) Kruskal-Wallis rank sum test data: list(x, y, z)
Kruskal-Wallis chi-squared = 0.7714, df = 2, p-value = 0.68
> x <- c(x, y, z)
> g <- factor(rep(1:3, c(5, 4, 5)), # 同じことだが labels = c("Normal subjects",
"Subjects with obstructive airway disease",
"Subjects with asbestosis"))
> kruskal.test(x, g)
Kruskal-Wallis rank sum test data: x and g
Kruskal-Wallis chi-squared = 0.7714, df = 2, p-value = 0.68
# モデル公式による指定.ニューヨーク市の毎日の大気観測値データairqualityを使用
# 月別のオゾン値の比較.オゾン量の月別データの分布中心は明らかに異なる
> kruskal.test(Ozone ~ Month, data = airquality) Kruskal-Wallis rank sum test
data: Ozone by Month
Kruskal-Wallis chi-squared = 29.2666, df = 4, p-value = 6.901e-06