プログラミングなしでベイズ統計はできる? 無料ツール「JASP」を使えば、マウス操作だけでベイズ推定やベイズ検定が行えます。これまでPythonで書いてきた二項検定やt検定を、JASPで手軽に試す方法を紹介。『社会人1年生から学ぶ、やさしいデータ分析』ベイズ統計編、番外編(第5回)です。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
ベイズ統計のためのツールにはどんなものがあるの? 連載『社会人1年生から学ぶ、やさしいデータ分析』のベイズ統計編。今回は第5回です。本編の第2回で見た二項推定や二項検定などの事例を使って、JASPと呼ばれる統計ツールを紹介します。JASPはプログラミングの知識が全くなくても対話的に使えるツールで、古典的な手法とベイズ的な手法での統計が可能になっています。
この連載では、簡単な事例を見ながら、ベイズ統計の考え方と分析の進め方を解説します。新しい用語や考え方が幾つも出てきますが、全てを理解しなくても大丈夫です。登場するたびに、分かりやすく丁寧に説明するので、その時点で分からないことがあっても気にせず、先に進んでください。回を追うごとに、少しずつ理解が深まります。どんな考え方で、どんな手順で分析を進めるのか、といった大きな流れを捉えてください。
この連載では、データをさまざまな角度から分析し、その背後にある有益な情報を取り出す方法を学ぶ『社会人1年生から学ぶ、やさしいデータ分析』シリーズの「記述統計と回帰分析編」「確率分布編」「推測統計(区間推定編・仮説検定編)」に続く「ベイズ統計編」です。
これまでの推測統計を土台に、近年活用が広がっているベイズ統計の考え方と分析手順を、古典的な手法との違いを整理しながら解説します。初めての方でも無理なく理解できるよう具体例を通して進めるとともに、ベイズ的なアプローチの特徴やメリットを実感できる構成とし、「どのように考え、どう使い分けるのか」に重点を置いて解説していきます。
筆者紹介: IT系ライターの傍ら、かつて、非常勤講師として東大で情報・プログラミング関連の授業を、一橋大でAI関連の授業を担当。まだ発展途上のようだが、生成AIへの質問と回答を分野ごとにまとめ、体系的に整理、補足しつつ、さらに個別の学びを促す記述を加えた資料を一貫して作成できるツールが実用レベルで本格的に使えるようになると、書籍の概念が変わるのではないかと思ったりしている。一斉授業だったものが、ユーザーに合った個別指導のできる書籍といったイメージ。そうなると、出版社のビジネスモデルも大きく変わり、私の仕事もなくなってしまいそうだけど、まあ、そのときは、縁側でお茶でもすすりながら、庭の景色を眺めて暮らすことにしようと思う。ウチには縁側も庭もないけど。
前回までは、ベイズ推定やベイズ検定の仕組みを理解し、それを応用するために、Pythonによるプログラミングを行ってきました。モデルを詳細に定義し、目的の処理を記述するのに適した方法ですが、プログラミングに慣れていない方にはハードルが高く感じられたかもしれません。この連載は、一歩ずつ手順を記述することを通して、ベイズ統計の仕組みをじっくりと身に付けることを主旨としていますが、ある程度決まり切った手法を適用するなら、対話的なツールを利用することは、現実的な選択肢です。
その選択肢の一つがJASPと呼ばれる統計パッケージです。JASPは無料で利用できるオープンソースのソフトウェアで、JASPという名前はベイズ統計の先駆者であるSir Harold Jeffreysにちなんで付けられたものです(Jeffreys's Amazing Statistics Programの略です)。プログラミングの知識がなくても、統計のさまざまな手法を対話的に実行できます。
例えば、図1は、第2回で取り上げた事例を基に、二項分布の母比率θのベイズ推定を行った画面(マナブくんの解説を加えたもの)です。詳しい説明は後回しにしますが、JASPがどのようなアプリであるかがイメージできると思います。
図1 JASPの設定画面と結果画面(ベイズ二項推定の例)JASPでは、設定画面で分析方法や値を指定すると即座に結果が表示されます。図1では、とりあえずJASPの画面イメージを確認していただくだけにして、JASPでできることや、インストール方法、使い方の例については、この後、順に説明します。
JASPのインストール方法を説明する前に、JASPでどのようなことができるかを簡単に紹介しておきます。JASPでは、古典的な手法(いわゆる頻度論)による統計も、ベイズ的な手法による統計も可能ですが、ここでは、ベイズ的な手法でできることを一覧にしておきます(JASPのツールバーに表示されるボタンに対応しています)。
| 分類 | 手法 | 備考 |
|---|---|---|
| t検定 | 独立した2群のt検定 | ステューデントのt検定に対応(第6回) |
| 対応のある2群のt検定 | (第7回) | |
| 1群のt検定 | (第3回、第4回) | |
| 分散分析 | 分散分析 | (第13回、第14回) |
| 反復測定分散分析 | ||
| 共分散分析 | ||
| 回帰 | 相関 | (第8回) |
| 線形回帰 | (第11回、12回) | |
| ロジスティック回帰 | ||
| 度数分布 | 二項検定 | (第1回と第2回) |
| A/Bテスト | ||
| 分割表 | カイ二乗検定(独立性の検定)に対応(第9回) | |
もちろん、上に示したものは、全ての機能のうち「はじめの一歩」として取り組みやすい、ごく一部の基本的なものだけです。詳細については、JASPのWebサイトに記されている特長の一覧や、使い方の一覧を参照してください。かなり詳細な分析までできることが分かると思います。
初期設定の状態で表示されているボタン(機能)以外にも、さまざまな追加のモジュールが用意されています。画面右上の[+]ボタンをクリックすると、追加のモジュールが選択できます。追加されたモジュールを利用するためのボタンもツールバーに表示されるようになります。
なお、この記事の公開日と書籍の刊行時期とがたまたま重なったので、ステマっぽい話になりますが、2026年7月末に近代科学社から『JASPではじめる 基礎からのベイズ統計学』(Thomas J. Faulkenberry著、羽山博訳)が刊行されます。ベイズ統計の仕組みや具体的な適用方法が実感を持って身に付けられる一冊です。興味のある方はぜひご一読ください。
では、JASPのインストール方法を見てみましょう。JASPのサイトにアクセスし、[Download JASP]というボタンをクリックすれば、各OS用のインストールプログラムがダウンロードできる画面が表示されます(図2)。
図2 JASPのインストールプログラムを取得できるWebサイトJASPが対応しているOSはWindows(Windows 10, 11)、macOS(Intel版、Apple Silicon版)、Linux、Chrome OSです。Windowsの場合はMicrosoft Storeから、Linuxの場合はFlathubからダウンロードしてインストールするのがお手軽です。ただし、Flathubを利用するには、あらかじめFlathubのセットアップ(Flatpakのインストールなど)が必要になることがあります。詳細はセットアップの方法を掲載したWebサイトを参照してください。
インストール後、JASPを起動すると、最初は英語での画面になります。日本語表示にしたいときは、メニューボタン(左上の[≡])をクリックし、[Preferences]-[Interface]を選択して、[Preferred Language]グループの[Choose Language]リストから[ja - 日本語]を選択します(図3)。
ここからはJASPの具体的な利用例を幾つか紹介します。いずれもこれまでに取り扱った例なので、事例の説明は簡単に済ませ、手順を中心にお話しします。二項分布の母数(成功確率θ)をベイズ推定する例については、すでに図1に掲載しました。そのための手順については説明していませんが、先に二項検定の方法を説明します。以下の説明を読めば、二項推定も同様にできることが分かると思います(後で補足します)。
というわけで、同じ事例でベイズ二項検定を行いましょう。つまり、30回の試行中、成功が23回、失敗が7回というデータが得られた場合に、以下の仮説についてベイズ因子(ベイズファクター)BF10を求めようというわけです。
ここでは、θの事前分布をα=1, β=1のベータ分布(つまり連続型一様分布)とします。
測定値(成功か失敗か)を1と0で表し、データとして入力して計算する方法もありますが、データが集計されており、成功と失敗の数が分かっているのであれば、[ベイズを学ぶ]モジュールを利用するのが簡単です。まず、画面の右上に表示されている[+]ボタンをクリックして、[ベイズを学ぶ]のチェックマークをオンにします(図4)。
図4 JASPで利用できるモジュールを追加するツールバーに表示された[ベイズを学ぶ]ボタンをクリックし、[カウント]の下にある[二項検定]を選択すると、ベイズ二項検定を実行できる画面になります。図5のように設定すれば、画面の右側に結果が即座に表示されます。設定内容については、図の後に箇条書きで記しておきます。
図5 ベイズ二項検定を行う手順は以下の通りです。図5は以下の設定を行った後の画面です。
大体の意味は分かると思いますが、仮説0で指定した「Spike」というのが目新しいかもしれません。これは、ある一点に値が集中している(グラフにするとスパイク=鋭い突起のような形になっている)ことを表します。つまり、仮説0(H0)が、θ=0.5であることを表しています。[パラメータ]の0.5という値がその指定です。
一方の仮説1(H1)については、最初にθ ≠ 0.5と記しましたが、正確に言えば、θはα=1,β=1のベータ分布に従うということでした(この連載の第2回で触れました)。
[事前確率]は、それぞれの仮説が正しいと想定される事前の確率です。事前にはどちらも同等であると考えられるので、両方とも0.5を指定しています。実際には、比が取られるので、両方を既定値の1のままにしておいても構いません。0.5としたのは、確率であることが分かるように(全体の合計を1に)したかったことと、「五分五分」であることを表したかったからです。
結果は、BF10=17.01でした。Jeffreysの評価尺度によると、仮説1(H1)を支持する強い証拠となっていることが分かります。つまり、母比率はθ ≠ 0.5である(実質的にθ > 0.5である)と言えます。
最初の図1に示したベイズ二項推定を行うには、[ベイズを学ぶ]ボタンをクリックして[二項推定]を選択します。[カウントデータ]の[成功数]に23を、[失敗数]に7を入力して、[モデル]の[+]ボタンをクリックします。既定でα=1,β=1のベータ分布が指定されているので、図1の上の表が即座に作成されます。さらに、[事前分布と事後分布]セクションを開き、[事後分布]、[個別]、[点推定値]、[CI]をオンにすれば、図1の下のグラフが表示されます。「CI」は「Credible Interval」の略で「信用区間」を表します。
この連載の第3回で取り上げた事例についてもJASPでの分析例を紹介しておきましょう。以下の2つの分析を行いました。
こちらの事例では、図6のようにデータを入力しておく必要があります。ただし、30件のデータを入力するのは面倒なので(紙面にも全ては掲載していないので)、あらかじめデータを入力したCSVファイルをこちらに用意しておきます。ブラウザーでURLにアクセスし、右上の[Download raw file]ボタン(↓の下に␣が表示されたボタン)をクリックしてダウンロードしてください。JASPの画面に戻って左上の[≡]ボタンをクリックし、[開く]-[コンピュータ]を選択して[参照]ボタンをクリックすれば、読み込むファイル(05.csv)が指定できます。
図6 サンプルデータを読み込んだ画面データの読み込みができたら、ツールバーの[t検定]をクリックし、[ベイジアン]の下の[1標本のt検定]を選択します。ここでの帰無仮説と対立仮説は以下の通りです。μは母平均です。
図7のように設定すれば、ベイズ因子BF10が表示されます。設定内容については、図の後に箇条書きでまとめておきます。
1変数のベイズt検定を行うための必要最低限の設定は以下の通りです。
これで、結果画面の上の表が表示されます。BF10が78.93となっていることが分かります。これをJeffreysの評価尺度に照らし合わせると、H1が支持される「非常に強い証拠」となっています。つまり、母平均は100とは異なると考えられる(実質的には母平均は100より大きい)、ということです。
第3回で作成したプログラムを実行すると、BF10の値は68.60となり、上の結果とは異なります。第3回のプログラムではマルコフ連鎖モンテカルロ法によるシミュレーションを行いましたが、JASPでは、内部的にRの関数を呼び出して、ガウス求積法と呼ばれる積分のアルゴリズムにより(かなり正確な)近似値を求めています。値が異なるのはそのためです。また、事前分布も異なっています(後述)。なお、第3回のプログラムでdrawsの値を増やせば、JASPでの値に近づきます。
さらに、母数(パラメーター)を推定するには、図7に示した以下の設定を行います。
これで、結果画面の下のグラフが表示されます。注意すべき点は、JASPでは母平均と母標準偏差をそれぞれ推定するのではなく、効果量を推定するということです。そのため、効果量の事前分布としてコーシー分布と呼ばれる特殊な分布が使われます。
実は、母分散の事前分布として逆ガンマ分布を使い、母平均の事前分布を正規分布とすると、母平均の事後分布も正規分布となります。この場合、母平均の分布がt分布と一致することが分かっているので、サンプリングを行わなくても母平均の推定値や信用区間が簡単に(解析的に)求められます。図7の設定画面の下にある[その他の統計]の[記述統計量]のチェックをオンにすれば、母平均の点推定値や信用区間が表示されます(画面の右下です)。
蛇足になるかもしれませんが、JASPと同様の方法で母平均の点推定値と信用区間を求めるプログラムをこちらに作成しておきました。最初のコードセルをクリックし、[Shift]+[Enter]キーを押して実行すれば、結果が表示されます(図7の結果と一致します)。
プログラムについての簡単な説明はサンプルファイルに含めてありますが、きわめて簡単な式で計算できます。具体的には、効果量の事前分布としてコーシー分布を使い、母分散などについては事前情報を無情報に近づけたJeffreys事前分布と呼ばれる分布を使うものとしています。その場合、母平均の事後分布が
というt分布に従います。また、母分散の事後分布は、
の逆ガンマ分布に従います。
この辺りの話は数学的にかなり難しくなるので、ここではそのまま結果を受け入れることにしましょう。というわけで、コーシー分布やJeffreys事前分布などについて詳しく知らなくても、これらの式を使えば、点推定値や信用区間が求められます。つまり、t分布の平均は
で、これが母平均の推定値に一致します(一周回って普通の結果に戻ってきましたね)。また、逆ガンマ分布の平均はβ/(α−1)という公式で求められます。従って、母分散の点推定値も簡単に求められるというわけです。
ただし、JASPと同じ方法でベイズ因子を求めるには、数値積分を行って周辺尤度(しゅうへんゆうど)の比を求める必要があります。ただ、かなり難しくなるので、これ以上は触れないこととします(一応、サンプルファイルに簡単な説明を加えてありますが、この連載の目的はあくまでもベイズ統計「はじめの一歩」です。現時点ではあまり気にしないでください)。
今回は、番外編として、ベイズ推定やベイズ検定を対話的に行うためのソフトウェアJASPを紹介しました。ここでは、機能のごく一部だけしか紹介していませんが、かなり詳細な分析ができるようになっています。もちろん、モデルの定義などを自由に変更してさまざまな分析を行うには、Python(とPyMCなど)の知識が必要になりますが、相関係数の検定や回帰分析、分散分析など、一般的な分析を行うには十分な機能が備わっているので、ベイズ統計に取り組む「はじめの一歩」としてもオススメできます。最初に触れたように、ある程度、理屈が分かれば、実用的にはJASP(などのツール)を使うのも現実的な選択です。
さて、次回は本編に戻って、独立した平均の差のベイズt検定に取り組みます。「運動部と非運動部の体力差はあるのか?」という事例を取り扱います(いかにもありそうですが)。どうぞ、お楽しみに!
Copyright© Digital Advantage Corp. All Rights Reserved.
編集部からのお知らせ