KUT経・マネ/プログラミング系授業
本講義でプログラミングを学ぶために用いる主な言語はPythonである。Rを理解している受講者にとって、Pythonの理解は比較的容易であるが、同時にPythonには誰もがつまずく「落とし穴」が多い。そこで本講義では、Rとの比較を通して、Pythonの特徴的な挙動に関する解説を行う。プログラミングスキルを向上させるためには、複数の言語の習得を通して、言語の設計における多様な理念に触れることが重要である。本講義であえて二つの言語を比較するのは、学習のスピードアップだけでなく、一つの言語の表面的な文法にとらわれない応用力を得ることが狙いである。
本講義のもう一つの狙いは、研究でのプログラミングの活用やAIに興味を持ち始めたばかりの学生に、汎用性に富んだPythonの世界を紹介することである。Pythonの最大の特徴は、機械学習、ウェブアプリケーション、スクレイピング、ゲーム開発、GIS(地理情報システム)など多様な分野で使われていることであり、データサイエンスに特化したRとは理念が大いに異なる。本講義では、データ分析と社会科学実験での活用を主に取り扱うが、可能な限り他の応用についても紹介する。
本講義での目標は、Pythonを用いて簡単なプログラムの作成、乱数シミュレーションや基本的なデータの操作、可視化、統計解析ができるだけでなく、OOPのコンセプトを理解し、otreeを用いて簡単な実験プログラムを作成できるようになることである。
教員が50分程度の解説を行い、その後学生が40分程度の演習に取り組む。
プログラムが動くとはどういうことか、プログラミング言語にはどのようなものがあるのか等、事前に押さえるべき必要最低限の事項を解説する。
本講義でプログラミングに用いるエディター(VS Code)の解説を行う。また、Pythonの特徴である仮想環境およびAnacondaの操作、環境設定について解説を行う。
アプリケーションやパッケージ作成の際に有用なGit/GitHubを用いたバージョン管理について解説する。
変数に値を代入するということが意味するところについて、Rとの比較を通して詳細な解説を行う。その際に、ランダムアクセスメモリ(RAM)について多少のイメージを養うことが必要である。
Pythonの最も基本的なデータ構造であるリストの操作について解説する。また、Rとの比較を通して、条件分岐やループ処理などの制御構文について学ぶ。
リスト以外の重要な組み込みデータ構造である文字列とタプル、そしてファイル入出力について解説する。
残った組み込みデータ構造である辞書と集合について解説する。
現代的なプログラミングでは、既存のものを再利用するのが普通である。再利用のための代表的な道具である関数とモジュール、そしてそれらにまつわる諸概念について学ぶ。
Pythonにおいて数値計算やデータ解析をするために最も重要なモジュールであるnumpyの挙動とそのメリットについて解説する。numpyを乱数シミュレーションや記述統計量の計算について学ぶ。numpyを使った科学技術計算ライブラリであるSciPyを用いて単回帰分析を実施する。
データ操作のためのモジュールとして標準的なpandasを使ってCSVデータを読み書きし、基本的な記述統計を計算する方法について学ぶ。さらにpandasに搭載されているグラフ機能とmatplotlibモジュールを用いてデータを可視化する。
単回帰と重回帰を例にとり、標準的な統計モデルを納めたstatsmodelsモジュールを紹介する。また、機械学習モジュールのscikit-learnについても軽く触れる。
大規模プロジェクトや実験プログラミングに必要なオブジェクト指向プログラミング(OOP)について学ぶ。クラス、メソッド、継承、ポリモルフィズムなど鍵となる概念について解説する。
Pythonで実験プログラムを作成するためのフレームワークであるotreeの解説を行う。簡単なサーベイのプログラムを作成する。
otreeを用いてワンショットゲームを作成する方法について学ぶ。
前回作成したワンショットゲームを発展させ、繰り返しゲームを作成する。また、実験の結果得られるデータの取り扱いについて解説する。最後に、これまで学んできた知識をどのように研究に活かせばよいか解説し、まとめとする。
第1~15回までの内容について筆記試験を課し、理解度を評価する。
紙媒体の書籍は大きくて重いので、講義には持参しなくてよい。ただし、自宅に所有していることを前提に講義を進める。Kindle版もあるのでそちらも検討すること。