2016-11-25_8-55-29_No-00

こんにちは、ねこし@大学教員ブロガー です。

今回はサンプル数が少ないとき注意することを書きます。

先日、こちらにこんな質問をいただきました (質問なさった方に深謝です!)。

ある疾患の発生を、数種の臨床検査値・臨床所見から推定するモデルを検討するため、サンプルをモデル構築用、検証用に分ける際の方法についてご教示ください。この疾患が希少疾患であるため、全体における発症例数が少なく、 サンプル全体からランダムにモデル構築用、検証用に分けた場合には、得られたモデル構築用データによっては非常に不安定なモデルとなる可能性があるとします。このとき、疾患発症例、疾患非発症例からそれぞれランダムにモデル構築用、検証用とを抽出してデータセットを作成する、という方法で解析を行った場合、その解析結果には何かバイアスが生じると考えられますでしょうか。

以下はわたしの回答の抜粋です。

サンプル数が少ない中でモデル構築用サンプルとモデル検証用サンプルとに分けることは悩ましいですよね。お察し致します。

サンプル数が多いときはランダムにモデル構築用、検証用とに分けるので問題ないのですが、サンプル数が少ないときはランダムに分けるとそれぞれが似たサンプルだけになってしまい、その結果バイアスが生じる可能性があります。

対応策の一つは、ランダムにモデル構築用、検証用とに分けた検討を、乱数を変えて複数回(100回とか1000回とか)行うことです。それぞれのサンプルについて、モデル検証用に選ばれたときの複数個の推定値の平均値を代表的な推定値とします。

もう一つの対応策はこちらで紹介したKennard-Stone (KS) アルゴリズムを用いることです。

http://univprof.com/archives/16-06-22-4145563.html

これによってまんべんなくモデル構築用サンプルを選ぶことができます。

サンプル数が少ないとき注意すること

サンプル数が少ないときは結果が不安定になります。モデル構築用サンプルとモデル検証用サンプルとに分けるときに、バイアスが生じることもその一つです。

なので、サンプル数が少ないときに、特に解析のために乱数を使った場合は、一回だけでなく何回も繰り返し計算したほうが良いです。モデル構築用サンプルとモデル検証用サンプルとに分けるときも、一度分けて解析するだけでなく、分けて解析することを繰り返し行うわけです。

そして、得られた複数の結果の平均値を代表的な値としましょう。さらに、複数の結果の標準偏差を見て、結果の議論をしましょう。たとえば、標準偏差の3倍を平均値から引いたところから標準偏差の3倍を平均値に足したところまでに、結果の99.7%が含まれると解釈できます(結果が正規分布に従う場合)。実際に計算してみると、思ったより結果のばらつきが大きくなると思います。サンプル数が少ないときはそれだけ結果が不安定になるということです。

Kennard-Stone (KS) アルゴリズムのプログラム公開中!

回答でも紹介したKSアルゴリズムを実行するプログラムはこちらにあります。noteでもSPIKEでもAnyPayでも言語が同じであれば同じものです。

MATLAB言語(note): https://note.mu/notes/n15980a97db70

MATLAB言語(SPIKE): https://spike.cc/shop/univprof/products/NSToCvga

MATLAB言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/efSwVk2wfi

R言語(note): https://note.mu/notes/n3eb279935738

R言語(SKIPE): https://spike.cc/shop/univprof/products/AZaXzeAQ

R言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/pua5ZIzdh5

Python言語(note): https://note.mu/univprof/n/n768be1252865

Python言語(SPIKE): https://spike.cc/shop/univprof/products/yT6I0bmJ

Python言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/g3LfVIpQvh

ここまでお読みくださりありがとうございます。

ではでは!

データ解析の質問 募集中!

こちらへお願いします!

ご案内。

オススメ記事セレクション。

twitterでも発信中。

この記事に興味を持っていただけましたら、ぜひフォローをお願いします!


無料メルマガでブログにない情報を配信中。

データ解析・分析に興味がありましたらぜひ登録をお願いします!
無料メルマガの登録はこちら