本サイトでは,日本心理学会第83回大会[TWS-004] チュートリアル・ワークショップ004 機械学習と心理学の接点 (片平担当分)で紹介した方法をRで実行するための情報を掲載しています。
本チュートリアルでは,大規模なパーソナリティの尺度データから4つのタイプ (類型)を見出した Gerlach et al. (2018) の方法を中心に解説します。
この論文では“state-of-the-art”なクラスタリング手法を使ったと書かれていますが,その分析法の要素技術はどれも古典的・標準的な機械学習・統計分析の手法です。
その要素技術である以下の3つをRのパッケージを使って実現する方法を紹介します。
Gerlachの分析は,上記の手法を組み合わせ,以下のような流れで行われます。
Gerlachらの分析法(ミニマム版)
上のGerlachらの分析法で作ったデータや関数などを使って,Gerlachらの分析を行うミニマムなコードを例示します。 とりあえず手持ちのデータで試してみたい,という方はここだけ試していただいてもよいかと思います (ただし結果の妥当性は保証できませんので,ご自身の責任でお願いします)。
実データ (Johnson-300) の解析3
GMMのために使っていたパッケージMClustの代わりに,Pythonの機械学習ライブラリscikit-learnのGMM関数を用います。 少なくともこのデータに関しては,scikit-learnの方が良い結果が得られるようです。
※実データ (Johnson-300) の解析2,3の計算はGerlachと同じようにやろうとすると かなり時間がかかります (ノートPCでは一晩では終わらないくらい)。 そのため,ここでは繰り返し回数などかなり抑えています。
本チュートリアルに限らず,私は新しいモデルやデータ分析手法を用いるときは, 既存のサンプルデータを使うのではなく, まずはモデルで仮定されているデータ生成過程に基づいて人工的なデータを生成してみて,そのデータを分析してみる,という方法をとっています。
その方が,正解が分かっている分,推定結果の評価もしやすいですし, モデルの仮定と真のデータ生成過程にミスマッチがあるときに何が起きるか, どのくらいのサンプル数があれば安定した結果が得られるか,などの 検討もできてよいと考えています (例えば Katahira (2016), Katahira (2018), Toyama et al. (2019))など)。
Rのコードは,極力簡潔に,しかし多少冗長でも,他の言語を使用していてRにはあまり慣れていない方にも処理の流れが追いやすいように書きたいと思います。 例えば,apply系の関数を使うとfor文を使わず簡潔に書けることが多いのですが, Rに慣れていない人 (私自身そうですが…) にとっては流れがつかみにくくなると思います。そのため,特に基礎的なところではapply系の関数の使用は極力抑えるようにしています。
このサイトの作成に用いたR Markdownファイルの一部はこちらからダウンロード可能です。