見出し画像

統計的仮説検定のシミュレーションができるアプリを作った

こんにちは、
今回は母集団分布から標本を生成して統計的仮説検定を行うシミュレーター「simulation significant test」を作ったのでそちらの紹介をしていきたいと思います。

アプリのリンクはこちら(Streamlit Cloudを使っています)

GitHubのリンクは↓です。ローカルで動かしてみたい場合はCloneして使ってください!

「simulation significant test」を作った目的

統計的仮説検定は普段統計を扱うような人にとって悩みの種になっていると思います。

  • 検定手法を正しく選べている気がしない

  • 得られたデータが検定の仮定を満たしているのか

  • 統計不正をしてしまってはないか

  • 得られる有意差に意味はあるのか

  • etc..

これらのことが気になって気になって使うに使いきれない、けど他の人からはP値は?と詰められて、モヤモヤしたまま報告してしまうことはよくあると思います。

※全く気にならない方は今後は気にしてあげてください…実はそのくらい扱い辛いフレームワークなのです…あまりにP値の誤用がはびこっていることからアメリカ統計協会(ASA)が以下のような声明を出しています。

1. P 値はデータと特定の統計モデル(訳注: 仮説も統計モデルの要素のひとつ)が矛盾する程度をしめす指標のひとつである。
2. P 値は、調べている仮説が正しい確率や、データが偶然のみでえられた確率を測るものではない。
3. 科学的な結論や、ビジネス、政策におけ る決定は、P値がある値(訳注: 有意水準) を超えたかどうかにのみ基づくべきではな い。
4. 適正な推測のためには、すべてを報告する透明性が必要である。
5. P 値や統計的有意性は、効果の大きさや結果の重要性を意味しない。

https://www.biometrics.gr.jp/news/all/ASA.pdfより引用

では、統計的仮説検定はしてはいけないのかというとそうは思っていません。誤用に気を付ければエピデンスとして出して良いと思います。しかし、誤用しないためには色々な訓練を積む必要があります。正直私も自信はないですw。

そこで、特定の母集団分布から得られた標本で統計的仮説検定を行ったときにP値がどのようになるかシミュレーションできるアプリを作りました。

これを使えば、間違った設計での統計的仮説検定がどのように動作するか、どのような分布にどのような検定手法が使えるかを確認することができます。ちょっとだけ統計的仮説検定を行う勇気が湧きます。

※統計的仮説検定の誤用を完璧に確かめられるようなアプリではありません。他にも気を付けるべきことがあります。

使い方

上から設定をしていき、最後に「シミュレーション開始」を押すとシミュレーションできます。

1. 検定の設定

統計的仮説検定の設定部分
  • 検定: 使用する検定手法を選択します

  • ~検定のメソッド: 選んだ検定の詳細なメソッドを選択します

  • 対立仮説を棄却する向き: 棄却域の向き(両側, 右側, 左側)を選択します

  • 有意水準: 有意水準を入力します

2. 母集団分布の設定

母集団分布の設定部分
  • ~群の分布: 母集団分布の名前を選択します

  • ~群のサンプルサイズ: 生成するサンプルサイズを入力します

  • パラメータ: 母集団分布の母数を入力します

    • 例: norm

      • mu: 母集団分布の平均

      • sigma:  母集団分布の標準偏差

※群間比較の場合はそれぞれに設定します

3. シミュレーションの設定

シミュレーションの設定部分
  • シミュレーション回数: 統計的仮説検定を行う回数を選択します

  • 検定のフロー: どのように検定を操作するかを選択します

    • 恣意的にp-Harkkingするとどのようになるかを検証できます

  • 乱数シード値を設定する: チェックボックスをいれるとシミュレーション時の乱数シードを固定できます

    • シード値も入力することができます

ここまで入力すると、シミュレーションの条件や母集団分布を確認できます。

4. シミュレーション開始、結果の表示

シミュレーションの結果

「シミュレーションを開始」をクリックすることで統計的仮説検定を繰り返し、得られたP値の分布を可視化します。
このとき、P値の分布が一様分布っぽくなっていれば検定のエラー確率をコントロールできており、理論通りの検定ができています。

※条件やPCのスペックにも寄りますが、デフォルトの設定であれば10秒ほどで完了します

例えば、対数正規分布のように歪んだ分布同士でT検定(Welch)を行うと次のようなP値分布を取ります(両郡同じ母数を使っています)。
この設定では、有意差があるのにそれを見逃す第二種の過誤が大きくなっています。なので、各種検定手法の仮定を守ることが大切なのです。

正規性を満たさないT検定

ということで、シミュレーターを作ってみた!の記事でした。皆さんも使ってみて、良い検定と悪い検定を区別できるようになりましょう。

要望あれば、機能拡充もしちゃおうかなと思っております。使ったら是非感想を教えてください!

最後までお読みいただきありがとうございました!!

※結構会心のできなので、コード部分の解説書くかも.…

この記事が気に入ったらサポートをしてみませんか?