ROC曲線分析をしたいが、何人のデータを集めたらいいかわからない。
こんなときどうするか?
ROC 曲線分析に必要なサンプル数の計算を R で行う準備
まずpROCパッケージをインストールする。
インストールは一回でOK。
install.packages("pROC")
毎回呼び出しのためlibrary()を実施。
library(pROC)
ROC 曲線分析に必要なサンプル数を計算するのに必要な数値
ROC曲線分析のサンプルサイズ計算に必要な数値は、AUC (Area Under the Curve) の見積もり値と、検出力だ。
AUCが0.5の時に、凸なしで、対角線のようになる。
この場合は、検査として役に立たない。
AUCは、0.5よりも大きいことが大前提で、仮説検定は帰無仮説は0.5以下、対立仮説は0.5超とするのが妥当なため、片側検定が望ましい。
以下も参照。
たとえば、AUCが0.8、検出力0.90、有意水準5%、片側検定、疾患あり、なしが1:1とする。
- AUC=0.80
- power=0.90
- Significant level=0.05
- ratio of normal to abnormal = 1:1
- one-sided test
このとき以下のようなスクリプトを書く。
power.roc.test(auc=0.80, power=0.90, alternative="one")
結果として、疾患ありもなしも、13.38553切り上げて14例ずつと計算される。
> power.roc.test(auc=0.80, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 13.38553
ncontrols = 13.38553
auc = 0.8
sig.level = 0.05
power = 0.9
疾患なしが2、疾患ありが1とすると、21例と11例がそれぞれ必要と計算され、合計32例が必要となる。
疾患なし:ありの比はkappa=という変数で指定する。
> power.roc.test(auc=0.8, power=0.9, alternative="one", kappa=2)
One ROC curve power calculation
ncases = 10.34798
ncontrols = 20.69596
auc = 0.8
sig.level = 0.05
power = 0.9
ROC 曲線分析のサンプル数計算に必要な AUC と検出力はどう決めるか
特に決まりはない。
研究者が良かれと思う基準で決めるしかない。
先行研究がある場合は大いに参考になる。
AUCが1に近いと予想される場合、必要なサンプルサイズは小さくなる。
AUCを0.9にすると、14例ずつだったものが、7例ずつになる。
> power.roc.test(auc=0.90, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 6.124355
ncontrols = 6.124355
auc = 0.9
sig.level = 0.05
power = 0.9
power.roc.test() の作成者は、患者でも対照でも、必要サンプルサイズが10例を下回ったら、最低でも10例サンプリングするのが望ましいと勧めている。
AUCが0.5に近いと予想すると、必要なサンプルサイズは大きくなる。
AUCを0.6にすると、14例ずつだったものが、135例ずつになる。
> power.roc.test(auc=0.60, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 134.638
ncontrols = 134.638
auc = 0.6
sig.level = 0.05
power = 0.9
検出力を下げると必要なサンプルサイズは小さくなる。
検出力を 0.8 に下げると、14例ずつだったものが、10例ずつになる。
> power.roc.test(auc=0.80, power=0.80, alternative="one")
One ROC curve power calculation
ncases = 9.933712
ncontrols = 9.933712
auc = 0.8
sig.level = 0.05
power = 0.8
検出力を上げると必要なサンプルサイズは大きくなる。
検出力を0.95に上げると、14例ずつだったものが、17例ずつに変わる。
> power.roc.test(auc=0.80, power=0.95, alternative="one")
One ROC curve power calculation
ncases = 16.62344
ncontrols = 16.62344
auc = 0.8
sig.level = 0.05
power = 0.95
ROC 曲線分析に必要なサンプル数の計算をエクセルで行う
上記の計算をエクセルでも行えるようにした。
よければ。
ROC曲線のためのサンプルサイズ計算【エクセルでサンプルサイズ】 | TKER SHOP
以下は、使い方動画。
引用文献情報
pROC パッケージの引用文献情報は、以下のとおり
Xavier Robin, Natacha Turck, Alexandre Hainard, Natalia Tiberti,
Frédérique Lisacek, Jean-Charles Sanchez and Markus Müller (2011).
pROC: an open-source package for R and S+ to analyze and compare ROC
curves. BMC Bioinformatics, 12, p. 77. DOI: 10.1186/1471-2105-12-77
<http://www.biomedcentral.com/1471-2105/12/77/>
上記エクセルファイルを使用した場合の引用文献情報も、 pROC パッケージの計算プログラムの一部を移植したものなので、pROC パッケージの引用文献情報と同一でよいと考える
まとめ
ROC曲線分析のサンプルサイズ計算を R で行う方法を紹介した。
pROCパッケージを使って計算できる。
エクセルでも計算できるようにした。
予想 AUC と検出力をどうするかを、先行研究を踏まえて決めておく必要がある。
コメント
コメント一覧 (1件)
[…] R で ROC 曲線分析に必要なサンプル数を計算する方法 ROC曲線分析をしたいが、何人のデータを集めたらいいかわからない。 […]