データサイエンティストのウマたん(@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を勉強する本としてはこちらがオススメです!
Rを学べる本については以下の記事でもまとめているので是非チェックしてみてください!
Python
Pythonを勉強する環境は多くありますが、まずPythonでできることをザっと学ぶのであれば僕が講師の以下のUdemyコースがオススメなので是非チェックしてみてください!
【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース
【オススメ度】 | |
---|---|
【講師】 | 僕自身!今なら購入時に「GT34R35G27DD」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください! |
【時間】 | 3.5時間 |
【レベル】 | 初級~中級 |
Pythonで出来ることのうち以下の5つを網羅して学んでいきます。
・データ集計・加工・描画
・機械学習を使ったモデル構築
・Webスクレイピング
・APIの利用
・Webアプリケーション開発
データ集計・加工・描画と機械学習モデル構築に関してはKaggleというデータ分析コンペティションのWalmartの小売データを扱いながら学んでいきます。
WebスクレイピングとAPI利用とWebアプリケーション開発に関しては、楽天の在庫情報を取得してSlackに自動で通知するWebアプリケーションを作成して学んでいきます。
Pythonで何ができるのか知りたい!という方には一番はじめにまず受けていただきたいコースです!
また、データサイエンスをより詳しく学びたいのであれば以下のUdemyコースもオススメです!
【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座
【オススメ度】 | |
---|---|
【講師】 | 僕自身!今なら購入時に「GT34R35G27DD」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください! |
【時間】 | 4時間 |
【レベル】 | 初級~中級 |
僕自身がUdemyの色んなコースを受けてみた中で、他のコースにはないこんなコースあったらいいなみたいなコースを作ってみました。
このコースは、なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように作成しています。
アニメーションを使った概要編とハンズオン形式で進む実践編に分かれており、概要編では体系的にデータ分析・機械学習導入の文脈でまとめています。
データサイエンスの基礎について基本のキから学びつつ、なるべく堅苦しい説明は抜きにしてイメージを掴んでいきます。
統計学・機械学習の基本的な内容を学び各手法の詳細についてもなるべく概念的に分かりやすく理解できるように学んでいきます。
そしてデータ分析の流れについては実務に即したCRISP-DMというフレームワークに沿って体系的に学んでいきます!
データ分析というと機械学習でモデル構築する部分にスポットがあたりがちですが、それ以外の工程についてもしっかりおさえておきましょう!
続いて実践編ではデータコンペの中古マンションのデータを題材にして、実際に手を動かしながら機械学習手法を実装していきます。
ここでは、探索的にデータを見ていきながらデータを加工し、その上でLight gbm という機械学習手法を使ってモデル構築までおこなっていきます。
是非興味のある方は受講してみてください!
ただUdemyは良くも悪くも自分の完全独学なので、モチベーション続かないなーという人はプログラミングスクールに通うのがオススメ!
色々プログラミングスクールはありますが、Pythonやデータサイエンスを学ぶなら、圧倒的に当メディアが運営する「スタアカ(スタビジアカデミー)」がオススメです!
スタアカ(スタビジアカデミー)
公式サイト:https://toukei-lab.com/achademy/
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
他のプログラミングスクールと比較して圧倒的な価格の安さとカリキュラムの質の高さが売りです!
PythonはGoogleで調べると様々なリファレンスが出てくるので、調べながら手を動かしてみると近いが早いです。
ちなみに当サイト【スタビジ】では、Pythonを勉強するためのロードマップを以下の記事でまとめていますのでこちらも参考にしてみてください。
Stan
Stanは、なかなか体系的に勉強するのが難しいんです。
こちらの書籍が非常に分かりやすいのでオススメです!
Rをある程度理解できていればこの書籍を読むことでStanの実装もできるかと思います。
(2024/12/22 23:32:44時点 Amazon調べ-詳細)
Stanを勉強する上でのオススメ本は以下にまとめていますので良ければご覧ください!
また、Python×Stanで学びたいなら以下のUdemy講座がオススメ!
【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門
【オススメ度】 | |
---|---|
【講師】 | 企業の研究者・開発者 |
【時間】 | 11.5時間 |
【レベル】 | 中級~上級 |
Python×Stanで実装を行いながら、複雑な統計モデリングやベイズ統計学を学んでいきます。
僕自身、大学院時代ベイジアンだったのですがベイズ統計学って奥が深くて難しいくせに教材が少ないんですよー!!
基本的なベイズの知識から階層ベイズさらに状態空間モデルまで広範に学ぶことができます。
ベイズの領域で理解に苦しむMCMCの分野も概念とPythonでの実装を同時に行ってくれるので非常に分かりやすい!
なかなかPython×Stanが学べる教材ないので、なんならこれくらいしかないです。Stanが学べる教材って本当に貴重なんですよー!
SQL
SQLは分析屋だけでなくデータベース屋さんなども使用する言語で、幅広く使われています。
そのためリファレンスが豊富で、ネットで調べるだけで様々な情報にアクセスすることが可能!
記法も複雑ではなく、習得しやすいので是非早めに学習しておきましょう!
個人的には以下の書籍が分かりやすく練習問題も豊富でオススメです!
(2024/12/22 13:03:53時点 Amazon調べ-詳細)
これ1冊やれば、後は実践で大丈夫かなーという感じです。
先ほど紹介した当メディア運営の「スタアカ(スタビジアカデミー)」では、「SQLをしっかり学ぶコース」も存在するので是非チェックしてみてください!
GoogleのBigQueryというサービスを使って実データ分析していきます!
以下の記事でSQLのおすすめ勉強法についてまとめています!
まとめ
本記事では、ソフトウェアとプログラミング言語の違い、プログラミング言語(R/Python/Stan/SQL)の違いと勉強法についてまとめました!
もし現在SPSSなどのツールを使っていて、限界を感じているもしくは費用が高いと感じている人は、是非プログラミング言語を使ってみてください!
しかしプログラミングは勉強方法が分かっても勉強を続けるのは忍耐力がいります。
こちらの記事でプログラミング学習に挫折しない方法をまとめていますので良ければご覧ください!
少しでも参考になれば幸いです。
プログラミングと合わせて統計学や機械学習の理論も学んでおくことをオススメします!
以下の記事で勉強法についてもまとめていますので合わせてチェックしてみてください!