Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Submit Search
Upload
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
•
91 likes
•
155,942 views
Takashi J OZAKI
Follow
R初心者向け講座「Rによるやさしい統計学第20章『検定力分析によるサンプルサイズの決定』」20140222 TokyoR #36
Read less
Read more
Report
Share
Related slideshows
関数データ解析の概要とその方法
関数データ解析の概要とその方法
分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
Report
Share
1 of 49
More Related Content
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
1.
Rによるやさしい統計学 第20章「検定力分析によるサンプル サイズの決定」 株式会社リクルートコミュニケーションズ データサイエンティスト 尾崎 隆
(Takashi J. OZAKI, Ph. D.) 2014/2/20 1
2.
一応、自己紹介を… このブログの中の人です 2014/2/20 2
3.
注意点 肝心の僕が『Rによるやさしい統計学』2月になるまで読んだこと ありませんでした 今回の講師も
@yokkuns から 「TJOさんサンプルサイズのブログ記事 書いてたってことは詳しいと思うのでお願い していいですよね?」 と頼まれて、一度断ったものの2回目に頼まれてさすがに断れな かったのでお引き受けした次第 よって内容は結構適当ですごめんなさい 2014/2/20 3
4.
今回の課題図書 2014/2/20 4
5.
今回の課題図書 今日話すのは こちらの方 2014/2/20 こちらはより 深く学びたい 人向け 5
6.
今回のレクチャーの前提 多重比較の問題と 第一種の過誤については 既に皆さん分かっているものとして 話を進めますので 忘れてる方は今のうちに復習を! 2014/2/20 6
7.
「検定力」(検出力)とは何か? 2014/2/20 7
8.
端的に言えば 1.対立仮説が真である時に 2.帰無仮説が棄却される確率 = P([帰無仮説を棄却] |
[対立仮説が真]) 2014/2/20 8
9.
マトリクスでいうとココ 帰無仮説が 正しい 対立仮説が 正しい 帰無仮説を 採択する ① ② 帰無仮説を 棄却する ③ ④ 2014/2/20 9
10.
こいつらが困りもの 帰無仮説が 正しい 対立仮説が 正しい 帰無仮説を 採択する ① ② 帰無仮説を 棄却する ③ ④ 2014/2/20 10
11.
こいつらが困りもの 帰無仮説が 正しい 対立仮説が 正しい 帰無仮説を 採択する ① 第二種の過誤 帰無仮説を 棄却する 第一種の過誤 ③ ④ ② 第一種の過誤も第二種の過誤も、本来正しいはずの仮説に 従わない偏った標本をうっかり掴まされたことで陥る 2014/2/20 11
12.
こいつらが困りもの 帰無仮説が 正しい 対立仮説が 正しい 帰無仮説を 採択する ① 第二種の過誤 帰無仮説を 棄却する 第一種の過誤 ③ ④ 2014/2/20 ② 12
13.
これが欲しい 帰無仮説が 正しい 対立仮説が 正しい 帰無仮説を 採択する ① 第二種の過誤 帰無仮説を 棄却する 第一種の過誤 ③ ④ ② 検定力=1 – P(第二種の過誤) 2014/2/20 13
14.
では、検定力とはどうやって決まる? 1.有意水準 2.対立仮説のもとでの母集団に おける効果の大きさ (効果量 effect size) 3.サンプルサイズ 2014/2/20 14
15.
では、検定力とはどうやって決まる? 1.有意水準 2.対立仮説のもとでの母集団に おける効果の大きさ (効果量 effect size) 3.サンプルサイズ 3つのバランスによって検定力は決まる 2つを固定することで残り1つの最適値を決めることもできる 2014/2/20 15
16.
では、検定力とはどうやって決まる? 1.有意水準 2.対立仮説のもとでの母集団に おける効果の大きさ 検定力 (効果量 effect
size) 分析 3.サンプルサイズ 3つのバランスによって検定力は決まる 2つを固定することで残り1つの最適値を決めることもできる 2014/2/20 16
17.
なぜ検定力分析が必要なのか? 2014/2/20 17
18.
検定力の大小で、検定の結果は変わってしまう 事後分析 既に結果の出た検定に対して「検定力が ○○だったから△△だった」というように原因 究明するためのもの
事前分析 (特に)「○○ぐらい検定力が欲しいので サンプルサイズを◇◇ぐらいにしたい」という ように、これから行う検定を最適化するため のもの 2014/2/20 18
19.
検定力を求めるシミュレーション 2014/2/20 19
20.
モンテカルロ法の要領でやってみる 検定力とは 対立仮説が正しい時に有意な結果が得られる確率
でも、あるサンプルサイズのデータの検定力を知るにはどうしたら 良い? 1回こっきり検定しても何も分からない そこで、シミュレーションしてみよう 意図的に、対立仮説が当てはまり、なおかつサンプルサイズの決 まった母集団を2つ用意する そこから標本をn回無作為に抽出して、毎回t検定する そのうち何回有意(ここではp < 0.05)だったかを見れば、検 定力の近似値が求まる! 2014/2/20 20
21.
とりあえずベタっとやってみる > tval<-numeric(length=10000) # t値を格納する変数 >
count_sig<-0 # 有意な結果を返す検定の総回数 > for (i in 1:10000) { # 10000回のモンテカルロシミュレーション + # 母集団を以下の通りサンプルサイズn = 10で2つ定める + group1<-rnorm(n=10,mean=0,sd=1) # 平均0、標準偏差1 + group2<-rnorm(n=10,mean=0.5,sd=1) # 平均0.5、標準偏差1 + res<-t.test(group1,group2,var.equal=T) # 結果を一時格納 + tval[i]<-res[[1]] # t値そのものを格納する + count_sig<-count_sig+ifelse(res[[3]]<0.05,1,0) # 有意ならカウント +} > count_sig/10000 # 最終的に有意だった割合=検定力は? [1] 0.1849 # サンプルサイズ10の時の検定力は0.185ぐらい 2014/2/20 21
22.
そこでt値の分布を見てみる > hist(tval,breaks=100,freq=F) #
ヒストグラムを描く。縦軸はDensityに t分布っぽく見えるかも? 2014/2/20 22
23.
そこで帰無仮説に従う自由度18のt分布を重ねてみる > curve(dt(x,df=18),add=T,col=‘blue’,lwd=2) #
curve関数とdf関数を使う あれ、重ならない? 2014/2/20 23
24.
実は… こいつは非心t分布なのです 2014/2/20 24
25.
一旦こいつから棄却域を出してみる > qt(0.025,df=18) #
下側5%棄却域 [1] -2.100922 > qt(0.025,df=18,lower.tail=F) # 上側5%棄却域 [1] 2.100922 > length(tval[abs(tval)>qt(0.025,df=18,lower.tail=F)]) # 棄却域の値を出す [1] 1849 > count_sig [1] 1849 # 上の値と一致してますね! 2014/2/20 25
26.
ところで、非心t分布のパラメータの求め方 独立な2群のt検定では、検定統計量の標本分布の非心度δ は 1
2 1 1 n1 n2 なので、それぞれ代入すると非心度は 0.0 0.5 0.5 1.118 1 1 1 1.0 10 10 5 ※この辺の詳細は『サンプルサイズの決め方』参照のこと 2014/2/20 26
27.
そこで、非心t分布を重ねてやる(dt関数でいける) > hist(tval,breaks=100,freq=F) > curve(dt(x,df=18,
ncp=-0.5*sqrt(5)),add=T,col=‘col’,lwd=3) # 引数ncpが非心度、無理数はできるだけ式の形で表す 2014/2/20 27
28.
詳細について学びたければ改めてこちらを 非心t分布に拠った サンプルサイズの計算方法が これでもかというくらい 解説されています。。。 ※今回はその話はざっくり 割愛します 2014/2/20 28
29.
Rで検定力分析を行う関数 (標準パッケージ) 2014/2/20 29
30.
そもそもRのfor文はトロいので… モンテカルロ法なんて 毎回やりたくない(泣) Rの関数で片付けちゃいましょう 2014/2/20 30
31.
とりあえず{stats}まわりではこの辺 power.t.test t検定の検定力分析 power.anova.test ANOVAの検定力分析 power.prop.test 比率の検定の検定力分析 2014/2/20 31
32.
先ほどの例をそのままやってみる(t検定の場合) > power.t.test(n=10,delta=0.5,sd=1,sig.level=0.05,power=NULL,strict=T) # n:
サンプルサイズ, delta: 平均値の差, sd: 標準偏差 # sig.level: 有意水準, power: 検定力, strict: Trueだと厳密な両側検定 # 知りたい値をNULLにして空けておく Two-sample t test power calculation n = 10 delta = 0.5 sd = 1 sig.level = 0.05 power = 0.1850957 # ←モンテカルロ法の結果とほぼ同じ! alternative = two.sided NOTE: n is number in *each* group 2014/2/20 32
33.
先ほどの例をそのままやってみる(t検定の場合) > power.t.test(n=10,delta=0.5,sd=1,sig.level=0.05,power=NULL,strict=F) # 両側検定の厳密性の指定を外してみた Two-sample
t test power calculation n = 10 delta = 0.5 sd = 1 sig.level = 0.05 power = 0.1838375 # ←ちょっとずれた。。。 alternative = two.sided NOTE: n is number in *each* group 2014/2/20 33
34.
でもむしろ知りたいのはサンプルサイズだよね? どうせならサンプルサイズを 決めたいんだけど… 検定力を決め打ちにすればおk 2014/2/20 34
35.
先ほどの例で検定力を0.8にしてみる(t検定の場合) > power.t.test(n=NULL,delta=0.5,sd=1,sig.level=0.05,power=0.8,strict=T) Two-sample t
test power calculation n = 63.76561 # ←n = 64以上が良いという結論になった delta = 0.5 sd = 1 sig.level = 0.05 power = 0.8 alternative = two.sided NOTE: n is number in *each* group 2014/2/20 35
36.
Rで検定力分析を行う関数 ({pwr}パッケージ) 2014/2/20 36
37.
{pwr}は色々あります pwr.2p.test pwr.2p2n.test pwr.anova.test pwr.chisq.test pwr.f2.test pwr.norm.test pwr.p.test pwr.r.test pwr.t.test pwr.t2n.test 2014/2/20 2群の比率の差の検定(サンプルサイズが等しい場合) 2群の比率の差の検定(サンプルサイズが異なる場合) ANOVA χ2二乗検定 一般化線形モデル 正規分布の平均値の検定(分散が既知の場合) 比率の検定(1標本) 相関係数の検定 平均値に関するt検定(1群、2群、対応あり) サンプルサイズの異なる独立な2群の平均値に関するt検定 37
38.
引数は4つ、3つを固定して残り1つをNULLにして求める d, h, k,
w, f, f2, r Cohenのeffect size (後で) n サンプルサイズ sig.level 有意水準 power 検定力 (大体0.8ぐらいに 固定するのが普通) 2014/2/20 38
39.
Effect size(効果量)とは? 端的に言えば「検定が有意な時にどれほどの効果が あるのか」を表すインデックス
例えば以下の2ケースを比べてみると: 鉛筆工場の製造ライン2つの鉛筆を比べたら、 p < 0.05で長さの平均値の差が0.1mm Effect sizeは小さい(意味のない有意差) ある睡眠薬による睡眠時間の延長量を比べたら、 p < 0.05で差が2時間 Effect sizeは大きい(普通のヒトの睡眠時 間を考えたら2時間増は意味がある) 2014/2/20 39
40.
Effect sizeは検定力と併せて検討すべし 一般に、サンプルサイズを大きくしようとすればするほどコストがかかる
Effect sizeが大きければサンプルサイズが小さくても有意になりやすいが、 その逆もまた然り 母集団にある程度のeffect sizeがあると仮定するなら、「確率0.8程度 の確かさ(=検定力)で有意な結果が得られたらハッピー」と期待して サンプルサイズを小さめに決めるという手もある 実際のeffect sizeが小さかったらその分有意になりづらいのでOK 例えば、effect sizeが小さいうちは有意にならなくてもよくて、effect sizeが大きければ有意になるようにしたければ、そのようにサンプルサイズ を小さめに決めれば良い テキストの「新しく開発されたダイエット食品」の例 要は「何と何のトレードオフなら取れるか」でしかない 2014/2/20 40
41.
Cohen’s dなど「Cohenのeffect size」とは? Jacob
Cohenが“Statistical Power Analysis for the Behavioral Sciences” (1988)で提唱したeffect sizeの小・中・大の基準 関数名 Cohen’s 小 中 大 pwr.2p.test h 0.2 0.5 0.8 pwr.2p2n.test h 0.2 0.5 0.8 pwr.anova.test f 0.1 0.25 0.4 pwr.chisq.test w 0.1 0.3 0.5 pwr.f2.test f2 0.02 0.15 0.35 pwr.norm.test d 0.2 0.5 0.8 pwr.p.test h 0.2 0.5 0.8 pwr.r.test r 0.1 0.3 0.5 pwr.t.test d 0.2 0.5 0.8 pwr.t2n.test d 0.2 0.5 0.8 2014/2/20 41
42.
t検定のサンプルサイズを求める > pwr.t.test(n=NULL,d=0.5,sig.level=0.05,power=0.8) # Cohen’s
d = 0.5(中)で固定 Two-sample t test power calculation n = 63.76561 # n = 64が必要ということ d = 0.5 sig.level = 0.05 power = 0.8 alternative = two.sided NOTE: n is number in *each* group 2014/2/20 42
43.
t検定のサンプルサイズを求める > pwr.t.test(n=NULL,d=0.8,sig.level=0.05,power=0.8) # Cohen’s
d = 0.8(大)に上げてみた Two-sample t test power calculation n = 25.52457 # n = 26と、小さいサンプルサイズに d = 0.8 sig.level = 0.05 power = 0.8 alternative = two.sided NOTE: n is number in *each* group 2014/2/20 43
44.
cohen.ES関数でeffect sizeを呼び出す 実はcohen.ES関数で、Cohenが提唱した小・中・大 それぞれのeffect sizeの値を呼び出すことができる >
cohen.ES(test=“t”,size=“medium”) # t検定の「中」 Conventional effect size from Cohen (1982) test = t size = medium effect.size = 0.5 > cohen.ES(test=“anov”,size=“large”) # ANOVAの「大」 Conventional effect size from Cohen (1982) test = anov size = large effect.size = 0.4 2014/2/20 44
45.
ややこしい例(1): ANOVA > pwr.anova.test(n=NULL,f=0.25,k=5,sig.level=0.05,power=0.8) Balanced
one-way analysis of variance power calculation k = 5 # 群の数 n = 39.1534 # 群ごとのサンプルサイズ f = 0.25 sig.level = 0.05 power = 0.8 NOTE: n is number in each group 2014/2/20 45
46.
ややこしい例(2): 一般化線形モデル > pwr.f2.test(u=4,v=NULL,f2=0.35,sig.level=0.05,power=0.8) #
一般化線形モデルについては与える引数が独特 # u: 説明変数側の自由度, v: 目的変数側の自由度 Multiple regression power calculation u = 4 # 「説明変数の自由度を」4に固定 v = 34.14884 # 「目的変数の自由度が」35以上 f2 = 0.35 sig.level = 0.05 power = 0.8 2014/2/20 46
47.
おまけ:直接effect sizeを Rで求める方法(dのみ) 2014/2/20 47
48.
Stack Overflowに出ていたやり方(2群のt検定) > set.seed(45)
# 単に再現性を出すため > x <- rnorm(10, 10, 1) > y <- rnorm(10, 5, 5) > > cohens_d <- function(x, y) { + lx <- length(x)- 1 + ly <- length(y)- 1 + md <- abs(mean(x) - mean(y)) # 平均値の差 + csd <- lx * var(x) + ly * var(y) + csd <- csd/(lx + ly) + csd <- sqrt(csd) # Common error varianceはこれで出せる + + cd <- md/csd # これでCohen’s dが求まる +} > res <- cohens_d(x, y) > res [1] 0.5199662 # 0.5はCohen’s dとしては結構デカい方 2014/2/20 48
49.
今回語り尽くせなかったところは… ブログで補足記事を書くかも?(期待しないでください) 2014/2/20 49