Skip to content

Instantly share code, notes, and snippets.

@kenjisato
Last active August 29, 2015 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenjisato/222469dcf992c92d1e84 to your computer and use it in GitHub Desktop.
Save kenjisato/222469dcf992c92d1e84 to your computer and use it in GitHub Desktop.
2015 経済動学 講義資料 (2015/04/06)
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python 速習 (その1)\n",
"\n",
"## インストール\n",
"\n",
"Python の Anacondaディストリビューション https://store.continuum.io/cshop/anaconda をダウンロードしてインストールしてください。\n",
"もしこれまでPythonを使ったことがない人は、Python 3 の最新版をインストールするようにしてください。まだ 2.7 という人は移行をおすすめします。\n",
"\n",
"MacやLinuxを使っている人は pyenv を使いましょう。詳細は検索してください。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 起動\n",
"\n",
"Windows ならコマンドプロンプトやPowerShellで、MacやLinuxの人はターミナルで\n",
"\n",
" ipython\n",
"\n",
"と打ち込んでエンター(リターン)を叩いてください。こんな感じに表示されれば成功です。\n",
"\n",
" Python 3.4.3 |Anaconda 2.1.0 (x86_64)| (default, Mar 6 2015, 12:07:41)\n",
" Type \"copyright\", \"credits\" or \"license\" for more information.\n",
" \n",
" IPython 3.1.0 -- An enhanced Interactive Python.\n",
" Anaconda is brought to you by Continuum Analytics.\n",
" Please check out: http://continuum.io/thanks and https://binstar.org\n",
" ? -> Introduction and overview of IPython's features.\n",
" %quickref -> Quick reference.\n",
" help -> Python's own help system.\n",
" object? -> Details about 'object', use 'object??' for extra details.\n",
"\n",
"\n",
"## 実験\n",
"\n",
"ためしに次のように打ち込んでください。`numpy`は数値計算のためのデータ構造や関数を定義しているライブラリです。\n",
"\n",
"シャープ記号 # のあとに続く文字はコメントです。打ち込む必要はありません。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`matplotlib.pyplot`は2次元の可視化のためのライブラリです。これらをインポートして使えるようにします。`as ...` と書いたのは、打ち込む文字数を減らすための別名を定義しています。"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = np.linspace(0, 2 * np.pi, 100)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.06346652, 0.12693304, 0.19039955, 0.25386607,\n",
" 0.31733259, 0.38079911, 0.44426563, 0.50773215, 0.57119866])"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x[:10] # ベクトルの最初の10個の要素"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 5.71198664, 5.77545316, 5.83891968, 5.9023862 , 5.96585272,\n",
" 6.02931923, 6.09278575, 6.15625227, 6.21971879, 6.28318531])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x[-10:] # ベクトルの最後の10個の要素"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"y = - x * np.sin(3 * x) + np.cos(20 * x)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1. , 0.28490926, -0.87085283, -0.88899087, 0.18169857,\n",
" 0.73949518, -0.11062812, -1.28972589, -1.25242151, -0.14996967])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y[:10]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6.06926187, 5.02364708, 4.81634628, 5.60475827, 5.85762683,\n",
" 4.51759288, 2.50795558, 1.46437126, 1.4740099 , 1. ])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y[-10:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108bb1cf8>]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108aa0dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"このノートでは図をinline表示にしているのですでに描画されていますが、普通は `plt.show()` を実行します。"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.show() "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## スクリプトファイルの作成\n",
"\n",
"まず、自分がどこのディレクトリ(フォルダ)にいるかを確認するために、`pwd` コマンドを IPython のシェルに打ち込んでみてください。`%` が付いているのはIPythonのマジックコマンドと呼ばれるものです。`%` は省略できますが省略しないように習慣づける方がいいでしょう。"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'/Users/kenjisato/Dropbox/Lectures/EconDynamics/Codes/2015-04-06'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%pwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"このディレクトリの中にどんなファイルがあるかを調べるには、`ls` コマンドを使います。ここでは, 同じディレクトリの中に、 `script.py` というPythonスクリプトファイルを置いています。"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"note.ipynb script.py\r\n"
]
}
],
"source": [
"%ls"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`script.py` の内容は次のようにしています。"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"import numpy as np\r\n",
"import matplotlib.pyplot as plt\r\n",
"\r\n",
"x = np.random.random(100)\r\n",
"noise = np.random.randn(100)\r\n",
"y = 2 * x + noise\r\n",
"\r\n",
"plt.plot(x, y, marker=\"o\", linestyle='')\r\n",
"plt.show()"
]
}
],
"source": [
"%cat script.py"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"これをIPython上で実行するには、`%run` を使います。"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108b7aeb8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%run script"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"IPython上で`%run`を実行すると、コード中の変数`independent`, `dependent`, `noise` にあとからアクセスできるので非常に便利です。"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.99725608, 0.17873433, -1.20905982, -0.01820169, 1.06901825,\n",
" 2.59307571, -0.74255854, -0.29851885, -1.4331102 , -0.3337276 ])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"noise[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"テキストエディタでスクリプトを書いて、IPythonで実行し、うまく行かなければIPython上でデータの中身を確認しながら修正していく、というのがPythonプログラミングの典型的な作業になります。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 瞬時効用関数の可視化"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"経済のファンダメンタルな要件を\n",
"\\begin{align}\n",
" f(k) = A k^\\alpha\\\\\n",
" U(c) = 1 - e^{-c}\n",
"\\end{align}\n",
"として、1部門モデルの既約型効用関数\n",
"\\begin{align}\n",
" u(x, y) = U(f(x) - y)\n",
"\\end{align}\n",
"をPythonで表現してみます。"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"A = 1.3"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"α = 0.3"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def f(k):\n",
" return A * k ** α"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def U(c):\n",
" return 1 - np.exp(-c)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def u(x, y):\n",
" return U(f(x) - y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$u$ は2変数関数なので可視化のための馴染みのある方法は無差別曲線(等高線)を引くことでしょう。Pythonでは次のようにやります。"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = np.linspace(0.0, 10.0, 100)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"y = np.linspace(0.0, f(10.0), 100)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X, Y = np.meshgrid(x, y)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108bfbbe0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"c = plt.contour(X, Y, u(X, Y), levels=np.linspace(0, u(10,0), 10), colors='k')\n",
"plt.clabel(c, inline=1, fontsize=10)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
import numpy as np
import matplotlib.pyplot as plt
x = np.random.random(100)
y = 2 * x + np.random.randn(100)
plt.plot(x, y, marker="o", linestyle='')
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment