2020年6月27日土曜日

StataとRの比較ツイートから見える社会科学研究者の統計解析ソフトウェア選択事情

このエントリーをはてなブックマークに追加
Pocket

StataとRは、医療統計や社会科学でよく使われている統計解析ソフトウェアだ。ユーザー層が被った代替的な選択肢である。Rの方が歴史は数年古いが、Stataの方が研究や教育での普及が早かった。これらの分野のユーザー数は、今でもStataの方が多いであろう。しかし、近年、ライセンス料の問題なのかStataをRで代替するようになってきており、両者を比較した言及を時折見かける。

1. プログラマ視点から見るとRの圧勝

プログラミング言語としてのStataは柔軟性の低い旧世代のマクロ言語といった趣で、オブジェクト指向関数型言語にシンタックスシュガーを被せたSのクローンであるRの方が洗練されている。Stataは最近のバージョンまで同時に複数データファイルをメモリに保持できなかったなど「無いわ~」と言いたくなることが*1。データ操作やグラフィックスもRの人気パッケージ*2を使うと、かなりRに分がある。しかし、ユーザーの多くは、情報工学的な観点とは異なる視点で両者を評価している。

2. 多くの医療や社会科学の研究者の関心は別

医療や社会科学の研究者の多くは、統計学に道具以上の関心は無いし、プログラミングにはなお更だ。これらに時間をかけてはいられない。Rが洗練されていると言っても、洗練されたプログラミング言語は学習コストも大きめになる*3ので有難くないし、大学などで教わったStata以外のソフトウェアを強い必要も無く試したくは無い。そもそも統計解析と言っても、Stataで提供されるパッケージを教科書的に扱うことぐらいしかしない。そして、Stataがプロプライエタリな製品のためか、分析手法のパッケージ(≒ライブラリ)によるサポートが早いことが多い。

StataからRへの消極的移行から、パッケージ難民が発生することになる*4。Stataで簡単に出来ていた分析を、Rでも同様にパッケージに頼って行いたい。さらに、細部の実装の違いで結果が変わることがあるのだが、Stataが標準なのでStataと同じ分析結果を計算したい*5。少し前だと、RでStataと同じ固定効果モデルのクラスター頑健標準誤差を計算したい難民が出ていた。Rのplmパッケージの計算結果を微修正してlmtestパッケージを使って再計算するところから、lm_robustやestimatrなど完結したパッケージに行き着いて最終解決したようだ。

3. 用いる手法の隅々まで知っていることになっているものの

しかし、これ、意識が高い系の人から見ると、あってはならない現象だ。分析者は自分が用いている手法に通じていないといけない。パッケージが無いと計算が出来ないと言うのは、原理主義的には許されない。実装するのにかなりのコーディング量が必要で、労力的に非生産的と言うこともありえるが、上述の固定効果モデルのクラスター頑健標準誤差の場合、数式をつかった統計学的説明に沿って、基本的な行列の操作によってあっさり計算できる*6。線形回帰モデルを最尤法で計算する方が、圧倒的にややこしい。クラスター頑健標準誤差難民は、原理主義的には出てはいけない。

統計ユーザーの多くにとって教科書などの分析方法の説明とプログラミングが独立した別世界になっていて、両者をつなげて考えられないケース、そもそも建前と違って分析者が用いる手法の計算方法をよく理解していないケースが少なくない*7。実際、パッケージ利用禁止で教科書にある分析をする実習をしてもらっているところもあるようだが少数で*8、国内外の統計解析の実習では、お手軽なパッケージを呼び出す方法だけを教えていることが多い。つまり、よく分かっていない統計解析が振り回されていることは多いのだ。

4. 現実にはそう悪い事ではない

もちろん、原理主義的には困った状態なのだが、現実にはそう悪い事ではない。分析する前に挫折されたら、計量分析の利用が進まない。大抵の場合、用いる手法の特性ではなく具体的な計算方法になると、最適化アルゴリズムのような数値演算ノウハウは、分析結果の解釈には重要ではない。コーディングのミスや、分析の細部への誤解から、間違った分析結果が出るのを減らせるので、なるべくパッケージに頼る方が望ましい。ふわふわっとした分析手順の理解は望ましくはないが、そもそも確率論などへの理解も全員が深いと言うわけでもない*9

こういうわけで非難には当たらないと思うのだが、StataユーザーがRを使わないぶっちゃけた理由は、統計学の運用実態をよく表している。弾が出る原理が分からなくても、引き金がひければ銃は撃てる。

*1Stataは縁があっても他人任せにしてきたお気軽Rユーザーなので、体験からStataとRの比較はできないのだが、今のバージョンでも切り替え方式で「うっ」となるそうだ。

*2最近は人気パッケージをセットにしたパッケージTidyverseがある。

*3関連記事:Rが使えるフリをするための14の知識

*4操作性も問題になるようだが、R CommandarかRStudioで解決するようだ。

*5例えば、教科書的な固定効果モデルは切片項が計算されなかったりするのだが、Stataはデフォルトで計算してくる。

*6FE-IV練習用データ生成から、one-wayクラスター頑強標準誤差の計算まで - 餡子付゛録゛

*7一般化線形モデル(GLM)を使っていて尤度関数を書くことができる人でも、glmパッケージが推定に使っているスコア法を説明しろと言われたら詰まることは多いであろう。なお、くるくるブーメラン案件であるので、私がどうだか聞いてはいけない。

*8古めの統計解析の本だと、ベタベタとどう行列演算しているのか分かる言語で処理する例が書いてあったりする。

*9確率分布の取り扱いに慣れるために学習はお薦めだが(関連記事:軟弱な文系のための『ルベーグ積分から確率論』)、実際のところ、測度収束とa.e.収束の違いが分かるようになっても計量分析結果の解釈の精度が増すという事は無い。

0 コメント:

コメントを投稿