【心理学向け】面倒な統計解析・実験プログラミングどうする?R,Python,VBAなどの比較

こんにちは。

先日こんな内容のツイートがありました。

心理学の実験でプログラミングをしないといけないのですが,おススメの言語やソフトウェアはありますか?

 

確かに,私の専門分野でもプログラミングは重要ですし,統計解析も必要ですというわけで今回はどういうサービスが心理学向けにおススメなのか?を回答していきます。

 

本記事は心理学部の人など「プログラミングとか面倒!ムリ」という人向けに書いています。

 

f:id:husbird:20191109214345j:plain

 

プログラミングと心理学ってなんの関係があるの?

臨床系ではほとんど使う必要がないと思いますが,*1基礎系では「パソコン画面上に刺激(図とか)を提示してそれに対する反応を見る」というタイプの実験を行うことが良くあります。*2このときに必要なのがプログラミングです。

なお,実験だけでなく統計解析の際にもプログラミングスキルは必要な気がします。

 

プログラミング

プログラミングが大事なのはわかりますが,現実として4年間で卒業する人が多い心理学専攻ではいちいち学習している時間がありません。というわけで比較的楽に学習出来て知り合いでも多くの方が使っている言語とソフトウェアをまとめてみました。

Visual Stuidio(Visual Basic)

Microsoft社が作成,配布しているプログラミング言語、および開発環境です。他の開発言語同様に参考書が大量に市販されていますし、Microsoft社という大きな会社がサポートしているのでサポートが充実しています。

 

そして,Visual BasicにはExcelを効率化するVBAマクロと開発言語が共通している*3というメリットがあります。

私もプログラミングの入門はVBAマクロから入りましたが。「業務効率化されてる!すごい!」という感覚を味わうことができるためおススメです。

私の場合は、データ解析の前処理をVBAマクロを用いて効率化しています。たぶん90%くらいの時間を節約していると思います...

一つ残念なのは、有料だということ。大学によってはアカデミックパッケージで研究室が経費負担してくれているところもありますが、卒業後は使えないのが痛い...

なお,VBAマクロは無料で利用することができます。

Python

今をときめくプログラミング言語。アプリケーション作成から機械学習まで幅広く利用可能な汎用性が強みです。もちろん参考書もたくさんあります。

開発環境のJupyter Notebookを含め無料で利用可能です。

その高い汎用性とデータサイエンスへの強みがあることから,機械学習エンジニアにはほぼ必須になっている言語でもあります。

就活時のプログラミングスキルでも聞かれたので,プログラミングをやる以上多少はできないと就活でも難しいのかも...

Psychopy

Pythonの言語を使って心理学の実験を作るためのソフトウェアです。実験作成ソフトはたぶん他にもありますが、大きな特徴が2つあります。

  • 無料である
  • GUI*4なのでプログラミングをしなくても実験作成可能
  • 裏でPythonを直接書くことでさらに細かい操作が可能

特にプログラミングをしなくても実験作成ができるのは大きな特徴です。完全無料なので企業に就職後もこのソフトで実験を作ることができます。ただ、知名度が低いようで自社で使っている人を見たことがないですが...

まだまだ参考書は少ないですが、こちらのサイトがPsychopyによる心理学実験の方法について解説してくれています。

 
私の大学だけでなく、心理系の学会で他大の方とお話をしていてもPsychopyはとても人気です。50%近いシェアがありそうな気がする...


なお、学生時代の研究室で参考書を探してみたところ心理学実験にPsychopyを使おう!という触れ込みで次のような本が見つかりました。解説に使われているのが現行では使われなくなりつつあるPython2系であることや,そもそもプログラミング初心者向けには解説が丁寧ではないなどの課題はあるものの、類書が全くないため紹介します。詳しくはamazonのリンク先でご覧ください。

 

統計処理

心理学では大量にデータを収集するのですが,そのときには当然統計処理が必須。分析の前には外れ値や欠損値といった,使いにくいデータを適切に排除する必要があるのですが,この前処理は結構面倒くさいです。

ここでは前処理から実際の分析までやってくれる方法を解説してみました。

VBAマクロ(Excelによる前処理)

Microsoft系のプログラミングサービスです。分析のための前処理はRやPythonでもできるのですが,これらのサービスにはない特徴があります。
 
具体的には,面倒なプログラミングが必要最低限!ということです。RやPythonは開発環境の整備から始まり、習得にそこそこ時間のかかるプログラミングが必須です。RではRコマンダー(Rcmdrのパッケージ)を導入することでプログラミングを回避することもできますが、率直に言って使い勝手があまり良くないです。

もちろんExcelのVBAマクロはプログラミングが必須ですが、RやPythonに比べて少ないプログラミングでそれなりに便利な解析ができます*5

またExcelはGUIなので,プログラミングによる処理の結果をみて「あ,失敗した...」と思ったら適切な数値や計算式に修正することができます。


データの捏造は絶対にしてはいけませんが...
 
実際のところ、どういう風にコードを書いていけばいいのか?についてはこちらの本を参考にしてください。私も購入しましたが,とても分かりやすい本でした。繰り返し構文などの基本的なものはもちろん,ピボットテーブルの作成など 中級者向けの内容もあります。

R

フリーソフトなのが最大の強み,Rの開発環境であるR Studioも無料です。また参考書もたくさんありますし,その中には心理学専攻向けの本もたくさんあります*6

プログラミングが必要な言語ですが、Rcmdr(Rコマンダー)というパッケージを使えばプログラミングをなるべく回避しつつ、統計解析ができます。

SPSSと異なりフリーソフトであるため最新の分析手法や特殊なパス解析なども多数実装されているのも大きな魅力です。

また,分散分析など心理学でよく使う分析であればパッケージ(例えば井関先生のANOVA君など)を用いることでプログラミングの負担を大幅にできます。

やや不便ですが、Rで前処理することも可能です。


SPSS

IBM系の統計分析ソフトウェアです。お値段が高いもののサポートが充実しているのが強み。また大学生や院生の場合,アカデミックパッケージによって無料で使うことも可能です*7

値段は高いですがそこそこ参考書もあります。私の出身校ではないですが、他の大学だとSPSSを用いた統計解析の授業があるところもあり、大学における学習環境が比較的恵まれているのも魅力。

プログラミングをすることなく解析が可能ですが、表示を改善したり詳細な操作が必要な時はシンタックスを使うことで可能になります。

HAD

清水先生が開発した統計分析ソフト(?)です。Excelをベースにしているため、無償で導入することが可能ですし、2要因ANOVAを始めとした心理学でよく使う統計手法は一通り揃えています。

個人的には結構おススメなサービスなので解説記事を書いてみました。詳しくはこちらの記事をどうぞ。

まずはとりあえず触ってみよう

今回いくつかソフトや言語を紹介してみましたが、まずは触ってみることが大事です。SPSSのように有料のものもありますが、Rのように無料で使えるモノも多いです。大学を卒業してからは教えてくれる人も減るので、学生時代の今のうちに使い始めてみてはどうでしょうか。

こういった手法を活用することは大学院に進学するにしても、企業に就職するにしても意外に役に立つスキルだと思います。

*1:そもそも臨床系の人の卒論は質問紙調査が多く,一部がケースというのが周囲の実情です

*2:学部生の研究ではこれが大半で,フィールド実験はなかなか難しい気がします

*3:ExcelだけでなくWord、Power Pointも操作可能です

*4:グラフィカルユーザインタフェースの略、コマンドではなくクリックなどで操作していきます

*5:もとから開発環境が整備されているのが魅力

*6:SPSSやPythonには心理学向けの本がないのが難点です

*7:卒業後は使えなくなります