jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

p値とは何なのか?

今回は、統計学の知識があまりない人向けの記事にしようと思います。昨今のデータが社会中に溢れている環境では、データから上手に自分の知りたい情報を抜き出せるかどうかが重要だと思います。その時に、統計学に基づいた意思決定やデータの解釈を行うのが良さそうに見えます。そこでデータ分析が必要になるわけですが、自分自身に統計学の知識がなければ、他の人に分析をお願いすることもあるでしょう*1。今回は統計用語をできるだけ使わずに、でも統計学の知識の使い方に関するイメージをお伝えしたいと思います*2

p値のpは?

pは確率、probabilityを表しています。確率なので、pは0から1の値をとります。

何の確率なの?

ここがとても理解しにくいところです。まずは、これが「ある仮定の元で現在手にしているデータが観察される」確率と考えましょう。確率が高いということは、その仮定の元で今持っているようなデータが出てきやすいということを意味します。一方、確率が低いということは、その仮定の元では今持っているデータが出てくることがほとんどないよと解釈できます。

どのくらいの確率を「低い」としているの?

これは研究分野にもよりますが、社会科学に関連する研究分野では5%とすることが多いです。5%よりも低ければ、その仮定の元で今持っているデータが出現する確率が十分に低いと判断します。

「低い」から何なの?

ある仮定のもとで今持っているデータが出てくる確率が十分に低い。しかし、実際にそのデータを持っているわけです。ここから、元の仮定自体が誤りであるとした方が自然ということになります。なので、ある仮定はなかったことにします。

ところで「ある仮定」って何?

理解しにくいポイントその2です。実は、調べている人が主張したいことと逆の仮定をおいています。例えば、2つのグループに何かの得点差があると主張したい場合に、あえてその逆の「2グループの得点には差がない」という仮定を立てます。

上述したようにこの仮定のもとで実際のデータの出現確率を調べる場合、2つのグループの差は小さい確率は高いです。しかし、ある程度大きな差がある場合、そのような確率は低いと考えられます。ここで、「2つのグループの得点に差がない」という仮定に無理があると判断してなかったことにするわけです。この結果、2つのグループの得点には偶然ではあり得ないような差があると主張できることがとても重要です。

p値って低ければ低いほど良いの?

これは、難しい質問で、上述したようにp値が有意水準よりも低いかを調べているので、一見低ければ低いほど良さそうです。しかし、この考え方は推奨されていないどころかやめた方が良いとまで言われています*3。あくまでもあらかじめ設定した確率よりも低いかどうかだけを判断した方が良いです。

*1:社会人を念頭に置いています。学生の皆様。必要な事柄は自分で勉強しましょう

*2:なので統計学者の方。詳細な定義や考え方に多少の問題はあるかと思いますがあくまでイメージとしての理解なのでご容赦ください

*3:https://amstat.tandfonline.com/doi/full/10.1080/00031305.2016.1154108#.Yc25fRPP124

質問は何のためにするのか改めて考えてみた

今回は、以前に投稿した以下の投稿内容を更新したいと思い、まとまらなそうな考えを何とかまとめる方向でメモ書きしていきたいと思います。

webbeginner.hatenablog.com

なぜ改めて考えたくなったのか

以前投稿した内容に不満があるわけではないのですが、以下のtweetをふとしたきっかけで読んだ時に、以前の投稿では、そこにある問いに答えられていないのではないかと思いました。何だかモヤモヤした気分です。なので、改めて考えてみることにしました。



自分の興味理解を土台にした質問

以前の投稿では「わからないから聞く場合」「わかったから聞く場合」に分けて、質問の目的を考えてみました。そして、どちらの場合でも、自分・話し手・周囲の聴衆の皆が質問やその答えから得るものがあるという説明をしました。質問が少しためらわれるような場面であって、結果的には皆が得をするのであれば、思い切って質問する方が良いだろうという結論は、自分を含めた質問をためらいがちな人への応援になる気がしていました。ただ、これは今振り返ってみて気付いたのですが、以前の投稿は、自分が興味あること、自分の理解の程度の高さが土台になっています。これをちょっと掘り下げてみると、自分の興味がないことは、当然理解の程度も低いし、質問することで自分に得がないように感じられるかもしれないと思いました。

自分の興味理解がなくても質問するのはなぜか

では、改めて自分の興味がない話題でも質問する理由を考えてみます。自分としては興味がそれほどなくても、話し手はその話題に興味があることが多いでしょう(だから話しているのではないかと思います)。そして、興味・関心があり、自分なりの考えを持っているときほど、自分の思考の偏りには気づきにくいということがあります*1。その話題に興味がそれほどないことで、その話題の概要・物語の構造を俯瞰的・客観的・偏りのない視点で眺められるというメリットがあるのです。また、ほとんどの場合で、話し手と自分は経験や知識が違います。話し手が話した言葉が、自分の心の中の経験や知識のネットワークを通り抜ける間に、話し手とは異なる解釈や異なる着眼点が見えてくるかもしれません。もしそのようなことに気づけば、これを利用して、話し手に質問できます。質問を通じて、話し手の考え方には、実は別の捉え方もあるのだと伝えることができるわけです*2。これが誰にとって得なのかを考えると、自分よりも話し手だろうと思います。なぜなら、自分にとっては依然として興味のない話題かもしれないからです。しかし、その質問そのものは自分にとって有益とは言えなくても、話し手の役に立つことで、話し手の信頼を獲得しやすくなり、良いコミュニケーションを築くまたは維持する可能性が高まります。これは自分にとって得があると思います。結局、自分に興味がそれほどないような場合であっても、何か質問をすることは、自分にも話し手にも得することがあります。

*1:心理学では確証バイアスと呼ばれています

*2:確証バイアスが強い人にはすぐにそのまま受け取ってもらえない可能性はありますね。

ブログの閲覧回数が100万回になりました!

本日はお知らせとお礼です。

100万回達成について

このブログの閲覧回数が100万回を超えました。
見返してみたら最初の投稿は2013年12月でしたので、丸々8年での達成となります。達成と書くといかにも目指していたようですが、そのようなことは一切ありませんでした。2016年に閲覧回数が10万を超えたことを報告した際には「100万回はないだろうから」と書いてあります。

webbeginner.hatenablog.com

とはいえ、閲覧回数がどんどん増えていくことは、投稿しているものとしてやる気につながりますし、大変感謝しております。特に購読者になってくださる方はいつもありがとうございます。

この8年間で変化したこと

この8年の間に著者の経歴も変化しています。匿名でやっているので、詳しくは説明しませんが、ブログを始めたときは、文科省に関係のある独立行政法人〜研究所の研究員でした。その後、大学教員となり、さらに現在は企業の研究所で勤務しています。この間に研究だけでなく、色々なデータ分析の大学授業科目を担当させていただいています。

8年経っても変わらないこと

そもそものきっかけは、知人からの応援・助言でした。色々悩んだり行き詰まったことがあって、それを解決できたなら、今度はそれをブログにしてウエブの世界の人と共有してみたらどうかと言われて、「なるほど、そういうのがあっても良いな」と自分で思えたのでとりあえず始めた感じです。投稿数が100になるまではほとんど誰もみない、主に未来の自分へのメモでした。投稿数がある程度溜まってくると、同じような悩み・問題を持った人が検索してくれることで閲覧回数が次第に伸びていきました。時々ですが、自分で作業に行き詰まって検索をすると自分の投稿を見かけるということも出てきています。今後も、このブログを立ち上げた動機を忘れず、自分で大変だったことをいつかの誰かが参考にできるような投稿を続けていきたいと思います。

学術雑誌で論文を出すとはどういうことなのか?(1)

今回は、論文が学術雑誌に掲載される*1ことのプロセスや意味などを考えてみたいと思います。世の大半の人にはどうでも良いことなのかもしれないのですが、中には「研究者が何かといえば論文、論文と騒いでいるが、論文が出るのがそんなに大事・大変なことなの?」という疑問をお持ちの方がいらっしゃるかもしれないので、そういう方に向けて、僕が知っていることを書きたいと思います。第1回の今回は、論文の著者という立場で書いてみたいと思います。
あくまでも個人的な経験に基づく個人の見解です。異なる考え方を持っている研究者もいるかもしれませんし、それはそれで良いと思います。

筆者の経験

これまでに論文が学術雑誌に掲載された経験が何回かあります。筆者の専門は心理学で、日本国内の心理学系学術雑誌に何回かと英語圏の学術雑誌にも何回か掲載されています。自分が責任著者(後で説明します)でないものも含めると合計で10回以上はあります。また、審査員として投稿された論文を査読した経験はその2〜3倍くらいあると思います。あとは国内または国際学会に応募された論文または論文要旨の審査や海外の研究助成金の審査の経験があります。なので、人から聞いた話も中にはありますが、基本的には自分で経験したことを元に説明したいと思います。


論文投稿のよくあるプロセス

論文著者から見ると...

1. 論文を書く*2。各学術雑誌には、受け付ける研究の種類や書き方に至るまで細かい指定があるので、それに合わせて書く。
2. 論文を投稿する。以前は印刷した原稿を郵送でしたが、最近はほぼ電子投稿です。投稿用のWEBページで原稿や図表のファイルをアップロードして投稿用原稿を完成させます。これ以降、全てこのwebページにプロセスのログが残っていきます。

(この間約3~6ヶ月)

3. 審査コメントを受け取る。編集者と2〜3人の審査員の審査結果とコメントを受け取ります。この時点で、掲載可となることはほぼないので、審査員のコメントを読みながら論文の修正を試みます。よく指摘されるポイントは、「この研究の意義や先行研究との差分が分かりにくい」「分析結果が分かりにくい。もっと良い分析方法がある」「結果の解釈に論理の飛躍がある」などです。

(この間3〜6ヶ月)

4. 修正原稿とコメントへの返答レターを書く。修正については、基本的に審査者のコメントに合わせます。どうしても修正したくない場合は、その理由を書いて編集者の意見を仰ぐことになります。修正した点とその意図をコメントごとに返答として記載したレターと呼ばれる文書も作成します。
5. 再度投稿する。

(この間3〜6ヶ月)

6. 審査結果を受け取る。そのままで掲載可となることもありますが、少し修正した上で掲載可となることもしばしばあります。また、修正した原稿では、コメントに答え切れていないと判断されれば掲載不可の結果になることもあります。掲載不可となった場合でも、他の学術雑誌に投稿することはできますし、大抵再投稿になります。

(この間約1ヶ月)

7. 出版に向けた原稿の確認と修正。ゲラ原稿と呼ばれる原稿が届くので、スペルミスや引用文献の抜けなどを確認します。

(この間約1ヶ月)

8. 掲載号が決定される。紙に印刷される雑誌よりも早いタイミングで電子的な出版物として世に出ることもよくあります。

論文の審査はコミュニケーション

上記を見て分かるように、最初に論文を学術雑誌に応募してから約1年はかかるというのが典型的なパターンです。論文の審査というのは、合格不合格が決定される単純なものではありません。編集者や審査員とのやりとりの中で研究そのものや論文がブラッシュアップされていくプロセスが含まれています。特に、著者が適切であると考えていた研究方法や分析方法について、審査員が第三者的観点からそれを検証する点が重要です。著者は自分たちのやり方を取れば、研究の結論にとって良い結果が得られると感じています。第三者的な立場から見て、それが妥当な判断であるとお墨付きをもらうことで著者は安心しますし、論文の読者も安心します。

審査員のコメントに全て従うわけではない

審査員のコメントによって研究の品質が向上すると書きましたが、審査員もまた人なので、100%そうなるわけではありません。なので、どうしても著者が自分の主張が正しい場合には、審査員コメントに反論することも可能です。その場合は担当編集の人がどちらの言い分をとるかを判断することが多いです。経験的には、審査員の方のコメントが著者の主張と大きくずれている場合、論文の表現が審査員にとって誤解を生むものであったということも多いです。なので、反論する際には、いつも以上に慎重に元の論文と審査員コメントを読み込む必要があります。

査読された論文に研究者がこだわる理由

以上見てきたように、論文の査読プロセスは、研究の品質向上にとって重要なプロセスとなり得ると思います。また、読者も一定の品質が著者以外の研究者によって担保された研究であると納得してその内容を読むことができるわけです。

*1:「出版される」「パブリケーション」と呼ばれたりします。

*2:もちろんこれがとても大変だし、後のプロセスを意識して書くべきですね。

Rのfactanal関数で因子分析した時に因子負荷行列を全て表示したい

今回はRを利用した分析に関する非常に細かい話です。

因子分析とは

因子分析は、ある個人・対象について、複数の指標で計測を行った場合に、それらの指標を上手に要約する方法の1つです。例えば、ある学校のある学年の生徒に国語・算数・理科・社会のテストを実施したとします。生徒一人ひとりに各教科の得点が記録されている状況です。もちろん各教科ごとにみていけば良いのですが、4つの科目の成績を因子分析によって1つに要約し、いわゆる「学力」のようなものを考えることができます。この「学力」のように、要約された変数(因子と呼びます)は、それを実際に測るわけではないところが、少しわかりにくいかもしれません。また、単純なテスト得点の合計であれば、強化ごとの重み付けを考える必要がありませんが、因子分析では、因子が各指標に対してどの程度影響を持っているか *1の重み付けを計算しています。これが因子負荷です。

Rのfactanal関数で因子分析

因子分析をR言語で行う場合は、factanal関数が利用できます。引数として複数の指標のデータテーブル、因子数、回転方法を指定します。以下の例ではdataset*2というデータテーブルに対して因子数2, 因子の回転方法としてpromax法を指定した書き方を示しています。

res.factanal <- factanal(dataset, factors = 2, rotation = "promax")

因子負荷行列の負荷量の値を全て表示したい

factanal関数の結果はprint関数で表示できます。ただしこの時、因子負荷量が0.1未満の値は非表示となるようにデフォルトが設定されています。実際に見てみると表示がない値が気になるだけでなく、非表示があることで見にくくなります。これを避けるには、結果を表示する際のprint関数にcutoffという引数を値0を代入して加えます。これで全ての因子負荷量が表示され、結果として、表全体も見やすくなります。

print(res.factanal, cutoff = 0)

*1:今回深く説明しないのですが、因果の方向的には因子がまずあって、測定可能な指標は、その因子の影響を受けていると考えます

*2:Rのベースパッケージで利用可能なirisというデータ

機械学習の精度指標

昨今、いわゆる機械学習の技術は、学術研究だけでなく、様々な産業応用がなされています。ユーザーとしては、実際に使ってみて、それが便利であるか否かで利用を判断すれば良いと思います。一方で、こういった技術がどの程度、客観性があったり、信用できるものなのかを理解できれば、技術の利用がさらに進むのではないかと考えました。そこで今回は、機械学習の精度、つまりどの程度うまくデータを予想できているかの指標を3つ考えてみたいと思います。

想定する問題

機械学習は計算方法も、利用方法も様々です。その中で今回は2値分類という問題を考えます。2値分類というのは何かの情報を使って2つの状態や行動(例えば「はい」か「いいえ」か)を予想すると考えると良いでしょう。これが当てはまれば、なんでも良いわけですが、より具体的な問題として、ある商品を宣伝・販売しているウェブページにおいて「カートにいれる」のボタンを押すか押さないかを予想するとします。

予想と実際の行動を第1種の過誤と第2種の過誤で考える

機械学習で色々な情報を元に、ボタンを押すか押さないかを予想します*1。すると予想(押すか押さない)と正解(実際に押すか押さない)の関係は以下のような4つの場合のいずれかになります。

正解:押す 正解:押さない
予想:押す 予想通り 予想外れ
予想:押さない 予想外れ 予想通り

予想通りの場合と予想外れの場合がそれぞれ2つあります。ここで最初に予想したものによって、これらの呼び方を変えてみます。

正解:押す 正解:押さない
予想:押す TP FP
予想:押さない FN TN

TP: True Positive, TN: True Negative, FP: False Positive, FN: False Negative

ここで押さないのが基本状態で押すのが特筆すべき行動という認識で見てみると、これは統計的仮説検定の第1種の過誤、第2種の過誤とも似たような状況であることがわかります。第1種の過誤、つまり実際には押さないのに押すと誤って予想してしまった場合です。第2種の過誤は、実際に押すのに押さないと予想してしまう、つまり押すの見逃しにあたります*2

正解:押す 正解:押さない
予想:押す 正しく予想 第1種の過誤
予想:押さない 第2種の過誤 正しく予想

このように考えてみると、正解率と言っても以下の2種類のような正解率が計算できることになります。

機械学習の精度指標1:Precision

 Precision = \frac{TP}{(TP + FP)}

TP+FPというのは「押すと予測した場合」の合計数です。つまりPrecisionは、「押すと予測した中で本当に押すが正解だった場合の割合」を示しています。

機械学習の精度指標2:Recall

 Recall = \frac{TP} {(TP + FN)}

TP+FNでFNが直感的には少しわかりにくいのですが、TPとFNはどちらも「押すが正解」の場合です。つまりRecallは「押すが正解の場合」のうち、正しく「押す」と予測できた場合の割合を示しています。

ここまでで2つの精度指標はどちらも大事そうです。しかし、2つあるとどちらにより頼ったほうが良いのかなどの考えが頭をよぎります。どうせなら1つの指標でPrecisionとRecallどちらの要素も考慮できないだろうか?そんな指標が以下のF値です。

機械学習の精度指標3:F値

 F値 = \frac{2 * Recall * Precision}{Recall + Precision}

上記の式で分母と分子のそれぞれにRecallとPrecisionが出てきます。よって、F値は、RecallとPrecisionの両者を考慮していることがわかります。しかし、Recallや Precision自体が複数の指標から計算するものになっている上に、分母と分子の両方に RecallとPrecisionが出てきます。なので、Recallと Precisionの値がどのように変化するとF値が大きくなったり小さくなったりするのか直感的に理解しにくいです。そこで上記のF値の式を変換させてみようと思います*3

F値を求める式の変換

 F値 = \frac{2 * Recall * Precision}{Recall + Precision}

Recallと Precisionの定義式をここに代入してみます。

 \frac{2 * \frac{TP}{(TP + FN)} * \frac{TP}{(TP + FP)}}{\frac{TP}{(TP + FP)} + \frac{TP}{(TP + FN)}}

だいぶややこしいので、いったん、(TP + FP)をXとし、(TP + FN)をYとおいて式をもう一度眺めてみます。

 \frac{2 * \frac{TP}{Y} * \frac{TP}{X}}{\frac{TP}{X} + \frac{TP}{Y}}

分子は掛け算なので、分子の中にある分数の分子と分母をそれぞれかければ良いですね。分母は足し算なので2つの分数を通分して足してみます。

 \frac{\frac{2*TP*TP}{X*Y} }{\frac{TP*Y + TP * X}{X*Y}}

分子と分母それぞれX*Yで割っているので、ここは約分しちゃいます。

 \frac{2*TP*TP }{TP*Y + TP * X}

分母はTPでくくりましょう。

 \frac{2*TP*TP }{TP*(X + Y)}

TPで約分できますね。

 \frac{2*TP }{X + Y}

ここでXとYをもとに戻します。

 \frac{2*TP }{(TP + FP)+ (TP + FN)}

これでだいぶ整理できました。まず分子はTPつまり正しく押すと予想した場合の数を2倍しています。次に分母は、分子同様にTPの2倍に加えて、FPとFNがあります。つまり正しく押すと予想した場合の2倍の数に間違って押すと予想した場合の数と誤って押さないと予想した場合の数が足されています。こうして見てみるとF値は2種類の予想外れに対する正解率になっていると理解できますね。最初の式だとよくわかりませんでしたが、式を変形して見たら案外単純な指標であるとわかりました。

まとめ

今回は、機械学習の精度を表す3つの指標Precision、Recall、F値を考えました。実際の分析では、3つとも計算する必要がありそうですが、それぞれの意味をきちんと把握した上で結果をみると分析結果の理解をより楽しめそうです。

*1:典型的な機械学習の話題なら、どんな情報を元に予測するか、どんな計算方法で予想するかが重要なのですが、今回はそのようなポイントにかかわらず問題となる評価に注目しているので、大変雑な説明になっています。

*2:ここでは2種類の予想外れの理解に役立つと思っての説明で、統計学的に2つが等価であると言いたいわけではありません

*3:結論だけ見たい人は途中式を飛ばしてください

心理学の構成概念について

本日は、心理学が扱う「構成概念」を取り上げます。独特な考え方をするのもポイントですが、一般的にも用いる単語が構成概念を指す用語として扱われるとどうなるかについて考えてみます。

そもそも構成概念とは

構成概念というのは実体を持たない説明のために有用な概念と考えると良さそうです。例えば、心理学で扱う構成概念の1つに「知能」があります。知能という概念について、環境により適応しながら行動を選べる能力と仮に定義してみます。このような能力があると、様々なテストで高得点を上げることができたり、特定の職業に寄らずに社会で活躍することをうまく説明できそうです。ここで、知能が脳の特定の部位やその活動に依存していないことが重要です。一般に心の働きは、脳の働きに結びついていると考えられますが、心理学で構成概念として定義している際には、必ずしも脳の特定の部位の活動にその実体を求めていません。

構成概念には定義が伴う

上記の例では、環境への適応という緩い定義を考えました。実際には、もっと厳密な定義を与えることもあります。例えば、上記の知能は、数字や場面の記憶、言葉の知識のようないわゆる知能テストによって測られるものと定義されます。

一般的に使われる言葉が構成概念を示す用語になる

知能という言葉は、心理学だけで用いられる言葉ではないですね。例えば情報学分野では、人工知能がしばしば取り上げられます。また、学術領域とは異なる一般的な言葉としては、知能が「頭の良さ」とか「地頭の良さ」などと考えられることもあります。同じ言葉であっても、学問領域が異なれば、定義が異なることがありますし、一般的に使われる意味とは異なることもあります。現代の心理学は、19世紀末頃から盛んになっており、物理学や数学に比べれば比較的新しい学問です。様々な心の働きを説明する際に、これまで一般で用いられた用語を使い回すことで心の働きを直感的に理解しやすくすることが考えられていたのかもしれません。一方で、これが混乱をうむもとにもなっており、厳密に定義を行った心理学の構成概念としての言葉が、そのまま別の意味として一般に用いられることで混乱や誤用が起きやすくなるでしょう。この問題への対処としては、構成概念として定義を設定した上で言葉を使っていることを伝えていくのが良さそうです。さらに、学問や学問で得られた知見が社会に浸透・普及するためには、学問領域ではしばしば言葉に定義が設定されていると理解することが重要であると思います。