18 11 12 13 14 15 16 17 18 19 20 20 このデータをプロットすると右のようになります。このデータの Y を 0 .962450252 0 .958467720 0 .693674708 0 .693644477 0 .691644469 0 .592220489 0 .460733641 ー 0 .004462148 ー 0 . 106713568 ー 0 . 125764464 19 18 17 16 15 14 13 12 11 X で回帰するのが本節のモデリングです。このモデリングを、式で示し > test_lm く一 1m(YNX,data=dataset) で行ってみます。 とはいえ通常の回帰分析でもできますので、念のため通常の回帰分析 Y = 0 十 bX 十び てみます。 ( 3 ・ 1 ) 第 3 章 RStan によるべイズ統計解析 0 0 0 > test_lm Ca11 : lm(formula = Y Coefficients: (lntercept) ー 1 . 8719 15 X , data dataset) 0 . 1537 通常、回帰分析ではコマンド lm を使いますが、 RStan で回帰分析を 行う場合は、 Y が平均。十Ⅸ、分散の正規分布に従うものと仮定し 20 ( 3 ・ 2 ) ます。 data { int N ; real X [N] ; real Y[N] ; parameters{ real a; rea1 b; real く Iower=O> sigma; Bayes Analysis Maniax それに基づいて作成したモデルを作り、「 stan-testl. stan 」というファイルに保存します。内容は次の通りです。 フリーソフトで始めるべイズ統計解析
5 基 の = = ロ イ べ 章糸 第理 1 ュはじめに 本書では、フリーの統計ソフト「 R 」を中心としたフリーソフトを用いたべイズ統計解析の手法について解説します。 そもそも統計学の考え方として大きく 2 つわけて「頻度主義」と「べイズ主義」と呼ばれるものがあり、一般的な統計 学で使われる「頻度主義」とは、母集団のパラメータが決まっているものであり、それを標本を用いて推定するという ものです。 これに対して、べイズ主義に基づく統計学とは、母集団のパラメータも含め、あらゆるパラメータが確率的であると いう考え方に立ちます。このような考え方は、頻度主義に基づく統計学に比べて、人間の思考法に近く、統計学の実用 性をさらに高めるものと評価されています。 べイズ主義に基づく統計学においては、母集団のパラメータの確率分布について考えます ( 事前分布 ) 。そして最尤 法などによる推定によりその事前分布の確からしさを調べて、より母集団の確率分布に近い分布に更新していくという 方法をとることができます。頻度主義に基づく統計学は、母集団のパラメータが確率分布ではなく、あらかじめ決まっ ているものなのでこういう操作をすることはできません。 このような手法は、例えば迷惑メールの対策に役に立っています。迷惑メール対策では、特定の単語などを含むもの を迷惑メールとして処理しますが、たまにそれが誤っている場合が、あります。べイズ統計学に基づく判別では、その 誤りを学習させることにより、より制度を高めることができます。メールソフトでは、例えば「 Mozilla Thunderbird 」 や「 Shuriken 」 ( ジャストシステム ) などがべイズ統計学に基づく迷惑メールフィルタ ( べイジアンフィルタ ) を用い ているようです。 また、べイズ統計学に基づくと、回帰分析の制度を高めることができます。べイズ主義に基づく回帰分析では、主観 的な確率分布を分析に入れることができます。頻度主義に基づいた統計学にはできないような分析を、べイズ主義の統 計解析は実現してくれるのです。 1.2 べイズの定理 そもそもべイズ統計学で前提とするべイズの定理とは、次のようなものです ( なおこの定理は頻度主義でもべイズ主 義でも成り立っ ) 。 べイズの定理 事象と B の起こる確率について、次の関係が成り立つ。 い襾 P ( B ) P(BIA) = P(A)
3 目次 まえがき 第 1 章 理論編 . べイズ統計学の基礎 はじめに 1.2 べイズの定理 . 1.3 事前確率の設定と理由不十分の原則 1.4 確率の更新 R によるべイズ統計解析の基本 第 2 章 はじめに 2.2 離散的な事前分布を用いる方法 2.3 べータ分布を用いる方法 . ヒストグラム事前分布を用いる方法 . 2.4 第 3 章 RStan によるべイズ統計解析 はじめに 3.2 RStan のインストール . 3.2.1 RtooIs をインストールする 3.3 RStan の基本と単回帰分析 3.4 重回帰分析 . ロジスティック回帰分析 . 3.5 3.6 階層モデル 付録 : RStan で使える分布 ( 抄 ) 第 4 章 ヘイジアンネットワーク はじめに 4.1 4.2 下準備 4.3 全ての組み合わせを描画する 4.4 描画に制限を加える 4.5 数字で示されるパラメータがある場合 . 付録 : 各モデルの中身 4.6 4.6.1 全ての組み合わせを描画したもの 4.6.2 描画に制限を加えたもの 4.6.3 数値データを加えたもの KH Coder でのべイズ統計 第 5 章 はじめに 2 0.1 1 ・亠ィー亠 L.n - り′り - りイ 1 4 ・ 1 亠 1 1 上 11 1 亠 1 亠っ 1 っ 1 っ 4 つ っっ 0 つけ -4 ( ー - い】 11 っ 4 っリ 47 47
15 RStan によるべイズ統計解析 注意 第 3 章 c :\Rt001s\bin ころでチェックを入れ、さらに次のページでパスを編集する必要があります。このとき、次のパスを入れます。 が動きませんでした ) 。また、正常に作動させるためには、インストール時のウイザードで「追加タスクの選択」のと RtooIs は C ドライプ直下 (c : \Rt001s) に保存する必要があるようです ( 別のフォルダに保存したことがあります https : //cran. r—project ・ org/bin/windows/Rt001s/ 各バージョンに対応したものがありますが、 R ともども最新のものを使うようにしましよう。 RtooIs は R の大本である cran からインストールすることができます。下記のサイトにあります。 Rtools には R の https ://github.com/stan-dev/rstan/wiki/RStan—Getting-Started- (Japanese) に RStan の導入法については下記のページに書いてありますので、これを要約して解説することにします。 にすることが必要になります。そのために、まずは Rtools と呼ばれるプログラムをインストールします。 Rtools 並び RStan は C 十十言語を使っており、そのため RStan を動かすためには R で C 十十言語のプログラムを動かせるよう 3.2 ユ Rtoo をインストールする 3.2 RSta n のインストール 能になります。 す。その他、べイズ統計学を用いれば、頻度主義の統計学では難しかった、正規分布以外の分布に基づく回帰分析も可 分析とは、データセットの中に質的なデータを含む場合、その質的なデータの違いによる分析を行うことも可能なので そればかりでなく、べイズ統計を使えば、階層的なモデルを用いた回帰分析も可能です。階層的モデルに基づく回帰 義に基づく統計学の回帰分析よりも、各種パラメータの存在範囲を明確に示すことができます。 は回帰分析です。通常の頻度主義に基づく統計学でも回帰分析は可能ですが、べイズ統計に基づく回帰分析は、頻度主 本章では、 R のパッケージである「 RStan 」を使ってべイズ統計解析を行う方法を解説します。本書で取り扱う分析 3.1 はじめに http://www.masaki.j.u-tokyo.ac.jp/utas/utasindex.html ください。 属します。また本書は同データの使用ガイドラインに基づいて書かれております。詳しくは下記のサイトをご覧 下、「東大・朝日調査」 ) の有権者調査のデータを使用しております。同データの権利は東京大学谷口将紀研究室に 本書第 3 , 4 章では、実験用のデータとして、 2014 年に行われた「東京大学谷口研究室・朝日新聞社共同調査」 ( 以
第 3 章 RStan によるべイズ統計解析 75 % 97.5 % n—eff Rhat 44.48 45.28 3670 1 22 . 10 23 . 50 3772 1 12 .48 1 9 . 98 4000 1 20 . 07 20 . 52 4000 44.48 45 . 28 3670 1 44.48 45 . 28 3670 1 66 . 07 67. 15 4000 1 54.06 56 .48 4000 1 1 66 .07 67. 15 4000 4000 1 54.06 56.48 45.28 3670 1 44.48 44.48 45.28 3670 1 1 44 .48 45 . 28 3670 45 . 28 3670 1 44 .48 24 25 % 43 . 63 20 . 71 7 .47 19 . 60 43. 63 43. 63 64.89 51 . 51 64 .89 51 . 51 43 . 63 43 . 63 43 . 63 43 . 63 2 . 5 % 42 .84 19 .38 5 . 10 19 . 16 42 .84 42 . 84 63 . 70 49 . 11 63. 70 49 . 11 42 .84 42.84 42.84 42 .84 50% 44.04 21 .39 8 .74 19 .84 44 .04 44 . 04 65 .44 52 . 80 65 .44 52 . 80 44.04 44.04 44.04 44 .04 sd mean mean 44. 06 0 . 01 0 . 62 21 . 41 0 . 02 1 .06 8 . 75 0 . 03 1 .88 19 . 84 0 . 01 0 .35 44.06 0 . 01 0 . 62 44.06 0 . 01 0 . 62 0 . 88 65 .46 0 . 01 1 . 90 52 .80 0 . 03 0 . 88 65 .46 0 . 01 52 . 80 1 .90 0 .03 44.06 0 . 01 0 .62 44.06 0 . 01 0 .62 44.06 0 . 01 0 . 62 0 . 62 44.06 0 . 01 b 1 b2 sxgma mu[l] mu [ 2 ] mu [ 3 ] mu [ 4 ] mu[5] mu [ 6 ] mu [ 7 ] mu [ 8 ] mu [ 9 ] mu[10] ロ y-pred [ 1 ] y-pred [ 2 ] y-pred [ 3 ] y-pred [ 4 ] y-pred [ 5 ] y-pred [ 6 ] y-pred [ 7 ] y-pred [ 8 ] イ亠イ亠イ上 1 一《 1 亠 -1 一 1 亠ィー一 81 . 68 4000 81.87 4000 104.56 4000 91. 19 3820 105.25 4000 90 . 67 3956 83 . 06 3971 83 .44 3872 57. 17 57 .24 78.46 66.59 79.02 66 .39 57. 16 57 .72 44. 24 43 . 72 65 . 02 53 . 04 65 .62 53.03 44.53 43 .88 29 . 96 30.57 51.73 39 .43 52 .43 39 . 61 30 . 71 30 . 27 3 . 87 5 . 34 27 . 01 12 .92 27.91 14 .20 4 .56 3 .76 0 . 31 19 . 82 19 .74 0 . 31 0 . 32 19 . 94 0 . 32 19 .93 0 . 31 19 .73 19 . 68 0 . 31 0 . 31 19 .73 0 . 32 20 . 13 43 .77 43 .76 65 . 30 52 . 83 65 . 88 53. 12 44. 16 43.82 ( 略 ) lp- 1 1974 ー 5608.20 ー 5607. 16 ー 5606.47 ー 5605 .75 0 .03 1 .39 ー 5610 . 96 ー 5607.49 NUTS (diag—e) at Tue Ju1 25 20 : 33 : 10 2017. Samp1es were drawn 1-lSIng eff iS a crude measure Of effective For each parameter , and Rhat is the potential scale reduction factor 0 Ⅱ split chains (at convergence , Rhat=l) . このように、 y ー p て ed のところにモデルから予測された値の平均値とべイズ信頼区間が表示されます。 3.5 ロジスティック回帰分析 また、 RStan では、回帰分析の目的変数が 0 から 1 の間の値の場合に用いられるロジスティック回帰分析も可能で す。今回は政府を信頼するかどうかの値を目的変数としてみましよう。モデルを次のように書き換えます。値をコマン ド inv-logit を使って文字 q に格納して、その後 ql がベルヌーイ分布に従うというモデルに入れるというものです。 ファイル名は「 stan-test3. stan 」とします。 data { int N int く 10wer=O, upper=l> ql CN] int く 10wer=O, upper=l> q2CN] rea1 く 10we て = 0 , upper=100> y Bayes Analysis Maniax フリー ソフトで始めるべイズ統計解析
3.3 RStan の基本と単回帰分析 > library(rstan) 要求されたパッケージ ggp10t2 をロード中です 要求されたパッケージ StanHeaders をロード中です rstan (Version 2 . 16 . 2 , packaged: 2017 ー 07 ー 03 09 : 24 : 58 UTC, GitRev: 2e1f913d3Ca3 ) For execution 0 a 10Ca1 , multicore CPU with excess RAM we recommend calling rstan—options (auto_write = TRUE) options(mc. cores = parallel : : detectCores ( ) ) Stan では、基本的に次のような記法でモデルを記述します。 model { 求めたいパラメータ parameters { データ dat a { モデル・尤度・事前分布 17 モデルの記述には下記のようなルールがあります ( 松浦健太郎「 Stan と R でべイズ統計モデリング」 ( 共立出版、 2016 年 ) p. 32 ) 。 5. 冂 ( 確率的な生成 ) 「 = 」 ( 代入 ) の前後は 1 スペースあける 4. 変数名は cameICase ( 単語の区切りが大文字 ) ではなく snake-case ( 単語の区切りがアンダースコア ) にする 3. 各プロックの間は 1 行あける 2. データを表す変数の先頭の文字を大文字にし、パラメータを表す変数の先頭の文字を小文字にする 1. インデント ( 字下げ ) は必ずする > dataset > dataset く一 read. csv("testdata. csv" ,header=T) これを使って、簡単な回帰分析をやってみましよう。データは乱数を使って生成した次のデータです。 1 2 3 4 5 6 7 8 9 10 1 2 5 6 7 10 ー 0 . 167362212 9 ー 0 .278161054 8 ー 0 .390527956 ー 0 .757808536 ー 0 .960677950 ー 1 .069607142 4 ー 1 .214772651 3 ー 1 .217361932 ー 1 .294757133 ー 2 .629838255
3.4 重回帰分析 21 150 〕 1000 05- 0.0 - ー 0 る - Chain enlen 1 ま 0 1000 15N 100 ] 10-0 - 2 -5 - 0-0 - 1000 15 侊ー 図 3.1 テストモデルの MCMC サンプリング結果 lteratlon > library(ggmcmc) > ggmcmc (ggs (dataset—fit , inc—warmup=T, stan—incIude—auxi1iar=T) , + file="stan—test-mcmc . pdf" ,plot="traceplot") 上記のコマンドを入力すると、 "stan-test-mcmc. pdf" という pdf ファイルに MCMC の結果が出力されます。 どの 値もほどよく収束しているようで、何よりです。 3.4 重回帰分析 こからは実際のデータを使って分析を行ってみましよう。分析に使うデータは、冒頭の注意で示した東大・朝日調 査の 2014 年有権者調査のデータです。本章では、政府を信頼するか、安倍政権を評価するか、そして自民党への感情 温度 ( 問 15 、点数は 0 ~ 100 。 100 に近いほど強い支持、 0 に近いほど強い不支持 ) を使います。
34 第 4 章べイジアンネットワーク い / 4. どちらかと言えばよくやっているとは思わない / 5. よくやっているとは思わない / 」、問 11 が「 1. かなり良い / 2. やや良い / 3. どちらでもない / 4. やや悪い / 5. かなり悪い」、問 12 が「 1. かなり良くなっている / 2. 少し良くなってい る / 3. 変わらない / 4. 少し悪くなっている / 5. かなり悪くなっている」というものになっています。 こではこれを質的変数として使うため、 Excel を用いて、問 7 については 1 , 2 を「 1 信頼する」、 3 , 4 を「 2 信頼し ない」、問 8 は 1 , 2 を「 1 評価する」、 3 を「 2 中立」、 4 , 5 を「 3 評価しない」、問 11 , 12 は 1 , 2 を「 1 ( 景気 / 暮らし向き ) よい」、 3 を「 2 中立」、 4 , 5 を「 3 悪い」に変換します。なお、一つでも無回答があるデータは除きました。このデータ を utas-data3. csv という csv ファイルに保存します。そしてそれを datasetl という文字に読み込みます。 > datasetl く一 read. csv("utas_data3. csv" ,header=T,row. name=l) > datasetl 安倍政権 暮らし向き 1 6 8 9 11 13 政府 1 信頼する 2 信頼しない 1 信頼する 2 信頼しない 3 評価しない 3 景気悪い 3 暮らし向き悪い 2 信頼しない 3 評価しない 3 景気悪い 3 暮らし向き悪い 1 評価する 3 景気悪い 2 暮らし向き中立 1 評価する 3 景気悪い 1 暮らし向きよい 2 中立 3 景気悪い 3 暮らし向き悪い 2 信頼しない 3 評価しない 3 景気悪い 1 暮らし向きよい データの特徴を図に示します。この特徴を踏まえた上で、分析を行っていきましよう (N = 1 , 772 ) 。 合は、データセットをそのままコマンド network の中にぶち込んでしま まず、全ての組み合わせを分析対象とする場合を説明します。この場 4.3 全ての組み合わせを描画する > ggpairs (datasetl) > 1ibrary(GGa11y) > 1ibrary(ggp10t2) は前章でも用いたコマンド ggpairs で描画しました。 なお、 0 この図 えば済みます。 > netl く一 network(datasetl) > plot(netl) 0 囲みの下段にある pl 。 t コマンドで描画してみると右のようなものが 現れるはすです。この段階ではまだ矢印は描かれていません。 次に、事前分布を設定します。次のように、コマンド jointprior に 先ほど作成したネットワークを入れると、次のように動作するはすです。 > netl—prior く一 jointprior(netl) lmaginary sample size: 162 0 それでは、いよいよネットワークの描画に映ります。コマンド learn を使ってべイズ学習を行います。なお入力す る際に、最後の「 $ nw 」は描画をする際に必要になりますので、忘れないように入れてください。 Bayes AnaIysis Maniax フリ ーソフトで始めるべイズ統計解析
47 第 5 章 KH Coder でのべイズ統計 5 ュはじめに コミックマーケット 90 ) で刊行した「 Text Mining Maniax—フリーソフトで始め 昨年夏コミ ( 2016 年夏コミ る日本語計量テキスト分析」 ( 後藤和智事務所 O 矼 ine 、 2016 年 ) で紹介したフリーのテキストマイニングソフト「 KH coder 」には、べイズ学習を用いて文章を判別する機能が備わっています。本節では少しだけその使い方を説明します。 5.2 基本操作 KHCoder を使って、べイズ学習により文章を判別する ためには、次の操作が必要です。 1. 先に形態素解析を行っておくこと。 2. 判別に用いる外部変数をあらかじめ入れていること ( 一部が未知であってもいい ) 。 成日本若者論史 SpecialJ ( 後藤和智事務所 OffLine 、 2017 メディアと論客 : 言論と論客の「再帰性」をめぐって一一平 書と同時に刊行される予定の「普及版「劣化言説の時代」の カニシャ出版、 2014 年 ) をご参照ください。 こでは、本 内容分析の継承と発展をめざして」 ( 樋口耕一 : 著、ナ 公式の解説書である「社会調査のための計量テキスト分析 ます。あらかじめ (Text Mining ManiaxJ や KH Coder 形態素解析の方法と外部変数の入れ方については省略し 外部変数から手習 I 分単位・ HI ーー 学をする外部ま数 Ⅳ最大出による第の取道択 ト文・数「一一一最大文書数 Ⅳ最大文書数による語 C 蘒複択 サ変名 品こよる題び蘒松ー択 現在び定で学新こ使用される語び点 マ交差受当化を行う F 。に 5 : 「ま - マ分グをファイえ保存 すべて ア 年 ) の分析で用いた、香山リカ氏の 1990 年代終わり ~ 2014 年までの著作 65 冊を、べイズ学習を用いて分析すること にします。 同書で私は、香山氏、特に 1990 年代終わり頃以降の氏が、メディアや編集者の意向に合わせて巧みに自己を使い分 ける「多元的論客」という側面を持っているとし、そのようなメディア上での振る舞いが 1990 年代終わり ~ 2000 年代 に猖獗を極めた劣化言説の原動力になったのではないかという観点で分析を行いました。 しかし 65 冊の著作を ( 比較的短いものが多いとは言え ) テキストデータにするのには相当な時間がかかりまし 。同書の元になったのは 2014 年に「第 10 回河上肇賞」 ( 藤原書店 ) に出した論文なのですが、当時はテキスト かったのです。 現行機のような SSD ではなく HDD であり、しかもメモリも 4GB だったので 1 回モデルを回すごとに 30 分時間がか ラでした ( 現在は順調にいけば 30 分 ~ 1 時間程度で済ませてしまいますが ) 。さらに、当時私が使っていたパソコンは マイニングをはじめたばかりで、書籍のテキストデータ化もまだ前々慣れていなく、 1 冊に 3 時間ほどかかることもザ
参考文献 5. 松浦健太郎「 stan と R でべイズ統計モデリング (Wonderful R ・ 2 ) 』共立出版、 2016 年 ン、 2012 年 4. J. アルバート : 著、石田基広、石田和枝 : 訳「 R で学ぶべイズ統計学入門」丸善出版 / シュプリンガー 3. 松原望「入門べイズ統言 t ーー意思決定の理論と発展」東京図書、 2008 年 2. 涌井良幸、涌井貞美「 Excel でスッキリわかるべイズ統計入門』日本実業出版社、 2010 年 1. 小島寛之「完全独習べイズ統計学入門』ダイヤモンド社、 2015 年 53 シャノヾ 6. 樋口耕一「社会調査のための計量テキスト分析ーー内容分析の継承と発展をめざして」ナカニシャ出版、 2014 年 7. 「散布図行列を描くには」 http://statmodeling.hatenablog.com/entry/scatter-plot-matrix 8. 「 Rstan でべイズ分析を行うための環境を作る方法メモ」 http://hikaru1122.hatenadiary・jP/entrY/2015/08/04/230000 9. 「 RStan をはじめよう」 https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started-(Japanese) 10. 「 R でべイジアンネットワークメモ」 https.//rpubs.C0m/h0X0ーm/21327 11. 今井俊輔、岡本一志「 R によるべイジアンネットワーク入門」 https : / /www.slideshare.net/0kamot0-laboratory/r-70898327 12. 里洋平「ネットワーク分析 - べイジアン・ネットワーク」 http : / / d. hate Ⅱ a. ne. jp / yokkuns / 20110928 / 1317164851 13. 後藤和智「改訂増補版紅魔館の統計学なティータイム OffLine 、 2013 年 ( コミックマーケット 85 ) 市民のための統計学 Specia12 』後藤和智事務所