現在消費財メーカーでデータサイエンティストをやっているウマたん(@statistics1012)です。
統計解析を行う上で必要なプログラミングのスキル。
世の中にはプログラミング言語を使わずとも統計処理を扱えるソフトウェアが存在しますが、やはりそれらでは不十分なことも多いです。
統計処理ができるプログラミング言語はいくつかあってどれを使えばよいのか分かりづらい。
そこで!この記事では、統計処理を行う上で必要なプログラミング言語の特徴を比較しながら見ていきたいと思います。
目次
なぜソフトウェアでは不十分か

大学では、簡易的に統計処理を実装することのできるソフトウェアを使うことが多いです。
SPSSやSASなどが主に用いられていますが、これらのソフトウェアのどこが不十分なのでしょう?
僕の大学では学部時代Statworksというマイナーツールを使っていました。
説明のための分析に重きを置いている
これらのソフトウェアは、不確定なことを予測するというよりも現状の分析と要因の特定に重きを置いています。
そのため、現在主流となりつつある機械学習手法やディープラーニングなどに関しては弱い。
一般的な統計解析を行う分には問題ありませんが、少し高度な手法になると実装できないんです。
カスタマイズ・チューニングができない
これらのソフトウェアは基本的な解析は実行できますが、パラメータをチューニングしたり複雑なロジックで解析を行ったりするのには適していません。
データ解析を究極に行うためには機械学習のパラメータをチューニングしながら、そのデータに則した解析を行っていく必要があります。
そのためソフトウェアを使ってしまうと柔軟性がなく、一歩踏み込んだ解析ができません。
お金がかかる
これらのソフトウェア、そこそこお金がかかります。SPSSは月額1万ほど。
RやPythonは無料のオープンソースプログラミング言語ですので、それらに比べると高額なのが分かると思います。
ただ一方、グラフィックインターフェイスで誰でも簡単に操作できるので簡易的に実装でき解釈も容易。
RやPythonも一旦覚えてしまえばそれほど複雑ではないですが、やはりソフトウェアと比較すると敷居は高い。
ここは、データ解析に求める柔軟性と費用と相談して決めましょう。
統計解析に用いられるプログラミング言語

先ほどの説明を見てやっぱりソフトウェアでは不十分だ!と思った人は是非プログラミング言語を使ってみてください!
どのプログラミング言語も無料で使えて、柔軟性が高いです。
ソフトウェアで実現できなかった複雑なロジックを実装できます。それぞれの特徴を見ていきましょう!
R
統計解析と言えばR。大学の研究ではひたすらRを用いていました。
世界中の人々が日々パッケージを作って共有してくれているので、簡単なコードで様々なアルゴリズムを実装することができます。
もちろん自分で0からアルゴリズムを実装することもできますよー!
一般的にはプログラミング言語では変数宣言をしなくてはいけないのですが、Rでは変数宣言がいりません。非常に簡略的にコードを書くことが可能なんです。
また描画にも強い言語で、ggplot2というパッケージを用いれば簡単に見やすいグラフィックを表現することができます。
ただ、データ解析に特化しており開発言語ではないため、Rを使ってサービスを作ることはできません。
Python
最も現在熱い言語がPython。プログラミング言語別の年収でも常に上位です。
Rと同様にデータ解析に特化していて、かつ頻繁にパッケージが開発されているので様々なアルゴリズムが簡易的に実装可能です。
Pythonには存在するけどRには存在しないアルゴリズムもいくつかあるので、最先端のアルゴリズムを実装したいならPythonを使った方が無難なイメージがあります。
また、Pythonは多くのリファレンスがあるので分からないことがあってもネットで調べれば大抵解決します。Rはそれほどまとまったリファレンスがありません・・・
そしてRと最も大きく違う点は、開発言語として使えるか否か。
Pythonは開発言語としても使えるので、アルゴリズムを回してそのままサービスローンチまで一気通貫で利用できます。
Pythonで出来ることを以下にまとめています!

Stan
RやPythonほど有名ではないですが、非常にディープな解析を行えるのがStan。
複雑なデータになると、簡易的な回帰ではなく複雑な分布を想定したモデル構築が必要です。
分布のパラメータにさらに分布を想定して柔軟にモデル構築を行う階層ベイズという手法があるのですが、それを実装する上ではStanが必須になってきます。
SQL
データ分析の前手のデータ加工・集計・抽出に必要な言語!
SQLだけでも簡単な解析は可能ですが、解析自体はRやPythonに任せてしまった方がラクです!
とは言え、どんな状況でもまずはSQLが使えないとデータを分析・解析する前準備が整いません。
必ず習得しておくようにしましょう!

それぞれのプログラミング言語をどのように勉強するか

さて、それぞれのプログラミング言語の特徴が分かったところでそれらをどのように勉強していけばよいのでしょうか?
R
Rって意外と分からないことを調べてもネットに落ちていないことが多いんですよねー。
RtipsというサイトでRについて体系的にまとまっているのでそちらを参照すると良いでしょう。
また、RstudioというR用の統合開発環境が提供されており、非常に便利なので使ってみることをオススメします。
Rはプログラミング学習講座などでもなかなか扱われていない、手を動かしながらRtips等で調べて勉強していきましょう。
Rを勉強する本としてはこちらがオススメです!
Python
Pythonを勉強する環境は多くありますが、コーディングメインならPythonに特化したPyQが最もオススメ!

なかなかPythonに特化してここまで教えてくれるオンライン学習プラットフォームはありません。
PyQについては以下の記事で詳しくまとめています!

また、自分の学びたい範囲に合わせて買い切り型で学べるUdemyもオススメ!
Udemyは世界最大の教育プラットフォームで全部で15万種類ものコースがあるんです。
たくさんのコースがありますが、強いて言うなら包括的に学べる最強コスパの以下のコースがオススメ!
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

【オススメ度】 | |
---|---|
【講師】 | シリコンバレーのSplunkで働く現役エンジニア |
【時間】 | 28.5時間 |
【レベル】 | 初級~上級 |
シリコンバレーで働く現役のデータサイエンティストの酒井さんのコースです。
シリコンバレーで働いている現地の様子なども知れるので米国で働くことを夢見ている人必見のコースになります。
このコースは初歩の初歩から上級レベルまで幅広く網羅しているのが特徴です。
それもそのはずUdemyのコースとしては相当ボリューミーな28.5時間というコンテンツ量。
テンポよく話すのでそれで28.5時間は相当なコンテンツ量です。
チーム開発を進めていく上でのPython記述法の極意も学べるのである程度Pythonに知見がある方でも勉強になります。
大量にあるコースからPython特化のコースを比較していますのでぜひチェックしてみてください!

ただPyQもUdemyは良くも悪くも自分の完全独学なので、モチベーション続かないなーという人はプログラミングスクールに通うのがオススメ!
基本的にはオンライン学習コンテンツを進めていくものになりますが、現役エンジニアのメンターがついて分からないことは素早く対応してくれます。
オンラインスクールの中で僕はテックアカデミーを選びました。
テックアカデミーの体験記事をまとめているのでよければ読んでみてください!

無料体験も行っているのでとりあえず取り組んでみても良いでしょう!
PythonはGoogleで調べると様々なリファレンスが出てくるので、調べながら手を動かしてみると近いが早いです。
ちなみに当サイト【スタビジ】では、Pythonを勉強するためのロードマップを以下の記事でまとめていますのでこちらも参考にしてみてください。

Stan
Stanは、なかなか体系的に勉強するのが難しいんです。
こちらの書籍が非常に分かりやすいのでオススメです!
Rをある程度理解できていればこの書籍を読むことでStanの実装もできるかと思います。
(2021/01/19 00:54:37時点 Amazon調べ-詳細)
Stanを勉強する上でのオススメ本は以下にまとめていますので良ければご覧ください!

また、Python×Stanで学びたいなら以下のUdemy講座がオススメ!
【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門

【オススメ度】 | |
---|---|
【講師】 | 企業の研究者・開発者 |
【時間】 | 11.5時間 |
【レベル】 | 中級~上級 |
Python×Stanで実装を行いながら、複雑な統計モデリングやベイズ統計学を学んでいきます。
僕自身、大学院時代ベイジアンだったのですがベイズ統計学って奥が深くて難しいくせに教材が少ないんですよー!!
基本的なベイズの知識から階層ベイズさらに状態空間モデルまで広範に学ぶことができます。
ベイズの領域で理解に苦しむMCMCの分野も概念とPythonでの実装を同時に行ってくれるので非常に分かりやすい!
なかなかPython×Stanが学べる教材ないので、なんならこれくらいしかないです。Stanが学べる教材って本当に貴重なんですよー!
SQL
SQLは分析屋だけでなくデータベース屋さんなども使用する言語で、幅広く使われています。
そのためリファレンスが豊富で、ネットで調べるだけで様々な情報にアクセスすることが可能!
記法も複雑ではなく、習得しやすいので是非早めに学習しておきましょう!
個人的には以下の書籍が分かりやすく練習問題も豊富でオススメです!
(2021/01/19 01:39:22時点 Amazon調べ-詳細)
これ1冊やれば、後は実践で大丈夫かなーという感じです。
以下の記事でSQLのおすすめ勉強法についてまとめています!

まとめ
もし現在SPSSなどのツールを使っていて、限界を感じているもしくは費用が高いと感じている人は、是非プログラミング言語を使ってみてください!
しかしプログラミングは勉強方法が分かっても勉強を続けるのは忍耐力がいります。
こちらの記事でプログラミング学習に挫折しない方法をまとめていますので良ければご覧ください!

少しでも参考になれば幸いです。
プログラミングと合わせて統計学や機械学習の理論も学んでおくことをオススメします!
以下の記事で勉強法についてもまとめていますので合わせてチェックしてみてください!

