回帰分析におけるサンプル数の決定方法について

# はじめに
データクリーニング後に、サンプル数が思ったよりも少なく、有効な回帰分析ができるか怪しくなりました。
そのため、回帰分析を行う際に、有効なモデルを得るためのサンプル数はどのように算出すれば良いのかを調べました。
メモ程度の内容です。

# A. パラメータ数の10倍
Peter(1995)が提案した考え方。
パラメータ数の数uに対する標本数の割合EPV（event per variables)がどの程度が良いのかを論じている。
分析を繰り返し推定された係数の分布から、必要なEPVを検討している。
その中で、EPV=10、つまりパラメータ数の１０倍が良いと提言。
詳しくはMikuHatsuneさんの[ブログ記事](http://d.hatena.ne.jp/MikuHatsune/20160928/1475046029)で。

# B. 統計的仮説検定に基づいた算出
統計的仮説検定に基づいて算出する方法。
仮説設定と有意水準、効果量、検定力の設定を行わなければならない。

### 回帰分析における仮説設定

・帰無仮説
　説明変数はどれも目的変数を説明できない
　回帰係数が０である場合と統計的な差があるとは言えない
・対立仮説
　回帰係数の少なくても１つは０ではない


### 有意水準 α
　対立仮説が正しいのに帰無仮説を採択してしまう確率　＝ 第一種過誤を起こす確率
　帰無仮説を棄却する基準となる。
　0.05(5%)や0.01(1%)、0.001(0.1％)などと設定するのが通例。

### 効果量 d
　αはサンプル数が大きくなるにつれて必然的にP値は小さくなってしまう。
　２群にどの程度差があるのかを表す指標としては不適切である。
　サンプル数によらず２群にどの程度差があるのかを表したものが効果量である。
　効果量にはいくつかの種類がある。
　　・平均値の差を標準化したもの
　　　　Cohon’s dと呼ばれる、群間の平均値が標準偏差の何倍離れているか表したもの
　　・変数間の関係の強さを表すもの
　　　　相関係数rを利用して判断するもの
　　　　- Cohen’s f<sup>2</sup>

```math
         　f^2=\frac{R^2}{1-R^2}
```

　ここで、R<sup>2</sup>は回帰分析における決定係数。
　
　決定係数が大きくなるといずれかの回帰係数の大きさが０ではない可能性が高くなる。
　この時、帰無仮説を棄却するにはサンプル数があまりいらなくなる。
　決定係数が小さくなると回帰係数の全てが０である可能性が高くなる。
　この時、帰無仮説を棄却するにはサンプル数が沢山必要になる。
　効果量が小さいと設定すると、決定係数が低いモデルでも信頼できる係数が得られる。

　Cohenは効果量の目安を示唆している。

|  | Cohen's f<sup>2</sup> | 決定係数R<sup>2</sup> |
|:-----------|:-----------:|:------------:|
| 効果量　小 | 0.02   | 0.02       |
| 効果量　中 | 0.15   | 0.13       |
| 効果量　大 | 0.35   | 0.26       |

　少しでも影響している変数を検出したい場合には、効果量　小　と設定し、
　大きく影響する変数のみを検出したい場合には、効果量　大　と設定する。

　他の分析の場合における効果量の目安等の詳細は、[水本・竹内（2008）](http://www.mizumot.com/files/EffectSize_KELES31.pdf)をご覧ください。

### 検出力 1-β
　帰無仮説が誤りの時に、帰無仮説を棄却しない確率βをとした時の1-β。
　帰無仮説が誤りの時に帰無仮説を棄却する確率　= 　第二種の過誤を犯さない確率
　対立仮説を対立仮説として採択する確率
　Cohenの示唆によって0.8に設定することが多い。
　例：検出力=0.8　
　　　対立仮説が正しい場合の仮説検証を100回行なった場合、80回は検出できる（対立仮説を採択する）



## Rで算出
Rのpwrパッケージを利用する。
様々な分析におけるサンプル数、検定力等の値を算出する関数が提供されている。
重回帰分析はpwr.f2.test関数を利用する。

 <設定>
    効果量：f2=0.02　
    検出力：0.8 
    有意水準：sig.level=0.01
    パラメータ数：u=15　 


```
> pwr.f2.test(u=15, v=NULL, f2=0.02, sig.level=0.01, power=0.8)

     Multiple regression power calculation 

              u = 15
              v = 1270.996
             f2 = 0.02
      sig.level = 0.01
          power = 0.8
```

vは自由度であり、v=n-u-1という関係がある。
よって、必要なサンプル数n＝v+u+1=1287くらい。

効果量を0.15、パラメータ数を15にしてみる。

```
> pwr.f2.test(u=15, v=NULL, f2=0.15, sig.level=0.01, power=0.8)

     Multiple regression power calculation 

              u = 15
              v = 169.1715
             f2 = 0.15
      sig.level = 0.01
          power = 0.8
```
必要なサンプル数は185くらい。


効果量を0.02、パラメータ数を5にしてみる。

```
> pwr.f2.test(u=5, v=NULL, f2=0.02, sig.level=0.01, power=0.8)

     Multiple regression power calculation 

              u = 5
              v = 895.0266
             f2 = 0.02
      sig.level = 0.01
          power = 0.8
```

必要なサンプル数は901くらい。

色々値を変えて見ましたが、効果量の影響が大きいようです。

# おわりに
AとBのどちらの考え方がいいのか、ということが気になります。
MikuHatsuneさんが記事で言及している通り、意味のある有意な係数を求めたい場合と作成したモデルを利用して予測を行いたい場合で使い分ける必要があると思います。

　　　



[ 参考 ]
http://d.hatena.ne.jp/MikuHatsune/20160928/1475046029
https://ameblo.jp/intelligent-pharmacist/entry-12229110012.html
https://cran.r-project.org/web/packages/pwr/vignettes/pwr-vignette.html
http://www.mizumot.com/files/EffectSize_KELES31.pdf
http://www.relak.net/psy/power/p4_regress.htm
http://tjo.hatenablog.com/entry/2013/06/21/190729