実験心理学者のための統計モデリング入門

February 23, 2020
stats stan

実験心理学者のための統計モデリング

私がベイジアンになってから1年近く経過し、その間にそれなりのモデリング経験を積んできました。ただ、「ベイズモデリングについて勉強する」ことと「実際にモデリングを研究で使う」こととの間に、そこそこ大きなギャップがあったように感じています。実際に学会等で皆さんのご意見を聞いていると、こういったギャップが実験心理学者をモデリングから遠ざける要因になっていると思います。そこで本セッションでは、なるべく実験心理学者の視点に立って、実験心理学の分野でベイズモデリングをどのように使っていくことができるのか一例を示します。実験心理学においてベイズモデリングの導入や利用法に関する議論の材料となれば幸いです。

本セッションの内容のうち、「統計モデリング入門」はStatistical Rethinking第2版 および、その内容をtidyversebrmsで再現したStatistical Rethinking with brms, ggplot2, and the tidyverseにかなり依拠していますが、内容に誤りがあった場合は私の勘違いや誤りである可能性が高いです。ご指摘ください。

研究に対する姿勢について考え直すきっかけをくれた先輩に「なんでモデリング?」と聞かれたときに、ろくな返事ができなかったことをずっと後悔していました。これはそのときの返事の代わりです。統計モデリングってのもちょっとおもしろそう、とその人に思ってもらえたら幸せだな、と妄想しながら書きました。

本セッションの目的

  1. 実験心理学で統計モデリングをいかに活用していくか(あるいは利用しないのか)を議論する
  2. brms (ときどきStan) を使って、実験心理学で使えそうな基本的なモデルを実装できるようになる

導入

「ベイズについて勉強はしてみたが、どう使うものかがよくわからない」という声をときどき耳にします(実際に、私が先輩方からこの質問をされたこと、それに対して満足のいく返答ができなかったことが本セッションの動機になっています)。そこで、本セッションでは実験心理学者には馴染み深い課題である視覚探索課題 (visual search) を例に、ベイズモデリングをどう使うことができるのか(あるいは使わないでおくのがよいのか)を考えたいと思います。

実験心理学者でない人のための視覚探索課題入門

私たちの周囲には多くの情報があり、それらすべてを一度に処理することはできません(今、皆さんはこの文章を読んでいると思いますが、その間にも触覚や聴覚からさまざまな情報が入ってきているはずです。たとえば椅子の感触はどうでしょう?今この瞬間まで椅子の感触には“注意”していなかったと思いますが、その間もずっと椅子の座面の感覚は入力されてきているはずです。なぜ常に椅子の感触を感じないでいられるのでしょう?)。注意研究の特徴は、豊富かつ独創的な実験パラダイムです(私個人の意見です)。

なかでも視覚探索課題は、視覚情報の選択システムである視覚的注意 (visual attention) の働きを調べるために広く用いられる課題です。

図1. T (標的) を探し、左向きか右向きかを答えてください

図1. T (標的) を探し、左向きか右向きかを答えてください

上に、典型的な視覚探索課題の試行画面を示しました。参加者の課題は標的刺激 (ここではT) を妨害刺激 (ここではL) の中から探すことです。

標的刺激に対して効率的に注意を誘導できるなら、Tをすぐに見つけることができます。たとえばこの画面でTのみが赤色で描かれていたとしたら、わざわざ探そうとしなくてもひとりでにTが目に飛び込んでくるような感じを覚えるでしょう。注意の誘導が非効率的なときには、各刺激に対して順番に注意を向けていく必要があり、そのために標的が見つかるまでの時間は長くなります。このような状況を非効率探索と呼ぶことにします。非効率探索の状況下では、画面上の刺激の数 (セットサイズ) が増えるほど反応時間は長くなります。反応時間は線形に増えていくことがわかっていて、この増加の様子を\[y=ax+b\]という一次関数 (探索関数) であらわし、傾き\(a\)を探索勾配と呼んで探索の効率性の指標として使うこともあります。

統計モデリング入門

上に示したような視覚探索課題のサンプルデータを使って、実際に統計モデリングをやってみます。その前に、ベイズ統計モデリングとはいったい何をやっているのか、簡単に紹介します。

数えて・比べる

McElreath (2016) によると、ベイズ統計モデリングの根っこにあるのは「数える」・「比べる」という2つの要素です。彼の「The garden of forking data」という喩えがとてもわかりやすかったので、その例に沿って説明していきます。なお、このページで使っている図はこちらを参考にしました。tidyverseggplot2でこんな図が描けるんだ!と感動した方は、ぜひ読んでみてください。

まず、目の前に碁石が4つ入った袋があると想像してください。中身は見えませんが、黒と白の碁石が合計4つ入っていることはわかっています。つまり、この袋に入っている可能性のある碁石の組み合わせは以下の5種類となります。この5種類のことを、ここでは「可能性」と呼びたいと思います。便宜上の呼び名なので、深い意味はありません。

今、その袋の中に手を入れて碁石を一つ取り出して色を確認し、その後袋に戻します。これを3回繰り返します。各碁石が取り出される確率は等しいと考えると、碁石を出しては戻す作業を3回繰り返したときに出てくる可能性のある碁石3つの組み合わせは各可能性ごとに\(4^3 = 64\)通りです。たとえば碁石の組み合わせが2番のように黒-白-白-白のとき、あり得る碁石の組み合わせを樹形図で表すとこんな感じに描けます。

3回引いた結果を見てみると、黒-白-黒という組み合わせになりました。これをデータと呼びましょう。このとき袋の中に入っている碁石の組み合わせとして、どれが一番ありえるでしょうか?これを確かめる方法が「数えて」・「比べる」です。やってみます。

といってもやり方は簡単です。上の樹形図をすべての可能性について描き、その中から黒-白-黒という組み合わせになっている経路を探して、その数を数えればいいのです。引いた結果、黒と白が少なくとも1つずつ含まれていることはわかるので、1番と5番の可能性は排除されます。残りの3つについての樹形図を描きました。

他の可能性についても数えた結果を下の表に示します。また、データが生じる経路の数を、経路の数の合計で割った値をもっともらしさと呼ぶことにします。

p_1 p_2 p_3 p_4 p データが生じる経路の数 もっともらしさ
0.00 0 0.00
0.25 3 0.15
0.50 8 0.40
0.75 9 0.45
1.00 0 0.00

もっともらしさが一番高いのは、黒-黒-黒-白という可能性だということがわかりました。得られたデータから、そのデータが生じる経路の数を「数えて」、他の可能性と「比べる」という手順の結果、どの可能性が一番ありえそうかがわかりました。もちろん正解かどうかはわかりませんので、一つの推測にすぎません。ただ、今後データの数が増えれば情報が更新されて、より実際に近い推測ができるようになります。

用語を整理します。

  • まず、推測できる黒い碁石の割合\(p\)をパラメタと呼びます。データを説明するにあたって、ありうる可能性を示す値です。
  • \(p\)がデータを生じうる経路の相対的な数を尤度 (likelihood) と呼びます。

実は、ベイズ統計モデリングと呼ばれるものは、すべてこのような「数えて」・「比べる」という手順に則っておこなわれています。どういうこと?と思った方もいらっしゃるのではないでしょうか。

ここで少し元の目的に立ち戻って、「統計モデリングとは何か」をもう一度考えてみます。McElreath (2016) は「データがどのようにして生まれてきたのか、ストーリーを作る」ことであると言っています。どういうことでしょうか。

ここでコイントスの例をあげることが多いと思うのですが、このコイントスの例、というのは曲者ですね。ベイズから遠ざかる一因のような気もします。McElreath (2016) にならって、コインではなく「地球儀トス」の例で考えてみます。

地球の表面の7割は海です。ただ、これを実際に測るのは相当大変です。そこで地球儀を投げて、手のひらに海の部分が触れたらW (water)、陸の部分が触れたらL (land) と記録することにします。このトスを10回繰り返し、その結果得られたデータから海が占める真の割合を推測します。

以下のようなモデルになります。

  1. 海が地表に占める心の割合はは\(p\)である
  2. 各トスで、手のひらに:
    • 海が触れる確率は\(p\)
    • 陸が触れる確率は\(1-p\)
  3. 各トスは独立である

このような仮定をふまえて自分で尤度 (likelihood; データのもっともらしさを表す数式) を考えることもできますが、既成の尤度関数を使うことが多いでしょう。この場合は2値データなので、二項分布を利用することになります。

尤度やらパラメタやら、複雑な言葉が多く出てくるのでビビりますが、二項分布のパラメタをベイズ推定する手順においてやっていることは、さっきまでの「数えて」・「比べる」です。想像してください。あらゆるパラメタの組み合わせを持った無限個の二項分布があります。このあらゆる種類の分布を碁石の例と同じように検証して、各分布のもっともらしさを求めてランク付けします。このもっともらしさランキングが、分布がデータとモデルに一致するかどうかを示す指標になります。

簡単なシミュレーションをやってみます。上の地球トス問題で、あらゆるパラメタの値が詰まった袋があると考えます。その中から10000個のサンプルを取り出します。もし袋がうまく混ざっていれば、取り出したサンプルは事後確率分布に近い形になるはずです。

まず、その袋を作ります。

n <- 1001
n_water <- 6
n_trials  <- 9

d <- tibble(p_grid     = seq(from = 0, to = 1, length.out = n),
            prior      = 1) %>% 
  dplyr::mutate(likelihood = dbinom(n_water, size = n_trials, prob = p_grid)) %>% 
  dplyr::mutate(posterior  = (likelihood * prior) / sum(likelihood * prior))

d %>%
  dplyr::rename("パラメタ" = p_grid, "事前確率" = prior,
                "尤度" = likelihood, "事後確率" = posterior) %>%
  knitr::kable() %>%
  kableExtra::kable_styling() %>%
  scroll_box(width = "100%", height = "200px")
パラメタ 事前確率 尤度 事後確率
0.000 1 0.0000000 0.0000000
0.001 1 0.0000000 0.0000000
0.002 1 0.0000000 0.0000000
0.003 1 0.0000000 0.0000000
0.004 1 0.0000000 0.0000000
0.005 1 0.0000000 0.0000000
0.006 1 0.0000000 0.0000000
0.007 1 0.0000000 0.0000000
0.008 1 0.0000000 0.0000000
0.009 1 0.0000000 0.0000000
0.010 1 0.0000000 0.0000000
0.011 1 0.0000000 0.0000000
0.012 1 0.0000000 0.0000000
0.013 1 0.0000000 0.0000000
0.014 1 0.0000000 0.0000000
0.015 1 0.0000000 0.0000000
0.016 1 0.0000000 0.0000000
0.017 1 0.0000000 0.0000000
0.018 1 0.0000000 0.0000000
0.019 1 0.0000000 0.0000000
0.020 1 0.0000000 0.0000000
0.021 1 0.0000000 0.0000000
0.022 1 0.0000000 0.0000000
0.023 1 0.0000000 0.0000000
0.024 1 0.0000000 0.0000000
0.025 1 0.0000000 0.0000000
0.026 1 0.0000000 0.0000000
0.027 1 0.0000000 0.0000000
0.028 1 0.0000000 0.0000000
0.029 1 0.0000000 0.0000000
0.030 1 0.0000001 0.0000000
0.031 1 0.0000001 0.0000000
0.032 1 0.0000001 0.0000000
0.033 1 0.0000001 0.0000000
0.034 1 0.0000001 0.0000000
0.035 1 0.0000001 0.0000000
0.036 1 0.0000002 0.0000000
0.037 1 0.0000002 0.0000000
0.038 1 0.0000002 0.0000000
0.039 1 0.0000003 0.0000000
0.040 1 0.0000003 0.0000000
0.041 1 0.0000004 0.0000000
0.042 1 0.0000004 0.0000000
0.043 1 0.0000005 0.0000000
0.044 1 0.0000005 0.0000000
0.045 1 0.0000006 0.0000000
0.046 1 0.0000007 0.0000000
0.047 1 0.0000008 0.0000000
0.048 1 0.0000009 0.0000000
0.049 1 0.0000010 0.0000000
0.050 1 0.0000011 0.0000000
0.051 1 0.0000013 0.0000000
0.052 1 0.0000014 0.0000000
0.053 1 0.0000016 0.0000000
0.054 1 0.0000018 0.0000000
0.055 1 0.0000020 0.0000000
0.056 1 0.0000022 0.0000000
0.057 1 0.0000024 0.0000000
0.058 1 0.0000027 0.0000000
0.059 1 0.0000030 0.0000000
0.060 1 0.0000033 0.0000000
0.061 1 0.0000036 0.0000000
0.062 1 0.0000039 0.0000000
0.063 1 0.0000043 0.0000000
0.064 1 0.0000047 0.0000000
0.065 1 0.0000052 0.0000001
0.066 1 0.0000057 0.0000001
0.067 1 0.0000062 0.0000001
0.068 1 0.0000067 0.0000001
0.069 1 0.0000073 0.0000001
0.070 1 0.0000079 0.0000001
0.071 1 0.0000086 0.0000001
0.072 1 0.0000094 0.0000001
0.073 1 0.0000101 0.0000001
0.074 1 0.0000110 0.0000001
0.075 1 0.0000118 0.0000001
0.076 1 0.0000128 0.0000001
0.077 1 0.0000138 0.0000001
0.078 1 0.0000148 0.0000001
0.079 1 0.0000160 0.0000002
0.080 1 0.0000171 0.0000002
0.081 1 0.0000184 0.0000002
0.082 1 0.0000198 0.0000002
0.083 1 0.0000212 0.0000002
0.084 1 0.0000227 0.0000002
0.085 1 0.0000243 0.0000002
0.086 1 0.0000259 0.0000003
0.087 1 0.0000277 0.0000003
0.088 1 0.0000296 0.0000003
0.089 1 0.0000316 0.0000003
0.090 1 0.0000336 0.0000003
0.091 1 0.0000358 0.0000004
0.092 1 0.0000381 0.0000004
0.093 1 0.0000406 0.0000004
0.094 1 0.0000431 0.0000004
0.095 1 0.0000458 0.0000005
0.096 1 0.0000486 0.0000005
0.097 1 0.0000515 0.0000005
0.098 1 0.0000546 0.0000005
0.099 1 0.0000578 0.0000006
0.100 1 0.0000612 0.0000006
0.101 1 0.0000648 0.0000006
0.102 1 0.0000685 0.0000007
0.103 1 0.0000724 0.0000007
0.104 1 0.0000765 0.0000008
0.105 1 0.0000807 0.0000008
0.106 1 0.0000851 0.0000009
0.107 1 0.0000898 0.0000009
0.108 1 0.0000946 0.0000009
0.109 1 0.0000996 0.0000010
0.110 1 0.0001049 0.0000010
0.111 1 0.0001104 0.0000011
0.112 1 0.0001161 0.0000012
0.113 1 0.0001220 0.0000012
0.114 1 0.0001282 0.0000013
0.115 1 0.0001347 0.0000013
0.116 1 0.0001414 0.0000014
0.117 1 0.0001483 0.0000015
0.118 1 0.0001556 0.0000016
0.119 1 0.0001631 0.0000016
0.120 1 0.0001709 0.0000017
0.121 1 0.0001790 0.0000018
0.122 1 0.0001875 0.0000019
0.123 1 0.0001962 0.0000020
0.124 1 0.0002053 0.0000021
0.125 1 0.0002147 0.0000021
0.126 1 0.0002244 0.0000022
0.127 1 0.0002345 0.0000023
0.128 1 0.0002450 0.0000024
0.129 1 0.0002558 0.0000026
0.130 1 0.0002670 0.0000027
0.131 1 0.0002786 0.0000028
0.132 1 0.0002906 0.0000029
0.133 1 0.0003030 0.0000030
0.134 1 0.0003158 0.0000032
0.135 1 0.0003291 0.0000033
0.136 1 0.0003428 0.0000034
0.137 1 0.0003570 0.0000036
0.138 1 0.0003716 0.0000037
0.139 1 0.0003867 0.0000039
0.140 1 0.0004023 0.0000040
0.141 1 0.0004184 0.0000042
0.142 1 0.0004350 0.0000043
0.143 1 0.0004521 0.0000045
0.144 1 0.0004698 0.0000047
0.145 1 0.0004880 0.0000049
0.146 1 0.0005067 0.0000051
0.147 1 0.0005261 0.0000053
0.148 1 0.0005460 0.0000055
0.149 1 0.0005665 0.0000057
0.150 1 0.0005876 0.0000059
0.151 1 0.0006093 0.0000061
0.152 1 0.0006317 0.0000063
0.153 1 0.0006548 0.0000065
0.154 1 0.0006784 0.0000068
0.155 1 0.0007028 0.0000070
0.156 1 0.0007279 0.0000073
0.157 1 0.0007536 0.0000075
0.158 1 0.0007801 0.0000078
0.159 1 0.0008073 0.0000081
0.160 1 0.0008353 0.0000084
0.161 1 0.0008640 0.0000086
0.162 1 0.0008935 0.0000089
0.163 1 0.0009238 0.0000092
0.164 1 0.0009549 0.0000095
0.165 1 0.0009868 0.0000099
0.166 1 0.0010196 0.0000102
0.167 1 0.0010532 0.0000105
0.168 1 0.0010877 0.0000109
0.169 1 0.0011231 0.0000112
0.170 1 0.0011593 0.0000116
0.171 1 0.0011965 0.0000120
0.172 1 0.0012346 0.0000123
0.173 1 0.0012737 0.0000127
0.174 1 0.0013138 0.0000131
0.175 1 0.0013548 0.0000135
0.176 1 0.0013968 0.0000140
0.177 1 0.0014399 0.0000144
0.178 1 0.0014839 0.0000148
0.179 1 0.0015291 0.0000153
0.180 1 0.0015753 0.0000158
0.181 1 0.0016226 0.0000162
0.182 1 0.0016710 0.0000167
0.183 1 0.0017205 0.0000172
0.184 1 0.0017712 0.0000177
0.185 1 0.0018230 0.0000182
0.186 1 0.0018760 0.0000188
0.187 1 0.0019302 0.0000193
0.188 1 0.0019856 0.0000199
0.189 1 0.0020423 0.0000204
0.190 1 0.0021002 0.0000210
0.191 1 0.0021594 0.0000216
0.192 1 0.0022198 0.0000222
0.193 1 0.0022816 0.0000228
0.194 1 0.0023447 0.0000234
0.195 1 0.0024092 0.0000241
0.196 1 0.0024750 0.0000248
0.197 1 0.0025423 0.0000254
0.198 1 0.0026109 0.0000261
0.199 1 0.0026810 0.0000268
0.200 1 0.0027525 0.0000275
0.201 1 0.0028255 0.0000283
0.202 1 0.0029000 0.0000290
0.203 1 0.0029760 0.0000298
0.204 1 0.0030535 0.0000305
0.205 1 0.0031326 0.0000313
0.206 1 0.0032132 0.0000321
0.207 1 0.0032955 0.0000330
0.208 1 0.0033794 0.0000338
0.209 1 0.0034649 0.0000346
0.210 1 0.0035520 0.0000355
0.211 1 0.0036409 0.0000364
0.212 1 0.0037314 0.0000373
0.213 1 0.0038237 0.0000382
0.214 1 0.0039177 0.0000392
0.215 1 0.0040135 0.0000401
0.216 1 0.0041110 0.0000411
0.217 1 0.0042104 0.0000421
0.218 1 0.0043116 0.0000431
0.219 1 0.0044147 0.0000441
0.220 1 0.0045196 0.0000452
0.221 1 0.0046264 0.0000463
0.222 1 0.0047352 0.0000474
0.223 1 0.0048459 0.0000485
0.224 1 0.0049585 0.0000496
0.225 1 0.0050732 0.0000507
0.226 1 0.0051898 0.0000519
0.227 1 0.0053085 0.0000531
0.228 1 0.0054293 0.0000543
0.229 1 0.0055521 0.0000555
0.230 1 0.0056770 0.0000568
0.231 1 0.0058040 0.0000580
0.232 1 0.0059332 0.0000593
0.233 1 0.0060646 0.0000606
0.234 1 0.0061981 0.0000620
0.235 1 0.0063339 0.0000633
0.236 1 0.0064719 0.0000647
0.237 1 0.0066122 0.0000661
0.238 1 0.0067547 0.0000675
0.239 1 0.0068995 0.0000690
0.240 1 0.0070467 0.0000705
0.241 1 0.0071963 0.0000720
0.242 1 0.0073482 0.0000735
0.243 1 0.0075025 0.0000750
0.244 1 0.0076592 0.0000766
0.245 1 0.0078184 0.0000782
0.246 1 0.0079800 0.0000798
0.247 1 0.0081442 0.0000814
0.248 1 0.0083108 0.0000831
0.249 1 0.0084800 0.0000848
0.250 1 0.0086517 0.0000865
0.251 1 0.0088261 0.0000883
0.252 1 0.0090030 0.0000900
0.253 1 0.0091826 0.0000918
0.254 1 0.0093648 0.0000936
0.255 1 0.0095497 0.0000955
0.256 1 0.0097373 0.0000974
0.257 1 0.0099276 0.0000993
0.258 1 0.0101207 0.0001012
0.259 1 0.0103165 0.0001032
0.260 1 0.0105151 0.0001052
0.261 1 0.0107166 0.0001072
0.262 1 0.0109208 0.0001092
0.263 1 0.0111280 0.0001113
0.264 1 0.0113380 0.0001134
0.265 1 0.0115509 0.0001155
0.266 1 0.0117668 0.0001177
0.267 1 0.0119856 0.0001199
0.268 1 0.0122073 0.0001221
0.269 1 0.0124321 0.0001243
0.270 1 0.0126599 0.0001266
0.271 1 0.0128907 0.0001289
0.272 1 0.0131246 0.0001312
0.273 1 0.0133616 0.0001336
0.274 1 0.0136017 0.0001360
0.275 1 0.0138449 0.0001384
0.276 1 0.0140912 0.0001409
0.277 1 0.0143408 0.0001434
0.278 1 0.0145935 0.0001459
0.279 1 0.0148494 0.0001485
0.280 1 0.0151086 0.0001511
0.281 1 0.0153711 0.0001537
0.282 1 0.0156368 0.0001564
0.283 1 0.0159058 0.0001591
0.284 1 0.0161781 0.0001618
0.285 1 0.0164538 0.0001645
0.286 1 0.0167329 0.0001673
0.287 1 0.0170153 0.0001702
0.288 1 0.0173011 0.0001730
0.289 1 0.0175904 0.0001759
0.290 1 0.0178831 0.0001788
0.291 1 0.0181792 0.0001818
0.292 1 0.0184789 0.0001848
0.293 1 0.0187821 0.0001878
0.294 1 0.0190887 0.0001909
0.295 1 0.0193990 0.0001940
0.296 1 0.0197128 0.0001971
0.297 1 0.0200301 0.0002003
0.298 1 0.0203511 0.0002035
0.299 1 0.0206757 0.0002068
0.300 1 0.0210039 0.0002100
0.301 1 0.0213358 0.0002134
0.302 1 0.0216714 0.0002167
0.303 1 0.0220107 0.0002201
0.304 1 0.0223537 0.0002235
0.305 1 0.0227004 0.0002270
0.306 1 0.0230508 0.0002305
0.307 1 0.0234050 0.0002341
0.308 1 0.0237630 0.0002376
0.309 1 0.0241248 0.0002412
0.310 1 0.0244904 0.0002449
0.311 1 0.0248599 0.0002486
0.312 1 0.0252332 0.0002523
0.313 1 0.0256104 0.0002561
0.314 1 0.0259914 0.0002599
0.315 1 0.0263763 0.0002638
0.316 1 0.0267652 0.0002677
0.317 1 0.0271579 0.0002716
0.318 1 0.0275547 0.0002755
0.319 1 0.0279553 0.0002796
0.320 1 0.0283600 0.0002836
0.321 1 0.0287686 0.0002877
0.322 1 0.0291812 0.0002918
0.323 1 0.0295979 0.0002960
0.324 1 0.0300185 0.0003002
0.325 1 0.0304432 0.0003044
0.326 1 0.0308720 0.0003087
0.327 1 0.0313048 0.0003130
0.328 1 0.0317417 0.0003174
0.329 1 0.0321827 0.0003218
0.330 1 0.0326278 0.0003263
0.331 1 0.0330770 0.0003308
0.332 1 0.0335303 0.0003353
0.333 1 0.0339877 0.0003399
0.334 1 0.0344493 0.0003445
0.335 1 0.0349151 0.0003492
0.336 1 0.0353850 0.0003538
0.337 1 0.0358591 0.0003586
0.338 1 0.0363374 0.0003634
0.339 1 0.0368198 0.0003682
0.340 1 0.0373065 0.0003731
0.341 1 0.0377974 0.0003780
0.342 1 0.0382925 0.0003829
0.343 1 0.0387918 0.0003879
0.344 1 0.0392954 0.0003930
0.345 1 0.0398032 0.0003980
0.346 1 0.0403152 0.0004032
0.347 1 0.0408315 0.0004083
0.348 1 0.0413521 0.0004135
0.349 1 0.0418769 0.0004188
0.350 1 0.0424060 0.0004241
0.351 1 0.0429394 0.0004294
0.352 1 0.0434771 0.0004348
0.353 1 0.0440190 0.0004402
0.354 1 0.0445653 0.0004457
0.355 1 0.0451158 0.0004512
0.356 1 0.0456706 0.0004567
0.357 1 0.0462297 0.0004623
0.358 1 0.0467932 0.0004679
0.359 1 0.0473609 0.0004736
0.360 1 0.0479330 0.0004793
0.361 1 0.0485093 0.0004851
0.362 1 0.0490900 0.0004909
0.363 1 0.0496749 0.0004967
0.364 1 0.0502642 0.0005026
0.365 1 0.0508578 0.0005086
0.366 1 0.0514557 0.0005146
0.367 1 0.0520579 0.0005206
0.368 1 0.0526644 0.0005266
0.369 1 0.0532753 0.0005328
0.370 1 0.0538904 0.0005389
0.371 1 0.0545098 0.0005451
0.372 1 0.0551335 0.0005513
0.373 1 0.0557616 0.0005576
0.374 1 0.0563939 0.0005639
0.375 1 0.0570305 0.0005703
0.376 1 0.0576714 0.0005767
0.377 1 0.0583165 0.0005832
0.378 1 0.0589659 0.0005897
0.379 1 0.0596196 0.0005962
0.380 1 0.0602776 0.0006028
0.381 1 0.0609398 0.0006094
0.382 1 0.0616063 0.0006161
0.383 1 0.0622770 0.0006228
0.384 1 0.0629519 0.0006295
0.385 1 0.0636310 0.0006363
0.386 1 0.0643144 0.0006431
0.387 1 0.0650020 0.0006500
0.388 1 0.0656937 0.0006569
0.389 1 0.0663897 0.0006639
0.390 1 0.0670898 0.0006709
0.391 1 0.0677941 0.0006779
0.392 1 0.0685025 0.0006850
0.393 1 0.0692151 0.0006922
0.394 1 0.0699318 0.0006993
0.395 1 0.0706526 0.0007065
0.396 1 0.0713775 0.0007138
0.397 1 0.0721065 0.0007211
0.398 1 0.0728395 0.0007284
0.399 1 0.0735767 0.0007358
0.400 1 0.0743178 0.0007432
0.401 1 0.0750630 0.0007506
0.402 1 0.0758122 0.0007581
0.403 1 0.0765654 0.0007657
0.404 1 0.0773226 0.0007732
0.405 1 0.0780837 0.0007808
0.406 1 0.0788488 0.0007885
0.407 1 0.0796177 0.0007962
0.408 1 0.0803906 0.0008039
0.409 1 0.0811674 0.0008117
0.410 1 0.0819480 0.0008195
0.411 1 0.0827325 0.0008273
0.412 1 0.0835208 0.0008352
0.413 1 0.0843129 0.0008431
0.414 1 0.0851087 0.0008511
0.415 1 0.0859084 0.0008591
0.416 1 0.0867117 0.0008671
0.417 1 0.0875188 0.0008752
0.418 1 0.0883295 0.0008833
0.419 1 0.0891439 0.0008914
0.420 1 0.0899620 0.0008996
0.421 1 0.0907836 0.0009078
0.422 1 0.0916089 0.0009161
0.423 1 0.0924377 0.0009244
0.424 1 0.0932700 0.0009327
0.425 1 0.0941058 0.0009411
0.426 1 0.0949451 0.0009495
0.427 1 0.0957878 0.0009579
0.428 1 0.0966340 0.0009663
0.429 1 0.0974836 0.0009748
0.430 1 0.0983365 0.0009834
0.431 1 0.0991927 0.0009919
0.432 1 0.1000522 0.0010005
0.433 1 0.1009150 0.0010092
0.434 1 0.1017811 0.0010178
0.435 1 0.1026503 0.0010265
0.436 1 0.1035227 0.0010352
0.437 1 0.1043982 0.0010440
0.438 1 0.1052769 0.0010528
0.439 1 0.1061586 0.0010616
0.440 1 0.1070433 0.0010704
0.441 1 0.1079310 0.0010793
0.442 1 0.1088217 0.0010882
0.443 1 0.1097153 0.0010972
0.444 1 0.1106118 0.0011061
0.445 1 0.1115112 0.0011151
0.446 1 0.1124133 0.0011241
0.447 1 0.1133182 0.0011332
0.448 1 0.1142259 0.0011423
0.449 1 0.1151363 0.0011514
0.450 1 0.1160493 0.0011605
0.451 1 0.1169649 0.0011696
0.452 1 0.1178831 0.0011788
0.453 1 0.1188038 0.0011880
0.454 1 0.1197271 0.0011973
0.455 1 0.1206527 0.0012065
0.456 1 0.1215808 0.0012158
0.457 1 0.1225113 0.0012251
0.458 1 0.1234440 0.0012344
0.459 1 0.1243790 0.0012438
0.460 1 0.1253163 0.0012532
0.461 1 0.1262557 0.0012626
0.462 1 0.1271973 0.0012720
0.463 1 0.1281410 0.0012814
0.464 1 0.1290867 0.0012909
0.465 1 0.1300344 0.0013003
0.466 1 0.1309841 0.0013098
0.467 1 0.1319357 0.0013194
0.468 1 0.1328891 0.0013289
0.469 1 0.1338443 0.0013384
0.470 1 0.1348013 0.0013480
0.471 1 0.1357600 0.0013576
0.472 1 0.1367203 0.0013672
0.473 1 0.1376823 0.0013768
0.474 1 0.1386458 0.0013865
0.475 1 0.1396107 0.0013961
0.476 1 0.1405772 0.0014058
0.477 1 0.1415450 0.0014155
0.478 1 0.1425142 0.0014251
0.479 1 0.1434847 0.0014348
0.480 1 0.1444564 0.0014446
0.481 1 0.1454293 0.0014543
0.482 1 0.1464033 0.0014640
0.483 1 0.1473784 0.0014738
0.484 1 0.1483544 0.0014835
0.485 1 0.1493315 0.0014933
0.486 1 0.1503094 0.0015031
0.487 1 0.1512882 0.0015129
0.488 1 0.1522678 0.0015227
0.489 1 0.1532481 0.0015325
0.490 1 0.1542291 0.0015423
0.491 1 0.1552107 0.0015521
0.492 1 0.1561928 0.0015619
0.493 1 0.1571754 0.0015718
0.494 1 0.1581585 0.0015816
0.495 1 0.1591419 0.0015914
0.496 1 0.1601257 0.0016013
0.497 1 0.1611097 0.0016111
0.498 1 0.1620938 0.0016209
0.499 1 0.1630781 0.0016308
0.500 1 0.1640625 0.0016406
0.501 1 0.1650469 0.0016505
0.502 1 0.1660312 0.0016603
0.503 1 0.1670153 0.0016702
0.504 1 0.1679993 0.0016800
0.505 1 0.1689831 0.0016898
0.506 1 0.1699665 0.0016997
0.507 1 0.1709495 0.0017095
0.508 1 0.1719321 0.0017193
0.509 1 0.1729141 0.0017291
0.510 1 0.1738956 0.0017390
0.511 1 0.1748764 0.0017488
0.512 1 0.1758565 0.0017586
0.513 1 0.1768359 0.0017684
0.514 1 0.1778144 0.0017781
0.515 1 0.1787919 0.0017879
0.516 1 0.1797685 0.0017977
0.517 1 0.1807440 0.0018074
0.518 1 0.1817184 0.0018172
0.519 1 0.1826916 0.0018269
0.520 1 0.1836636 0.0018366
0.521 1 0.1846342 0.0018463
0.522 1 0.1856034 0.0018560
0.523 1 0.1865712 0.0018657
0.524 1 0.1875374 0.0018754
0.525 1 0.1885020 0.0018850
0.526 1 0.1894649 0.0018946
0.527 1 0.1904261 0.0019043
0.528 1 0.1913854 0.0019139
0.529 1 0.1923428 0.0019234
0.530 1 0.1932983 0.0019330
0.531 1 0.1942518 0.0019425
0.532 1 0.1952031 0.0019520
0.533 1 0.1961522 0.0019615
0.534 1 0.1970991 0.0019710
0.535 1 0.1980436 0.0019804
0.536 1 0.1989857 0.0019899
0.537 1 0.1999254 0.0019993
0.538 1 0.2008625 0.0020086
0.539 1 0.2017970 0.0020180
0.540 1 0.2027287 0.0020273
0.541 1 0.2036577 0.0020366
0.542 1 0.2045839 0.0020458
0.543 1 0.2055071 0.0020551
0.544 1 0.2064273 0.0020643
0.545 1 0.2073445 0.0020734
0.546 1 0.2082585 0.0020826
0.547 1 0.2091693 0.0020917
0.548 1 0.2100767 0.0021008
0.549 1 0.2109808 0.0021098
0.550 1 0.2118815 0.0021188
0.551 1 0.2127786 0.0021278
0.552 1 0.2136721 0.0021367
0.553 1 0.2145619 0.0021456
0.554 1 0.2154480 0.0021545
0.555 1 0.2163302 0.0021633
0.556 1 0.2172086 0.0021721
0.557 1 0.2180829 0.0021808
0.558 1 0.2189532 0.0021895
0.559 1 0.2198193 0.0021982
0.560 1 0.2206813 0.0022068
0.561 1 0.2215389 0.0022154
0.562 1 0.2223922 0.0022239
0.563 1 0.2232410 0.0022324
0.564 1 0.2240853 0.0022409
0.565 1 0.2249250 0.0022493
0.566 1 0.2257600 0.0022576
0.567 1 0.2265903 0.0022659
0.568 1 0.2274158 0.0022742
0.569 1 0.2282363 0.0022824
0.570 1 0.2290518 0.0022905
0.571 1 0.2298623 0.0022986
0.572 1 0.2306677 0.0023067
0.573 1 0.2314678 0.0023147
0.574 1 0.2322627 0.0023226
0.575 1 0.2330522 0.0023305
0.576 1 0.2338362 0.0023384
0.577 1 0.2346147 0.0023461
0.578 1 0.2353876 0.0023539
0.579 1 0.2361549 0.0023615
0.580 1 0.2369164 0.0023692
0.581 1 0.2376721 0.0023767
0.582 1 0.2384218 0.0023842
0.583 1 0.2391656 0.0023917
0.584 1 0.2399034 0.0023990
0.585 1 0.2406350 0.0024063
0.586 1 0.2413604 0.0024136
0.587 1 0.2420795 0.0024208
0.588 1 0.2427923 0.0024279
0.589 1 0.2434986 0.0024350
0.590 1 0.2441985 0.0024420
0.591 1 0.2448917 0.0024489
0.592 1 0.2455783 0.0024558
0.593 1 0.2462582 0.0024626
0.594 1 0.2469313 0.0024693
0.595 1 0.2475974 0.0024760
0.596 1 0.2482567 0.0024826
0.597 1 0.2489089 0.0024891
0.598 1 0.2495540 0.0024955
0.599 1 0.2501920 0.0025019
0.600 1 0.2508227 0.0025082
0.601 1 0.2514460 0.0025145
0.602 1 0.2520620 0.0025206
0.603 1 0.2526706 0.0025267
0.604 1 0.2532716 0.0025327
0.605 1 0.2538650 0.0025386
0.606 1 0.2544507 0.0025445
0.607 1 0.2550287 0.0025503
0.608 1 0.2555989 0.0025560
0.609 1 0.2561612 0.0025616
0.610 1 0.2567155 0.0025672
0.611 1 0.2572618 0.0025726
0.612 1 0.2578000 0.0025780
0.613 1 0.2583301 0.0025833
0.614 1 0.2588519 0.0025885
0.615 1 0.2593655 0.0025937
0.616 1 0.2598706 0.0025987
0.617 1 0.2603674 0.0026037
0.618 1 0.2608556 0.0026086
0.619 1 0.2613353 0.0026134
0.620 1 0.2618064 0.0026181
0.621 1 0.2622687 0.0026227
0.622 1 0.2627223 0.0026272
0.623 1 0.2631671 0.0026317
0.624 1 0.2636030 0.0026360
0.625 1 0.2640299 0.0026403
0.626 1 0.2644479 0.0026445
0.627 1 0.2648567 0.0026486
0.628 1 0.2652565 0.0026526
0.629 1 0.2656470 0.0026565
0.630 1 0.2660282 0.0026603
0.631 1 0.2664002 0.0026640
0.632 1 0.2667628 0.0026676
0.633 1 0.2671159 0.0026712
0.634 1 0.2674595 0.0026746
0.635 1 0.2677936 0.0026779
0.636 1 0.2681181 0.0026812
0.637 1 0.2684329 0.0026843
0.638 1 0.2687380 0.0026874
0.639 1 0.2690333 0.0026903
0.640 1 0.2693188 0.0026932
0.641 1 0.2695944 0.0026959
0.642 1 0.2698600 0.0026986
0.643 1 0.2701157 0.0027012
0.644 1 0.2703613 0.0027036
0.645 1 0.2705968 0.0027060
0.646 1 0.2708221 0.0027082
0.647 1 0.2710373 0.0027104
0.648 1 0.2712422 0.0027124
0.649 1 0.2714369 0.0027144
0.650 1 0.2716211 0.0027162
0.651 1 0.2717950 0.0027180
0.652 1 0.2719585 0.0027196
0.653 1 0.2721114 0.0027211
0.654 1 0.2722539 0.0027225
0.655 1 0.2723857 0.0027239
0.656 1 0.2725070 0.0027251
0.657 1 0.2726176 0.0027262
0.658 1 0.2727175 0.0027272
0.659 1 0.2728066 0.0027281
0.660 1 0.2728850 0.0027288
0.661 1 0.2729525 0.0027295
0.662 1 0.2730092 0.0027301
0.663 1 0.2730550 0.0027306
0.664 1 0.2730899 0.0027309
0.665 1 0.2731138 0.0027311
0.666 1 0.2731266 0.0027313
0.667 1 0.2731285 0.0027313
0.668 1 0.2731193 0.0027312
0.669 1 0.2730989 0.0027310
0.670 1 0.2730674 0.0027307
0.671 1 0.2730248 0.0027302
0.672 1 0.2729710 0.0027297
0.673 1 0.2729059 0.0027291
0.674 1 0.2728296 0.0027283
0.675 1 0.2727420 0.0027274
0.676 1 0.2726431 0.0027264
0.677 1 0.2725329 0.0027253
0.678 1 0.2724113 0.0027241
0.679 1 0.2722783 0.0027228
0.680 1 0.2721339 0.0027213
0.681 1 0.2719781 0.0027198
0.682 1 0.2718109 0.0027181
0.683 1 0.2716322 0.0027163
0.684 1 0.2714421 0.0027144
0.685 1 0.2712404 0.0027124
0.686 1 0.2710272 0.0027103
0.687 1 0.2708025 0.0027080
0.688 1 0.2705663 0.0027057
0.689 1 0.2703185 0.0027032
0.690 1 0.2700592 0.0027006
0.691 1 0.2697882 0.0026979
0.692 1 0.2695057 0.0026951
0.693 1 0.2692116 0.0026921
0.694 1 0.2689059 0.0026891
0.695 1 0.2685886 0.0026859
0.696 1 0.2682597 0.0026826
0.697 1 0.2679192 0.0026792
0.698 1 0.2675671 0.0026757
0.699 1 0.2672033 0.0026720
0.700 1 0.2668279 0.0026683
0.701 1 0.2664409 0.0026644
0.702 1 0.2660423 0.0026604
0.703 1 0.2656321 0.0026563
0.704 1 0.2652103 0.0026521
0.705 1 0.2647769 0.0026478
0.706 1 0.2643318 0.0026433
0.707 1 0.2638752 0.0026388
0.708 1 0.2634070 0.0026341
0.709 1 0.2629273 0.0026293
0.710 1 0.2624360 0.0026244
0.711 1 0.2619331 0.0026193
0.712 1 0.2614187 0.0026142
0.713 1 0.2608928 0.0026089
0.714 1 0.2603554 0.0026036
0.715 1 0.2598066 0.0025981
0.716 1 0.2592462 0.0025925
0.717 1 0.2586744 0.0025867
0.718 1 0.2580912 0.0025809
0.719 1 0.2574967 0.0025750
0.720 1 0.2568907 0.0025689
0.721 1 0.2562734 0.0025627
0.722 1 0.2556447 0.0025564
0.723 1 0.2550048 0.0025500
0.724 1 0.2543536 0.0025435
0.725 1 0.2536912 0.0025369
0.726 1 0.2530176 0.0025302
0.727 1 0.2523328 0.0025233
0.728 1 0.2516369 0.0025164
0.729 1 0.2509299 0.0025093
0.730 1 0.2502118 0.0025021
0.731 1 0.2494827 0.0024948
0.732 1 0.2487426 0.0024874
0.733 1 0.2479916 0.0024799
0.734 1 0.2472297 0.0024723
0.735 1 0.2464569 0.0024646
0.736 1 0.2456733 0.0024567
0.737 1 0.2448790 0.0024488
0.738 1 0.2440739 0.0024407
0.739 1 0.2432582 0.0024326
0.740 1 0.2424318 0.0024243
0.741 1 0.2415949 0.0024159
0.742 1 0.2407475 0.0024075
0.743 1 0.2398897 0.0023989
0.744 1 0.2390214 0.0023902
0.745 1 0.2381428 0.0023814
0.746 1 0.2372539 0.0023725
0.747 1 0.2363548 0.0023635
0.748 1 0.2354456 0.0023545
0.749 1 0.2345262 0.0023453
0.750 1 0.2335968 0.0023360
0.751 1 0.2326574 0.0023266
0.752 1 0.2317082 0.0023171
0.753 1 0.2307491 0.0023075
0.754 1 0.2297802 0.0022978
0.755 1 0.2288017 0.0022880
0.756 1 0.2278135 0.0022781
0.757 1 0.2268158 0.0022682
0.758 1 0.2258087 0.0022581
0.759 1 0.2247921 0.0022479
0.760 1 0.2237662 0.0022377
0.761 1 0.2227311 0.0022273
0.762 1 0.2216869 0.0022169
0.763 1 0.2206335 0.0022063
0.764 1 0.2195712 0.0021957
0.765 1 0.2185000 0.0021850
0.766 1 0.2174200 0.0021742
0.767 1 0.2163312 0.0021633
0.768 1 0.2152338 0.0021523
0.769 1 0.2141279 0.0021413
0.770 1 0.2130135 0.0021301
0.771 1 0.2118908 0.0021189
0.772 1 0.2107597 0.0021076
0.773 1 0.2096205 0.0020962
0.774 1 0.2084733 0.0020847
0.775 1 0.2073180 0.0020732
0.776 1 0.2061549 0.0020615
0.777 1 0.2049840 0.0020498
0.778 1 0.2038054 0.0020381
0.779 1 0.2026193 0.0020262
0.780 1 0.2014257 0.0020143
0.781 1 0.2002248 0.0020022
0.782 1 0.1990166 0.0019902
0.783 1 0.1978013 0.0019780
0.784 1 0.1965789 0.0019658
0.785 1 0.1953496 0.0019535
0.786 1 0.1941136 0.0019411
0.787 1 0.1928708 0.0019287
0.788 1 0.1916215 0.0019162
0.789 1 0.1903657 0.0019037
0.790 1 0.1891036 0.0018910
0.791 1 0.1878352 0.0018784
0.792 1 0.1865608 0.0018656
0.793 1 0.1852804 0.0018528
0.794 1 0.1839941 0.0018399
0.795 1 0.1827021 0.0018270
0.796 1 0.1814046 0.0018140
0.797 1 0.1801015 0.0018010
0.798 1 0.1787931 0.0017879
0.799 1 0.1774795 0.0017748
0.800 1 0.1761608 0.0017616
0.801 1 0.1748371 0.0017484
0.802 1 0.1735086 0.0017351
0.803 1 0.1721755 0.0017218
0.804 1 0.1708377 0.0017084
0.805 1 0.1694956 0.0016950
0.806 1 0.1681492 0.0016815
0.807 1 0.1667986 0.0016680
0.808 1 0.1654440 0.0016544
0.809 1 0.1640856 0.0016409
0.810 1 0.1627235 0.0016272
0.811 1 0.1613577 0.0016136
0.812 1 0.1599886 0.0015999
0.813 1 0.1586161 0.0015862
0.814 1 0.1572405 0.0015724
0.815 1 0.1558620 0.0015586
0.816 1 0.1544805 0.0015448
0.817 1 0.1530964 0.0015310
0.818 1 0.1517097 0.0015171
0.819 1 0.1503206 0.0015032
0.820 1 0.1489292 0.0014893
0.821 1 0.1475358 0.0014754
0.822 1 0.1461404 0.0014614
0.823 1 0.1447432 0.0014474
0.824 1 0.1433443 0.0014334
0.825 1 0.1419440 0.0014194
0.826 1 0.1405424 0.0014054
0.827 1 0.1391396 0.0013914
0.828 1 0.1377357 0.0013774
0.829 1 0.1363311 0.0013633
0.830 1 0.1349257 0.0013493
0.831 1 0.1335198 0.0013352
0.832 1 0.1321135 0.0013211
0.833 1 0.1307070 0.0013071
0.834 1 0.1293004 0.0012930
0.835 1 0.1278939 0.0012789
0.836 1 0.1264878 0.0012649
0.837 1 0.1250820 0.0012508
0.838 1 0.1236769 0.0012368
0.839 1 0.1222725 0.0012227
0.840 1 0.1208690 0.0012087
0.841 1 0.1194666 0.0011947
0.842 1 0.1180655 0.0011807
0.843 1 0.1166658 0.0011667
0.844 1 0.1152677 0.0011527
0.845 1 0.1138714 0.0011387
0.846 1 0.1124770 0.0011248
0.847 1 0.1110846 0.0011108
0.848 1 0.1096946 0.0010969
0.849 1 0.1083069 0.0010831
0.850 1 0.1069219 0.0010692
0.851 1 0.1055396 0.0010554
0.852 1 0.1041602 0.0010416
0.853 1 0.1027840 0.0010278
0.854 1 0.1014110 0.0010141
0.855 1 0.1000415 0.0010004
0.856 1 0.0986755 0.0009868
0.857 1 0.0973133 0.0009731
0.858 1 0.0959551 0.0009596
0.859 1 0.0946010 0.0009460
0.860 1 0.0932511 0.0009325
0.861 1 0.0919057 0.0009191
0.862 1 0.0905649 0.0009056
0.863 1 0.0892289 0.0008923
0.864 1 0.0878979 0.0008790
0.865 1 0.0865720 0.0008657
0.866 1 0.0852513 0.0008525
0.867 1 0.0839361 0.0008394
0.868 1 0.0826265 0.0008263
0.869 1 0.0813227 0.0008132
0.870 1 0.0800248 0.0008002
0.871 1 0.0787331 0.0007873
0.872 1 0.0774476 0.0007745
0.873 1 0.0761686 0.0007617
0.874 1 0.0748962 0.0007490
0.875 1 0.0736305 0.0007363
0.876 1 0.0723717 0.0007237
0.877 1 0.0711201 0.0007112
0.878 1 0.0698757 0.0006988
0.879 1 0.0686386 0.0006864
0.880 1 0.0674092 0.0006741
0.881 1 0.0661874 0.0006619
0.882 1 0.0649736 0.0006497
0.883 1 0.0637677 0.0006377
0.884 1 0.0625701 0.0006257
0.885 1 0.0613808 0.0006138
0.886 1 0.0602000 0.0006020
0.887 1 0.0590278 0.0005903
0.888 1 0.0578644 0.0005786
0.889 1 0.0567099 0.0005671
0.890 1 0.0555645 0.0005556
0.891 1 0.0544283 0.0005443
0.892 1 0.0533015 0.0005330
0.893 1 0.0521842 0.0005218
0.894 1 0.0510766 0.0005108
0.895 1 0.0499788 0.0004998
0.896 1 0.0488908 0.0004889
0.897 1 0.0478130 0.0004781
0.898 1 0.0467453 0.0004675
0.899 1 0.0456879 0.0004569
0.900 1 0.0446410 0.0004464
0.901 1 0.0436047 0.0004360
0.902 1 0.0425791 0.0004258
0.903 1 0.0415643 0.0004156
0.904 1 0.0405605 0.0004056
0.905 1 0.0395678 0.0003957
0.906 1 0.0385862 0.0003859
0.907 1 0.0376159 0.0003762
0.908 1 0.0366571 0.0003666
0.909 1 0.0357097 0.0003571
0.910 1 0.0347740 0.0003477
0.911 1 0.0338501 0.0003385
0.912 1 0.0329379 0.0003294
0.913 1 0.0320377 0.0003204
0.914 1 0.0311496 0.0003115
0.915 1 0.0302735 0.0003027
0.916 1 0.0294097 0.0002941
0.917 1 0.0285581 0.0002856
0.918 1 0.0277190 0.0002772
0.919 1 0.0268923 0.0002689
0.920 1 0.0260781 0.0002608
0.921 1 0.0252766 0.0002528
0.922 1 0.0244877 0.0002449
0.923 1 0.0237116 0.0002371
0.924 1 0.0229484 0.0002295
0.925 1 0.0221980 0.0002220
0.926 1 0.0214605 0.0002146
0.927 1 0.0207361 0.0002074
0.928 1 0.0200246 0.0002002
0.929 1 0.0193263 0.0001933
0.930 1 0.0186411 0.0001864
0.931 1 0.0179690 0.0001797
0.932 1 0.0173102 0.0001731
0.933 1 0.0166645 0.0001666
0.934 1 0.0160322 0.0001603
0.935 1 0.0154131 0.0001541
0.936 1 0.0148072 0.0001481
0.937 1 0.0142147 0.0001421
0.938 1 0.0136355 0.0001364
0.939 1 0.0130696 0.0001307
0.940 1 0.0125170 0.0001252
0.941 1 0.0119777 0.0001198
0.942 1 0.0114517 0.0001145
0.943 1 0.0109389 0.0001094
0.944 1 0.0104394 0.0001044
0.945 1 0.0099531 0.0000995
0.946 1 0.0094800 0.0000948
0.947 1 0.0090200 0.0000902
0.948 1 0.0085731 0.0000857
0.949 1 0.0081393 0.0000814
0.950 1 0.0077185 0.0000772
0.951 1 0.0073106 0.0000731
0.952 1 0.0069155 0.0000692
0.953 1 0.0065333 0.0000653
0.954 1 0.0061637 0.0000616
0.955 1 0.0058068 0.0000581
0.956 1 0.0054624 0.0000546
0.957 1 0.0051305 0.0000513
0.958 1 0.0048108 0.0000481
0.959 1 0.0045034 0.0000450
0.960 1 0.0042081 0.0000421
0.961 1 0.0039248 0.0000392
0.962 1 0.0036533 0.0000365
0.963 1 0.0033935 0.0000339
0.964 1 0.0031452 0.0000315
0.965 1 0.0029084 0.0000291
0.966 1 0.0026827 0.0000268
0.967 1 0.0024682 0.0000247
0.968 1 0.0022645 0.0000226
0.969 1 0.0020716 0.0000207
0.970 1 0.0018892 0.0000189
0.971 1 0.0017171 0.0000172
0.972 1 0.0015551 0.0000156
0.973 1 0.0014030 0.0000140
0.974 1 0.0012605 0.0000126
0.975 1 0.0011275 0.0000113
0.976 1 0.0010037 0.0000100
0.977 1 0.0008889 0.0000089
0.978 1 0.0007827 0.0000078
0.979 1 0.0006849 0.0000068
0.980 1 0.0005953 0.0000060
0.981 1 0.0005135 0.0000051
0.982 1 0.0004393 0.0000044
0.983 1 0.0003723 0.0000037
0.984 1 0.0003123 0.0000031
0.985 1 0.0002589 0.0000026
0.986 1 0.0002118 0.0000021
0.987 1 0.0001706 0.0000017
0.988 1 0.0001350 0.0000014
0.989 1 0.0001046 0.0000010
0.990 1 0.0000791 0.0000008
0.991 1 0.0000580 0.0000006
0.992 1 0.0000410 0.0000004
0.993 1 0.0000276 0.0000003
0.994 1 0.0000175 0.0000002
0.995 1 0.0000102 0.0000001
0.996 1 0.0000052 0.0000001
0.997 1 0.0000022 0.0000000
0.998 1 0.0000007 0.0000000
0.999 1 0.0000001 0.0000000
1.000 1 0.0000000 0.0000000

いきなり事前確率という言葉が出てきました。これは「データを得る前の、各可能性のもっともらしさ」です。詳しい説明は省きますが、モデルの行動を容易にするための仮定の一つです。今回は平らな事前確率を使いました。各可能性のもっともらしさがすべて1になっています。

現象について事前にわかっていることを、この事前確率に反映させることもできます。事前確率と尤度を用いて、事後確率を計算できます。Rコードを見たらわかりますが、事前確率と尤度をかけたものです。上の碁石の例で行くならこういうことになりますね。

p_1 p_2 p_3 p_4 データが生じる経路の数 事前に数えたときの情報 新しい情報
0 0 0
1 3 3
2 8 16
3 9 27
4 0 0

次に、袋からサンプルを10000個取り出します。

# how many samples would you like?
n_samples <- 1e4

# make it reproducible
set.seed(3)

samples <-
  d %>% 
  sample_n(size = n_samples, weight = posterior, replace = T)

samples %>% 
  mutate(sample_number = 1:n()) %>% 
  ggplot(aes(x = sample_number, y = p_grid)) +
  geom_line(size = 1/10, color = "skyblue4") +
  labs(x = "サンプル",
       y = "海が占める割合 (p)",
       title = "図7: サンプリングのイメージ")

二項分布および二項分布を使ったパラメタ推定については、興味のある方はこちらが参考になります。

簡単な線形モデル

視覚探索データを使った線形モデル

視覚探索課題で、セットサイズ (画面上の刺激数) が多くなると反応時間は増加します。いよいよ、この様子をモデリングしてみたいと思います。

線形モデルのイメージ

その前に、線形モデルのイメージをつかんでおきたいと思います。私はここで詰まりました。正規分布とか二項分布のパラメタ推定のイメージはつかめても、線形モデルにしたとたん「数えて」・「比べる」イメージがよくわからなくなりませんか?線形モデルについて表すときには、こういう書き方が一般的です。数式が出てきたからと言ってびっくりしないでいただきたいと思います。言っている内容は簡単です。

\[t_i\sim {\sf Normal}(\mu_i, \sigma)\]

\[\mu_i = \alpha + \beta x_i \]

  1. 各試行の反応時間\(t_i\)は平均\(\mu\)、分散\(\sigma\)の正規分布にしたがう
  2. 正規分布の平均\(\mu\)は、\(\alpha\)\(\beta\)という他の2つのパラメタから構成される。\(x_i\) (ここではその試行でのセットサイズ) が0のとき\(\mu=\alpha\)になり、\(x_i\)が1増えるごとに\(\mu\)\(\beta\)ずつ増える

「数えて」・「比べ」てみます。この場合は、\(\alpha\)\(\beta\)も含めたパラメタの、ありうるすべての組み合わせについて、データを生じうる経路の数を数えていきます。そして、碁石の例と同様に各組合せのもっともらしさをランク付けして、モデルとデータが与えられた時の相対的もっともらしさ (≒事後確率) を求めます。線形モデルになっても「数えて」・「比べ」ているのがわかるでしょうか?

Stanで書いてみよう!

視覚探索データ

視覚探索課題のサンプルデータを作ってみました。こういう形をしています。

'data.frame':   10000 obs. of  3 variables:
 $ RT       : num  594 508 512 483 416 ...
 $ ID       : int  1 1 1 1 1 1 1 1 1 1 ...
 $ condition: num  5 5 5 5 5 5 5 5 5 5 ...

RTは各試行の反応時間 (ms)、IDは各参加者 (全部で5人います)、conditionがセットサイズ (5, 10) を示しています。

まず、反応時間を中心化・標準化しておきたいと思います。このあとは標準化した反応時間 (rt.s) を使っていきます。

RT ID condition rt.c rt.s
594.3844 1 5 15.67302 0.1321881
507.9576 1 5 -70.75378 -0.5967461
512.0534 1 5 -66.65802 -0.5622019
483.0445 1 5 -95.66689 -0.8068663
416.3921 1 5 -162.31928 -1.3690207
650.6675 1 5 71.95615 0.6068870

Stanコード

Stanコードはこういう姿をしています。

サンプルコード
data {
  int<lower=1> N;
  vector[N] setsize;
  vector[N] RT;
}

parameters {
  real alpha;
  real beta;
  real<lower=0> sigma;
}

model {
  vector[N] mu = alpha + beta * setsize;
  target += normal_lpdf(RT | mu, sigma);
  target += normal_lpdf(alpha | 0, 10);
  target += normal_lpdf(beta | 0, 10);
  target += cauchy_lpdf(sigma | 0, 10) - cauchy_lccdf(0 | 0, 10);
}

おもに3つのブロックで構成されていて、それぞれdataparametersmodelブロックといいます。dataブロックにはデータを、parametersブロックにはパラメタを、modelブロックにはモデルを書きます。当たり前です。Stanコードの書き方についてはこういった素敵な資料がありますので、そちらを参照してください。ここでは詳解はしません。私が当初混乱したからです。

そのかわりに登場するのがbrmsです。brmsについてもこのような素敵な資料がありますので、詳しくはそちらを参照してください。こちらの資料から引用させていただくと、brmsとは、

Stanのラッパーパッケージですが、ユーザは自身でStanコードを書く必要はなく、モデルを指定すると自動的に内部でStanコードが生成され、サンプリングが実行されます。

個人的にはStanから入ったのでbrmsには慣れていないのですが、モデリングのハードルを下げるいいパッケージだと思っています。Stanの書き方を勉強しつつ、最初はbrms、というのもよいのではないでしょうか。

install.packages("brms")
library(brms)

brmsコードに入れるためにデータを整形します。なお、このデータは上記のStanコードでも使えます。

dat1 <- list(N = NROW(dat),
             ID = dat$ID,
            setsize = dat$condition,
            RT = dat$rt.s)

brmsコードの書き方は、lmerTestパッケージなどになじんでいる人には簡単です。私はまだ混乱していますが。

  • \(t_i\sim {\sf Normal}(\mu_i, \sigma)\) family = "gaussian"

  • \(\mu_i = \alpha + \beta x_i\) RT ~ 1 + setsize

prior以下は事前分布の指定です。ベイズ推定には必要な要素です。データを得る前の (事前の) もっともらしさ、を示しています。事前分布にどういう分布を置くのかは非常に難しい問題ですが、一般的に広めの分布を置くことが多いです。詳しくはこのマニュアルを参照してください。ここでは切片 (\(\alpha\)) と傾き (\(\beta\)) の事前分布に平均0, 分散10の正規分布を置き、\(\sigma\)の事前分布には半コーシー分布を使いました。

fit1 <- brm(RT ~ 1 + setsize,
            family = "gaussian",
            data = dat1,
            iter = 3000,
            warmup = 1000,
            chain = 2,
            cores = 2,
            prior = c(prior(normal(0, 10), class = Intercept),
                      prior(normal(0, 10), class = b),
                      prior(cauchy(0, 10), class = sigma))
            )

上のコードを走らせると、サンプリングが始まります。コンピュータが「数えて」・「比べる」という手順をやっていると考えてください(実際に全部数えて比べるととんでもないことになるので、「事後分布からサンプリングする」という方法を取っています。サンプリング結果として出てくるのは、1. 各パラメータの値の集まり 2. それらの値の頻度 (≒事後確率に対応する)) の2つになります。この事後分布からのサンプリングにはMCMC法を使っています。MCMCについて詳しくはStatistical Rethinking第8章を参照してください)。

サンプリングの結果はsummary()で簡単に呼び出せます。\(\alpha\) (Intercept) が-1.75付近、\(\beta\) (setsize) が0.23付近と推定されました。ただし実際の事後確率は分布の形をしているので、数値を見ただけではどういう形をしているのかはよくわかりません。

summary(fit1)
 Family: gaussian 
  Links: mu = identity; sigma = identity 
Formula: RT ~ 1 + setsize 
   Data: dat (Number of observations: 10000) 
Samples: 2 chains, each with iter = 3000; warmup = 1000; thin = 1;
         total post-warmup samples = 4000

Population-Level Effects: 
          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept    -1.75      0.03    -1.80    -1.70 1.00     3813     3187
setsize       0.23      0.00     0.23     0.24 1.00     3935     2979

Family Specific Parameters: 
      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma     0.81      0.01     0.80     0.82 1.00     3407     2846

Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).

そこでplot()を使って可視化します。ちなみにbayesplot::color_scheme_set()でプロットの色を変えられます。緑系の色が好きなので、tealを設定してみました。鴨の羽色、と呼ぶそうです。左側に事後分布、右側にトレースプロットが表示されます。

bayesplot::color_scheme_set("teal")
plot(fit1)

\(\beta\) (setsize) が0.23付近なので、セットサイズが1増えるごとに反応時間が0.23単位ずつ増えていくことになります。セットサイズの効果もこういった感じで簡単に可視化できます。

mod2 <- rstan::stan_model("200211_mod_search1.stan")
fit2 <- sampling(mod2, 
                 data = dat2, 
                 iter = 3000, 
                 warmup = 1000,
                 chains = 2, 
                 cores = 2)

上のStanコードを使って推定した結果はこういう感じです。同じような数値になっていることがわかると思います。

Inference for Stan model: 200211_mod_search1.
2 chains, each with iter=3000; warmup=1000; thin=1; 
post-warmup draws per chain=2000, total post-warmup draws=4000.

           mean se_mean   sd      2.5%       25%       50%       75%     97.5%
alpha     -1.75    0.00 0.03     -1.80     -1.77     -1.75     -1.73     -1.70
beta       0.23    0.00 0.00      0.23      0.23      0.23      0.24      0.24
sigma      0.81    0.00 0.01      0.80      0.81      0.81      0.82      0.82
lp__  -12111.99    0.03 1.19 -12115.07 -12112.52 -12111.69 -12111.12 -12110.62
      n_eff Rhat
alpha  1473    1
beta   1521    1
sigma  1793    1
lp__   1277    1

Samples were drawn using NUTS(diag_e) at Tue Feb 18 11:23:56 2020.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

Stanでの推定結果から切片と傾きを取り出して直線を書き、データと重ねてみました。いわゆる探索勾配、というものがベイズ推定を使って求められました。

セットサイズと反応時間の関係が線形だなんて知っているし、探索勾配なんてベイズじゃなくても求められるじゃないか、と思われるでしょうか。

これまでの慣習的なやり方では、独立変数と従属変数との関係が存在することしかわかりませんでした。視覚探索課題を例に使うならば、セットサイズと反応時間に関係があることはわかるけれども、それがどういう形をしているのかはわかりません。線形に増加する、といっても、セットサイズ10のときの反応時間からセットサイズ5のときの反応時間を引き、それをセットサイズの差で割って傾きを求めるという手法を取って推測してきました。このような手順を踏まずとも、モデリングをするとセットサイズと反応時間の関係を定量的に表現することができます。

モデル≒関数 (function) は、入力 (独立変数) を出力 (従属変数) に変換する機能 (function) です。認知心理学は、データの背後にある処理過程を解明しようとする学問です。独立変数である入力を出力(実際に得られたデータ)に変換するにはどういった機能≒関数を仮定すればよいのか、を考える統計モデリングとは相性がいいはずです(もちろん、このセッションでやっているような単純な視覚探索課題をモデリングしても、車輪の再発明にしかなりえない可能性はおおいにあります)。

交互作用

視覚探索課題のもう一つの特徴は、非効率探索と効率探索の存在です。図1のような、刺激一つ一つに注意を向けていかないといけないような探索を非効率探索と呼びます。非効率探索の特徴が、上でモデリングしたセットサイズの効果です。刺激1つずつに注意を向けているので、刺激の数が増えると当然標的にたどり着くまでに経由する刺激の数は増えます。

図1で標的であるTだけが赤色だったら、どうでしょうか?セットサイズにかかわらず、すぐに見つかると思います。こういった探索を効率探索と呼びます。効率探索・非効率探索のサンプルデータを作って、下にプロットを描いてみました。

交互作用です。交互作用を含むモデルも、brmsで簡単に実装できます。モデル式はこういう風に書けます。\(\gamma_i search_i\)の部分が交互作用を表しています。\(\gamma_i = \beta_1 + \beta_3 x_i\)が傾きについての線形モデルになっていることがわかるでしょうか?

\[t_i\sim {\sf Normal}(\mu_i, \sigma)\]

\[\mu_i = \alpha + \gamma_i x_i + \beta_E search_i \]

\[\gamma_i = \beta_S + \beta_I search_i\]

dat2 <- list(
  N = NROW(dat_all2),
  ID = dat_all2$ID,
  RT = (dat_all2$RT - mean(dat_all2$RT)) / sd(dat_all2$RT),
  setsize = dat_all2$setsize,
  efficient = as.factor(dat_all2$efficient)
)

brmsで書いてみよう!

fit3 <- brms::brm(RT ~ 1 + setsize * efficient,
            family = "gaussian",
            data = dat2,
            iter = 3000,
            warmup = 1000,
            chain = 2,
            cores = 2,
            prior = c(prior(normal(0, 10), class = Intercept),
                      prior(normal(0, 10), class = b),
                      prior(cauchy(0, 10), class = sigma))
            )
 Family: gaussian 
  Links: mu = identity; sigma = identity 
Formula: RT ~ 1 + setsize * efficient 
   Data: dat2 (Number of observations: 20000) 
Samples: 2 chains, each with iter = 3000; warmup = 1000; thin = 1;
         total post-warmup samples = 4000

Population-Level Effects: 
                   Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept             -1.16      0.02    -1.20    -1.11 1.00     2386     2876
setsize                0.22      0.00     0.22     0.23 1.00     2441     2631
efficient1             0.60      0.03     0.54     0.67 1.00     1826     2166
setsize:efficient1    -0.22      0.00    -0.22    -0.21 1.00     1836     2087

Family Specific Parameters: 
      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma     0.77      0.00     0.76     0.77 1.00     3380     2388

Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).

\[\gamma=\beta_S + \beta_I search(1)=0.22-0.22=0\]

\[\gamma=\beta_S + \beta_I search(0)=0.22\]

\(\gamma\)は出力されていませんが、自分で計算できます。探索の種類 (効率・非効率) によって探索勾配が変わることがよくわかります。

brms::conditional_effects()では、交互作用を可視化できます。随分とわかりやすくなりました。以下のような書き方をすることで、線の色や文字の大きさなどを通常のggplot2で描くグラフと同様に調整できます。

練習の効果をモデリング

視覚探索課題に関わる現象はたくさんありますが、中でも私が注目しているのが練習や学習の効果です。ここでは一番基本的な学習の効果をモデリングしてみたいと思います。当然かもしれませんが、視覚探索課題を何度も何度も繰り返すと、どんどん反応時間が短くなっていきます。課題への慣れや注意誘導の効率性向上など、さまざまな理由が考えられるでしょう。だいたいこのような形で反応時間が変化します。

こういった形の関係性を、上で用いたような線形モデルでなんとかするのは難しそうです。ましてや、繰り返し回数ごとの平均反応時間を比較したところで、繰り返し回数によって反応時間がどのように変わっていくのかを調べるのは無理そうです。

この変化を表すのに使えそうなのがべき関数 (power function) です。

\[RT=a+bN^{-c}\]

RT rt.s rep
511.7924 2.4740830 1
509.3736 2.4373754 1
492.9844 2.1886580 1
562.6324 3.2456154 1
405.7949 0.8654975 1
514.5237 2.5155318 1

こういうモデルになりそうです。

\[t_i\sim {\sf Normal}(\mu, \sigma)\]

\[\mu = a + bN^{-c} \]

\(a\)が練習前の反応時間 (ベースライン)、\(b\)が練習を通じてどれぐらい反応時間が短くなったのか、\(c\)は減り方 (大きいほど急速に減る) を示しているパラメータ、ととらえることができそうです。

今度はStanで書いてみました。

サンプルコード
data {
  int<lower=1> N;
  vector[N] repN;
  vector[N] RT;
}

parameters {
  real a;
  real<lower=0> b;
  real<lower=0> c;
  real<lower=0> sigma;
}

model {
  vector[N] mu;
  for (n in 1:N) {
    mu[n] = a + b * repN[n]^(-c);
  }

  target += normal_lpdf(RT | mu, sigma);
  target += normal_lpdf(a | 0, 10);
  target += normal_lpdf(b | 0, 10);
  target += normal_lpdf(c | 0, 10);
  target += cauchy_lpdf(sigma | 0, 10) - cauchy_lccdf(0 | 0, 10);
}

推定結果はこんな感じになりました。

Inference for Stan model: 200219_power.
2 chains, each with iter=3000; warmup=1000; thin=1; 
post-warmup draws per chain=2000, total post-warmup draws=4000.

         mean se_mean   sd    2.5%     25%     50%     75%   97.5% n_eff Rhat
a       -0.67    0.00 0.17   -1.06   -0.76   -0.65   -0.56   -0.42  1159    1
b        3.03    0.00 0.20    2.67    2.89    3.02    3.15    3.41  1999    1
c        0.87    0.00 0.14    0.60    0.77    0.87    0.96    1.16  1485    1
sigma    0.77    0.00 0.03    0.71    0.75    0.77    0.78    0.82  2187    1
lp__  -472.25    0.04 1.44 -475.85 -472.98 -471.92 -471.20 -470.46  1449    1

Samples were drawn using NUTS(diag_e) at Wed Feb 19 10:27:47 2020.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

Stanコードを書いて推定した後には、うまくコードが走っているか・推定がうまくいっているかを確かめる必要があります。Stanの事後処理については、この資料が役立ちます。例としてトレースプロット、と呼ばれるプロットを載せます。今回は2本のチェーンを走らせているので、この2本の線がいい感じに重なっていたら、収束していそうだな、とわかります。

tidybayesパッケージを使って事後処理をすることもできます。詳しい説明はこちらで見ることができます。

draws <- fit_power %>%
  tidybayes::spread_draws(a, b, c)

head(draws)
# A tibble: 6 x 6
  .chain .iteration .draw      a     b     c
   <int>      <int> <int>  <dbl> <dbl> <dbl>
1      1          1     1 -0.483  2.95 1.13 
2      1          2     2 -0.645  3.14 0.850
3      1          3     3 -0.550  2.80 0.967
4      1          4     4 -0.698  2.74 0.732
5      1          5     5 -0.731  2.84 0.767
6      1          6     6 -0.780  2.92 0.745

点推定・区間推定値を出すことができます。tidyverseに慣れている人には随分使いやすいと思います。

draws %>%
  tidybayes::mean_hdci()
# A tibble: 1 x 12
       a a.lower a.upper     b b.lower b.upper     c c.lower c.upper .width
   <dbl>   <dbl>   <dbl> <dbl>   <dbl>   <dbl> <dbl>   <dbl>   <dbl>  <dbl>
1 -0.670  -0.976  -0.372  3.03    2.66    3.40 0.869   0.592    1.16   0.95
# ... with 2 more variables: .point <chr>, .interval <chr>

点推定値を使って、事後予測をプロットしてみました (曲線)。実際に得られたデータはマーカーで示してあります。

今回は1条件しか設けていないのですが、学習の速さや学習後の反応時間に影響しそうな現象は多くありますので、そういう操作を入れたときに各パラメータがどう変化するのかを見るのも楽しそうです。

似たようなことを私の研究でもやっていますので、興味のある方はご覧ください。視覚探索課題の正答率が処理時間の増加に伴って上がっていく様子をモデリングして、その増加率が学習の有無によって変化するかを調べました。

このモデルでは、入力 (繰り返し回数) を出力(反応時間)に変換する機能≒関数として、べき関数を利用しました。もちろん他の関数を試してみることもできますし、どちらの関数のあてはまりがよいのかを調べることもできます。また、実験条件を複数設けて、パラメタを比較することもできます。ただし、このようなモデルはあくまでも記述的なものであり、パラメタの解釈に注意が必要です (パラメタを心的過程に結びつけて解釈できない)。

おまけ: 階層モデル

ベイズ推定の特徴は、階層化が容易なことです。視覚探索課題のデータなどを見ていると気づくことですが、人によってベースの反応時間は結構違います。かなり速い人から、時間がかかる人までいます。非効率探索でも効率的に探索できる人もいれば、そうでない人もいます。探索の効率性に影響するような独立変数を操作したとき、その効果の出方にも個人差はあります。そこで、個人ごとの変動や試行間での変動を考慮してモデリングする必要が出てきます。そのときに登場するのが階層モデルです。階層モデルの利点を以下に示しました。

  1. 反復測定の際に推定を向上する
  2. 個人内/間・条件間・群間などの変動を推定できる
  3. データを平均せずに利用することができる

brmsでは階層モデルが簡単にできます。Stanで書くには、少し訓練が必要かもしれません。単純な線形モデルを階層化してみます。自信がないので、コードが変だったら教えてください。

fit1_h <- brm(RT ~ 1 + setsize + (1|ID) + (1|setsize) + (1|ID:setsize),
            family = "gaussian",
            data = dat1,
            iter = 3000,
            warmup = 1000,
            chain = 2,
            cores = 2,
            prior = c(prior(normal(0, 10), class = Intercept),
                      prior(normal(0, 10), class = b),
                      prior(cauchy(0, 10), class = sigma))
            )

lmerTestなどで線形混合モデルを使ったことがある人には、見慣れた書き方だと思います。

summary(fit1_h)
 Family: gaussian 
  Links: mu = identity; sigma = identity 
Formula: RT ~ 1 + setsize + (1 | ID) + (1 | setsize) + (1 | ID:setsize) 
   Data: dat1 (Number of observations: 10000) 
Samples: 2 chains, each with iter = 3000; warmup = 1000; thin = 1;
         total post-warmup samples = 4000

Group-Level Effects: 
~ID (Number of levels: 5) 
              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept)     0.27      0.36     0.01     1.16 1.01       99      226

~ID:setsize (Number of levels: 10) 
              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept)     0.55      0.18     0.31     1.00 1.01      205      274

~setsize (Number of levels: 2) 
              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept)     4.72      4.05     0.20    14.95 1.04      107      179

Population-Level Effects: 
          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept    -4.03      8.43   -23.24    11.47 1.03      121      148
setsize       0.51      1.04    -1.47     2.79 1.03      119      217

Family Specific Parameters: 
      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma     0.72      0.01     0.71     0.73 1.00      266      749

Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).

個人ごとの変動をプロットすることもできます。

この資料で扱ったような他のモデルも、すべて階層化できます。

Stanを使ってモデリングするために:数学編

December 20, 2020
stats Stan

雑なエントロピー入門

February 25, 2020
stats

Stanで階層diffusionモデル

December 16, 2019
stats diffusion stan