ベイズマックスへようこそ。
統計に関するあれやこれやを自由気ままに投稿します。
全記事一覧はこちらから。

2020年12月20日

心理学の再現性と科学性と「ベイズ」に関する自分の立ち位置を整理する──JPA2020再現可能性シンポジウムのスライドを添えて──

 この記事は,Open and Reproducible Science Advent Calendar 2020およびベイズ塾 Advent Calendar 2020の20日目の記事です。2020年9月9日に行われた,日本心理学会第84回大会 (JPA2020) の若手の会企画シンポジウム「若手が聞きたい再現可能性問題の現状とこれから」で発表したスライドの紹介と裏話 (経緯の話とか) をしつつ,再現性に関する現時点での自分の立ち位置について整理をしたいと思います。最後に,自分がなぜ「ベイズ」を推すのかについても少し。当初は「スライド紹介+おまけ」という感じの短い記事にするつもりだったのですが,書き始めたら止まらなくて,最終的にはスライドがおまけになってしまいました。なお,シンポジウムの動画は若手の会のWebサイトにまとめられています。また,同シンポジウムで登壇された山田先生のスライド (紹介記事),平石先生・中村先生のスライドもSlideShareに公開されています。
※12/20 12:40ごろ記事タイトルを若干修正しました。

1. スライドの紹介と裏話

 心理学においてオープンデータを実践することの意義について,(1) 科学的知見の信用性 (credibility) の向上と (2) データの二次分析の促進という2つの側面からお話をしました。オープンデータにしないことの弊害というよりは,オープンデータを実践することで得られるメリットについて,具体的かつ説得的かつポジティブに説明することを目指しました。

 僕が再現性に関するトークをしたのは今回が初めてでした。グリーンバックなのにバーチャル背景を使わない某Y先生にお声かけ頂いたことがきっかけです。再現性に関する話題にはもともと関心があり,いろいろな情報を聞きかじってはいたものの,こういう場で話せるほど引き出しがある訳でもないし,もっと他に適任がいるだろうと思っていましたが,これを機にちゃんと勉強するのも悪くないかなーということで勢いで殻を破って引き受けることにした次第です。それで何の話をしようかと思ったときに,自分がまともに実践しているのはオープンデータと統計学の勉強とプレプリントの公開ぐらいしかなかったので,せっかくだしオープンデータの意義についてちゃんと考えるかーと思ってこんなトークになりました。この手の話題に関連する論文やプレプリントはTwitterのタイムラインでよく流れてくるので,文献を探すのは比較的楽でした。いい時代ですね。といってもトーク内容はほとんど自分の経験ベースの考察でしたが,企画の趣旨からして若手研究者による実践例みたいなのが求められていたように思うのでこれで良かったかもしれません。この発表のお陰で,自分がもともと実践していたオープンデータの営みにちゃんと意味があることを再確認できたし,今までのやり方では不十分であったことなども分かり (例えば,データだけでなく分析スクリプトも共有したほうがいいこととか),とても良い学びになりました。せっかく殻を破ったので,これからも再現性についての情報発信をしていきたいなーと思っています。

2. 再現性に関する自分の立ち位置

 このシンポジウムは再現性に関する自分の立ち位置を整理するのにもとても役立ちました。自分のこれまでを振り返ってみると,実は「再現性問題」が明るみになる以前から僕は再現性に関心があったんだなーと気づかされました。学部時代から僕は心理学の科学的方法論に関心があって,学部入学当初はむしろ (無知ゆえに) 心理学という学問を疑ってかかっていたからこそ必然的に,心理学の科学性の拠り所である研究法や統計学についてそれなりにちゃんと勉強できたという経緯があります。当時の指導教員であった千野直仁先生の数理的・論理的な厳密さへのこだわりや科学観にもすごく影響を受けています。千野先生は当時からオープンデータの重要性を訴えられており,また統計学の誤用に関する啓発論文も執筆されていたので,心理学の科学性や再現性は僕にとって当時から身近なトピックでした。千野先生の先見の明は流石としか言いようがないです。

 僕は心理学には科学であってほしいと思っています (全ての心理学がそうあるべきと思っている訳ではありませんが)。なので,心理学者が自ら「心理学は科学ではない」という旨の発言をするのを聞くと悲しい気持ちになります。ただ,僕は心理学における「再現性問題」をどうにかしたい,というような使命感はあまり持っていなくて,どちらかといえば,自分と自分の周り (近接分野) の研究の科学らしさ (再現性を含む) さえ高められればいいかなと今は思っています。心理学は広大であり良くも悪くも一枚岩ではないので,自分の狭い見識だけに基づいて全体についてどうこう言うのは無理筋だし,別の分野で起こった問題について外側から首を突っ込むのも正直面倒だし (自分の分野を棚に上げている訳じゃなく,いちいち他の分野のことまで気にしていられない),そもそも自分はそういうことができる立場にもいないので (制度そのものを整えるとか),とりあえず目の前の自分の仕事がちゃんとできればいいんじゃないかと思っています。実際,僕は科学の俎上に乗りやすそうなテーマ (心的回転とか) ばかりを意図的に選んで研究しているので (自分のテーマも再現性問題と無縁ではありませんが),厳密さを妥協せざるを得ないこともありうる他の研究テーマに対してまで厳密な方法を強要するようなことはとてもできません。そういう意味では,僕は「再現性問題」という心理学全体や他の分野にも波及した時事ネタ自体に興味があるというよりは,科学性・再現性を高める方法論とその実践にもともと関心があったと言うべきかもしれません (もともと疑ってましたし)。もちろん,再現性問題をきっかけに明るみになったこともたくさんありますし,再現性問題それ自体を軽視している訳では決してないのですが,再現性問題という言い方をしてしまうとQRPsのようなネガティブな面が強調されやすくなって,これまで誠実にやってきた研究者からの反感をいたずらに買ってしまうリスクがあるんじゃないかと危惧しています (危機感を煽りたい気持ちも分かりますが,やりすぎは逆効果だと思います)。そういう視点も大事ですが (現にそれがなければこんなに盛り上がらなかったでしょう),再現性を高めるという意識を広く共有したいなら,もうちょっとポジティブな視点で語る人が増えてもいいんじゃないかなあと思っています。再現性は高ければ高いほど良いに決まっていますし,そのことに反対する研究者はいないでしょうから。

3. 再現性・科学性と「ベイズ」

 この記事はベイズ塾Advent Calendarの記事でもあるし,そもそもこれは統計ブログなので,ベイズの話もしましょうか。再現性の文脈では「ベイズ」の話題もよく上がります。p値を使った帰無仮説検定の代替案としてベイズ的な仮説評価が有用である,といった内容であることが多いように思います。これについてもたくさん議論がありますが,僕自身はベイズと再現性を直接的に結びつけるようなことは普段はあまり考えていません (後述するように,結果的に再現性の向上に繋がることは十分ありうると思っていますが)。再現性を高めたくてベイズに傾倒しているという訳ではないんですよね。p値をやめてベイズにすれば再現性が上がる,という単純な話でもなくて,使い方を間違えればむしろ再現性を損なうリスクもあります (前回の記事「p値で有意と言えない効果もベイズなら効果があると言える?──事後分布に基づく仮説評価について──」も参照)。p値だってちゃんと使えばとても役立ちますし,なんなら僕は修論でも博論でも古典的な分析しかしていません。どちらかといえば,僕がベイズを推す理由は再現性のためというより科学としてのスコープを広げるためと言ったほうが良いかもしれません。僕は物理学や科学史が好きで,物理学 (特に古典力学) のような数理モデルを心理学にも適用したいということを学部入学当初から考えていたのですが,大学院に入ってベイズ統計モデリングと出会ったことでまさにそれに近いことができるようになりました。幸せです。

 統計モデリングの利点については,心理学ワールド86号の「この人をたずねて」に寄稿した清水先生へのインタビュー記事で清水先生がいみじくも説明されている内容にとても納得しており,また第3回犬山認知行動研究会議 (2020/1/11) では当時の自分の考えを整理して発表したこともありますが,せっかくの機会なので改めて考えをまとめてみます。実験計画法+有意性検定という伝統的な研究法では効果の有無や関連の有無といった質的な評価はできますが,関数形の数理表現のような量的な説明・予測は難しく,また,研究が進むにつれてどんどん要因が増えてどんどん小さな効果を検証する方向に進みがちなので,それが再現性の低下を招いてしまう面もあると思います (小さな効果を検出するには大サンプルが必要なので追試のコストも上がる)。こういう事情を考えると,頑健な現象の背後にあるメカニズムを統計モデリングによって検証するアプローチを取り入れることで結果的に再現性の向上に繋がることはあるだろうと考えています。一方で統計モデリングも万能ではなくて,分析するデータに含まれていない情報はモデル化できないし (あるパラメータを入れたくてもそれを識別できる情報がなければ推定できない),モデルに含まれなかった重要な変数の存在を見落とすリスクもある上に (e.g., 疑似相関),モデル内のパラメータの妥当性 (実在性や解釈性を含む) の確証はモデリングだけではできないことが多いです。だからこそ,それぞれの方法で手の届かないところを補うために,従来の実験計画法+有意性検定と統計モデリングの両方を組み合わせたり,両者を交互に繰り返したり (e.g., パラメータを操作する実験を行って条件間差を見る) することが必要になるのではないかと思います。統計モデリングはベイズじゃなくてもできますが,ベイズには推定の容易さであったり優れた仮説評価指標を使えたりといった利点があるので個人的にはベイズ推しです。

 あと,実験計画法+有意性検定だけだとデータが持っている情報のほとんどを捨ててしまうことになってもったいないなと思います。それだけで終わらずに,統計モデリングや探索的アプローチなどの二次分析をしたほうが,有限の資源を有効活用できて無駄がありません。まだ食べられるデータがあるならぜひオープンにしてください。骨までしゃぶりつくします。

4. まとめ

 存外長くなってしまいましたが,まとめると,僕の関心は再現性に特化しているというよりは,心理学における科学的方法論とその実践に興味があるということです。自分の研究が依拠している研究法について無知なのは怖いですし,「よい」科学的方法論に根差した研究であれば再現性も高くなるはずですしね。科学的方法を洗練させていく営みはとても健全かつ前向きな営為なので,無駄に悲観的になる必要はないと思います。考えるだけじゃなくてちゃんとその方法を自分で実践することで規範になれたらもっといいですね。僕はこれまでいろんな研究テーマや方法論 (ベイズとかGLMMとか多変量解析とか,実験とか調査とか疫学研究とか二次分析とか) を扱ってきましたが,こうやって考えればこれまでの自分の研究のスタンスをだいたいうまくまとめられる,ということに気付いたのが今年の大きな収穫でした。

posted by mutopsy at 00:00 | 雑記

2017年12月30日

Stanでポン・デ・リングを作ってみた

 こんにちは。mutopsyです。この記事は,Stan Advent Calendar 2017の25日目のエントリー記事です(実際にこの記事を書いたのは12月30日ですが)。

 みなさんはドーナツは何が好きですか?僕はフレンチクルーラーとエンゼルクリームがお気に入りですが,たまーにポン・デ・リングなんかも食べたくなります。このブログを訪れてくださった皆様の中には「Stanでポン・デ・リングが作れたら嬉しいのになあ……」とお考えになられた経験のある方もおられるでしょう。本日,なんとなくTogetterまとめを見ていたら,こんなまとめを見つけました。

「おっぱい関数選手権」の名古屋代表の名大生さん、1つの数式だけでポン・デ・リングを表示することに成功「天才の所業」

 このまとめは,ポン・デ・リングの形状(三次元と二次元の両方)がたった1つの数式で表現可能であることを発見した@CHARTMANqさんのツイートをまとめたものです。このまとめを読んで甚く感動した僕は,さっそくStanで実装してみることにしました。Stanを乱数生成器として用いて,二次元のポン・デ・リング分布からのMCMCサンプルを発生させるという試みです。三次元でもできますが,とりあえず二次元ポン・デ・リング不等式を用いてみました。

 二次元ポン・デ・リング不等式は,極座標を用いて(r-2|cos4θ|-10)(r+|cos4θ|-6)≤0と表せます(上記まとめの@CHARTMANqさんのツイートをご参照ください)。極座標というのは,原点からの距離 (r) と角度 (θ) を使って空間上(ここでは平面上)の点の位置を表す座標系です。この不等式を満たすrとθの領域が 二次元のポン・デ・リングを表します。

 二次元ポン・デ・リング分布からの乱数(MCMCサンプル)を発生させるStanコードの例は以下の通りです。

Stanコード01: 二次元のポン・デ・リング分布から乱数を発生させるコード
parameters{
  real<lower=0> r;  //極座標のr
  real<lower=0,upper=2*pi()> theta;  //極座標のθ(0°〜360°の範囲)
}

transformed parameters{
  real<upper=0> D;  //上限を指定することで不等式を表現
  D = (r - 2*fabs(cos(4*theta)) - 10)*(r + fabs(cos(4*theta))-6); //二次元ポン・デ・リング(不)等式
}

generated quantities{
  real x;
  real y;
  x = cos(theta) * r;  //直交座標のxを計算
  y = sin(theta) * r;  //直交座標のyを計算
}

 今回はStanを乱数生成のためだけに用いているのでdataブロックは必要ありません。また,事前分布として一様分布を用いるため,modelブロックも不要です。Stanに慣れていると変な感じがするかもしれません。rとθの事前分布(一様分布)のうち,ポン・デ・リング不等式を満たすパラメータのみをMCMCサンプルとして生成することにより,二次元ポン・デ・リング一様分布からの乱数を発生させます。このモデルを実行するためのRコードは以下の通りです。

Rコード01: 上記モデルを走らせるためのRコード
library(rstan)
data <- list(Dummy = 1) #ダミーデータを作る(実際には使わない)
stanmodel <- stan_model(file="stancode/Ponde_2d.stan") #上記Stanコードを読み込む
fit <- sampling(
  stanmodel,data=data,seed=123,
  chains=4,
  iter=10000
)

 上記のコードではダミーデータを渡していますが,実際にはこのデータに意味はありません。Stanコードを走らせてみたところ,Rhatは全て1.01未満となり問題なく収束しました。各パラメータ (r, θ, x, y) の事後分布は以下のようになります。

ponde_marginal.png

 周辺分布だけを見ても,なんとなくポン・デ・リングっぽくありませんか。θの分布の凹凸やxとyの二峰分布具合はまさにポン・デ・リングですよね。ではいよいよxとyの同時分布を見てみましょう。

pon.png

 どう見てもポン・デ・リングです。本当にありがとうございました。ぜひ皆さんもStanでポン・デ・リングを作ってみてください。もちろん数式が分かればポン・デ・リング以外のものも作れます。お試しあれ。それでは皆様,よいお年を!

 (「別にStanじゃなくてもよくね?」とつっこんではいけません。)

posted by mutopsy at 21:15 | 雑記

2017年12月07日

統計ブログを作りました。

こんにちは。mutopsyこと武藤拓之です。
大阪大学で認知心理学の研究をしています。
心理学と統計が好きな,どこにでもいる普通のベイジアンです。

勢いあまって統計ブログというものを作ってしまいました。
RやStanを使って統計に関する記事を書いたり,あるいは書かなかったりする予定です。

このブログの名前はベイズマックス。あなたの知的好奇心をくすぐります。さういふブログに私はしたい。
何卒,よろしくお願いいたします。
posted by mutopsy at 16:08 | 雑記