pythonのclassを使って、1農家の生産行動と1消費者の消費行動をざっくりシミュレーションしてみる①　～条件を説明する回～

宜しくお願いします。
pythonもシミュレーションも本当に初心者なので、ちょっと緊張してます、、。
今回アップした「pythonのclassを使って……①」は、条件設定や背景の説明だけなので、コードを公開していません。
結果だけ見たい人は次の[pythonのclassを使って……②](https://qiita.com/kuru_kirino/items/dc2a5162485da6227300)へスキップしていただければ幸いです。


## この取り組みの学術的背景
Agricultural Household Model関連の論文のTaylor(2005)、Dyer(2006)、Janvry(1991)に出会い、シミュレーションに興味を持ちました。
そこで、僕も素人ながらpythonで自前のシミュレーションを作ってみることにしました！
上記3論文の内容を反映した村、もしくは村々をシミュレートするプログラムを作りたいです。

一流の研究者の人たちは、SAMやCGEという経済モデルを積み重ねたモデル？で分析するようです。
おそらく、上記のモデル？を使うと、最適解が「計算」されるんだと思います。また、GAMSというソフトを使うと割と簡単にそれが行えるみたいです。
一方、僕はGAMSを買う覚悟も金もないし、後々2Dのゲームみたいなやつを作りたいので、pythonのclassを使いました。
また、最適解を得る際、ランダムに選択変数を選び、目的関数を最も大きくする最良解的な組み合わせを見つける手法を用いました。僕の解釈が正しいなら、このやり方を用いると、最適解が「計算」されず、無数にくじ引きを行った中で一番ましな解が得られます。
一応、イメージはマルチエージェントシミュレーションです。
ただ、今回作ったこれがマルチエージェントなのかどうかは不明。

※以下、上記3論文をざっくり説明しました。
Janvry(1991)では、農家の生産に関わるパラメータが同じでも、取引に関連して発生する費用が違うと、価格変化に対する農家の反応が違うということが説明されました。
次に、Taylor(2005)とDyer(2006)では、価格変化や補助金支給のインパクトが特定の農家だけに伝わると、その農家の使う生産要素価格が変化することで、間接的にその他の農家に伝播していくことが説明されました。




## 今回やりたいこと
作った後に指導教員の先生に見せたところ、
いくつかの指摘の後、「自給農家の生産・消費行動みたいだ」とのコメントを頂いたので、
そうすれば良かったと後々公開しましたが、ひとまず今回は以下の内容でプログラムを構築しました。

①農家と消費者が1人ずつこの世界に存在する。
②生産物はAとBの2種類ある。また、農家は農外労働にも従事する。
③Aは穀物、Bは果物（をイメージ）。
④農家は、総生産額と農外賃金の和を最大化するようにAとBを作り、消費者は、効用を最大化するようにAとBを消費する。
⑤たくさん消費された生産物は価格が上昇して、あまり消費されなかった生産物は価格が低下する。


## 農家と消費者の行動モデル
一応、保険をかけておきますが、
僕は元々農学部出身で、ミクロ経済学はほとんど独学です。表現が間違ってるかもしれません。
その場合はごめんなさい。

### 農家と消費者の関係性
今回想定する状況では、農家は農産物を生産するだけの工場、消費者は生産された農産物を消費するだけの人です。
この世界にこの2人以外の人は存在せず、また他の世界の人たちとの取引もありません。したがって、この2人の取引状況によって、農産物価格が変化します。
また、一度作って消費されなかったAとBは次期に持ち越される設定にしました。


### 農家行動
ここで想定した農家は、農産物生産工場的なものであり、消費行動を行いません。また、投入する生産要素は自家保有する労働力（L）と、自家保有するその他の生産要素（K：トラクターや土地）の2つだけであり、生産要素市場へのアクセスはありません。
また、この農家は農外労働も行います。
以上から、この農家は総生産額+農外収入（利潤と言える？）を最大化するようにAとBに生産要素を配分します。上記の状態を表した数式が以下です。

```math
\Pi = p_A*Q_A+p_B*Q_B+w*L_n...(1) \\ Q_A = k*L_A^\alpha *K_A^{1-\alpha}...(2) \\ Q_B = L_B^\beta *K_B^{1-\beta}...(3) \\ \bar{L} = L_A+L_B+L_n...(4) \\ \bar{K} = K_A+K_B...(5)
```
$\Pi$:  総生産額（利潤と言える？）
$p_A, p_B$: 農産物AとBの価格（生産者価格＝消費者価格）
$w$: 賃金
$Q_A, Q_B$: 農産物AとBの生産量。生産関数の関数型はとりあえずコブ＝ダグラス
$L_A, L_B, L_n$: A（$L_A$）、B（$L_B$）、農外労働（$L_n$）に配分した労働力
$K_A, K_B$: AとBに配分したその他の生産要素投入量
$\bar{L}, \bar{K}$: 労働力とその他生産要素の自家保有量、それぞれの生産要素の使用上限
$\alpha, \beta$: 生産物AとBにおける労働とその他生産要素の分配率（分配率の和は1：収穫一定）
$k$: Aは穀物なので、果物のBよりも量的にたくさん作れることを表現する係数（>1）


### 消費者行動
ここで考える消費者に農家は含まれません。
この消費者は、自分の効用（満足感）が最大になるようにAとBを消費します。
制約は、①予算制約、②今期供給量+前期余り＞今期消費量、③満腹制約

```math
U = c_A^\gamma+c_B^{1-\gamma}...(1) \\ I_t = I_{t-1} + i - C_{t-1} > C_t = p_A*c_A + p_B*c_B...(2:①予算制約) \\ Q_{A,t} + s_{A,t-1} > c_{A,t}...(3:②供給+余り＞消費) \\ Q_{B,t} + s_{B,t-1} > c_{B,t}...(4:②供給+余り＞消費) \\ c_A + c_B < Appe...(5:③満腹制約)
```
$U$:  効用（満足感）
$c_A, c_B$:　AとBの消費量。効用関数の関数型にもコブ＝ダグラスを用いた。
$I_t$:　t期の総予算
$C_t$:　t期の総支出、なお消費量c（小文字）とは違う
$i$:　その期の収入
$s_{t-1}$:　t-1期に余った分
$Appe$:　appetite（食欲）、すなわちどのくらい食べられるかを表す定数
$\gamma$:　AとBの消費が効用に与える影響力を示す乗数

### その他（価格形成に関する説明は要確認）
①次期の予算：$I_{t+1} =I_t + i - c_t$
②次期の持ち越し量：$s_{t+1} = s_t + Q_t - c_t$
③次期の価格決定方法（0<r<1）
　if $(Q_t + s_{t-1} - c_t)/(Q_t + s_{t-1}) < r$:
　    $p_{t+1} = 1.01 * p_t$

　else:
　    $p_{t+1} = 0.99 * p_t$

☆③（価格形成）についての説明
もしもある農産物の消費量が消費上限量ギリギリだった場合、その農産物は人気商品なので価格が上昇します。
一方、もしもある農産物が全然消費されなかった場合、その農産物は不人気商品となり、価格が低下します。
以上の設定だと、価格は農家と消費者の行動次第で変化します。
イメージでは、たくさん作りすぎた農産物の生産が止まり、足りない農産物の生産が促進される感じだったのですが、以下に挙げる欠点のせいでなんか微妙な感じになっちゃいました。

##反省点
価格の設定がダメダメでした。

以下、便宜的に
農家に生産額を支払い、農産物を一時的に貯蔵し、農産物の価格を変化させるものを「市場」と呼んでおきます。
本来なら消費量＝生産量で均衡価格が形成されるはずですが、
農家への支払いが消費者ではなく市場からなされ、それにもかかわらず消費者が支払った代金を農家も市場も受け取らない（無に消える）
という設定が悪さをしているように思えます。このせいで、たぶん出回る貨幣量の等式が成り立っていないのかもしれません。
上記のため、本来なら価格は一定の価格域に収束するはずですが、次回示す通りふらふらと彷徨います。

初めから、「穀物Aにおける自給的農家」の生産・消費行動を作るモデルを構築すればよかったか。
その場合、まず、農家がランダムに生産要素を配分してA（穀物）とB（果物）を生産します。Aは自家消費し、Bは市場で販売すると仮定します。
次に、消費サイドに目を向けて、消費財として新たにco(othersのo)を加えます。
このとき、自給的農家はBの販売と農外労働から得た所得を所与として、効用U=U(cA, co)を最大化するような組み合わせを検討します。
一方、自給的農家を考えるのではなくて、あくまで多数の消費者、生産者、小売業者が乱立している状況を再現したい場合、農産物の生産量だけではなく、貨幣の量も均衡させる必要が出てきます。
この場合、マクロ経済理論も持ち出さなくてはならないため、僕の知識を超えます。マクロ経済学は未勉強でして、、、。

ということで、[次回](https://qiita.com/kuru_kirino/items/dc2a5162485da6227300)は、①パラメータに定数を入れる、②作ったコードをお見せする、③結果を簡単に考察する、をお送りします。

今後とも何卒宜しくお願いいたします。

##参考文献
～論文～
[1]Alain de Janvry, Marcel Fafchamps and Elisabeth Sadoulet(1991) “Peasant household behavior with missing markets: some paradoxes explained” Economic Journal. Vol.101, pp.1400-1417.
[2]George A. Dyer, Steve Boucher, and J. Edward Taylor(2006) “Subsistence response to market shocks” American journal of agricultural economics. Vol. 88, pp. 279-291.
[3]J.Edward Taylor, George A. Dyer, Antonio Yu'nez-Naude(2005) "Disaggregated Rural Economywide Models for Policy Analysis" World Development. vol. 33, pp. 1671-1688

～テキストブック～
[1]小高知宏（2018）：『Pythonによる数値計算とシミュレーション』, オーム社
[2]Jake VanderPlas(2016) "Python Data Science Handbook: Essential Tools for Working with Data", O'Reilly Media