cocolog:89931312
Python による「ミクロ経済学の我流シミュレーション」の記事の「その2」を書いた。スコアを取るとき、利益を足し合わせるだけでなく、バランスを取るために分散を足すようにした。はっきり言ってやってることのレベル低くて申し訳ない…。 (JRF 4256)
JRF 2018年9月 9日 (日)
その2の記事は
《ミクロ経済学の我流シミュレーション その2 バランス戦略》
http://jrf.cocolog-nifty.com/society/2018/09/post.html
アーカイブは
《micro_economy.zip》
http://jrf.cocolog-nifty.com/archive/python/micro_economy.zip
JRF2018/9/98482
……。
詳しくは記事を読んでもらうとして、こちらではやろうとしてやらなかったことを延べたい。
それは、その2の記事の λ と μ について。
JRF2018/9/92526
まず、λ について。
<pre>
スコア1 = - mean([r_N, r_L, r_I]) + λ * variance([r_N, r_L, r_I])
</pre>
JRF2018/9/98781
という式だが、分散を足すのに、math.sqrt をかけたほうがいいのか、そのまま足したほうがいいのかでまず迷ったが、そのまま足す形の関数が『Strategic Asset Allocation - Portfolio Choice for Long-Term Investers』([cocolog:86393544])でも紹介されているので、この形にした。その本では必ずしも、最適化のスコアとして用いていたわけではなかったが…。
JRF2018/9/93607
で、λ の値は、最初、m = mean([r_N,r_L,R_I]) とすると、r_N = 3m/2, r_L = 3m/4, r_I = 3m/4 などとなるときに スコア1 = 0 とおいた値である 16/(3 * m) を λにすることを考えた(sympy で解を確認)。その r_N,r_L,r_I のところで偏微分すると具合も良かったから。
JRF2018/9/94538
ただ、r_* はマイナスになることもあるため、そのままでは使えない。そこで、大きい値の場合は、そのままだが、小さな値やマイナスだと丸める関数 softPlusE という関数を定義し、λ = 16 / (3 * softPlusE(0.01, mean([r_N, r_L, r_I]))) としてみた。
JRF2018/9/99631
ちなみに softPlusE の定義は、
<pre>
def softPlusE (M, m):
if m / M > 100:
return m
else:
return math.log(math.e + math.exp(m / M)) * M
</pre>
JRF2018/9/97272
だいたいいい感じなのだが、でも、r_* の値はだいたい 1.0 から -1.0 までの間なので、そんなこった関数ではなく定数で十分なのではないかといういい気がしてきた。そこで λ をだいたい 100.0 に決めうちしてしまうと、そのほうがなぜかシステムもクラッシュを起こしにくくなった。そこで λ = 100.0 に決めた。
JRF2018/9/90338
……。
μ については、スコア1が小数点 1 位か2位以下の問題のようなので、だいたいそれぐらいになるようにということで、まずは (労働需要 - 労働供給) ** 2 / mean([労働需要,労働供給]) にしてみた。
micro_economy_3*.py はそれでよかったが、micro_economy_4*.py だと、ときどき、(労働需要 - 労働供給) の絶対値が 100 を超える場合が出てくる。おかしい…っていうんで、係数をかけて大きくしたりしてみたがやっぱりおかしい。
JRF2018/9/91499
それで、試しに固定してみようと μ * (労働需要 - 労働供給) ** 2 にして μ = 0.1 にすると micro_economy_4*.py では割とうまくいった。しかし、今度は micro_economy_3*.py に戻るとうまくいかない。
μ = 0.01 にすると、micro_economy_3*.py でも micro_economy_4*.py でもそこそこよくなったので、そう決めうちすることにした。
JRF2018/9/95237
……。
…とまぁ、そんなところ。
「その2」の記事に今後の課題として「過去実績とのバランスをとる」ことを書いたが、他に、新規参入を全分野で一期一社のみとする代わりに、時間要素を取り入れ、一期の時間幅を変動させることも考えたりしている。しかし、その場合、退出して企業数が 0 になる場合の強制参入について、これまでと違う論理が必要になり、どう攻めればいいのか思いついていない。
JRF2018/9/98241
「その2」でも書いたが、もしかすると最適化はこんなテキトーな感じで使っていいものではないのかもしれない。そのあたり私は修行が足りな過ぎるな…と思う。そんな状態で記事を公開して、なんか恥ずかしく申し訳なく感じる…。
JRF2018/9/91886
トラックバック
他サイトなどからこの記事に自薦された関連記事(トラックバック)の一覧です。
Python を使った最適化の本と人工知能(AI)の本を読んだが、身につかなかった。私が普段使うマシンでは例の実行にすごく時間がかかることもあって、例を確かめなかった。本気でやるなら GPU (グラボ) を買うべきか。... 続きを読む
受信: 2018-12-30 11:48:08 (JST)
小島寛之『エコロジストのための経済学』を読んだ。「活動家」を経済学に引き込むのが目的らしく、シンプルな論理を用いていてわかりやすかった。 続きを読む
受信: 2018-12-30 11:48:24 (JST)
ミクロ経済学の我流シミュレーションの「その1」に関するひとことは [cocolog:89067097]。
その1の記事は
《ミクロ経済学の我流シミュレーション その1 基礎経済モデル》
http://jrf.cocolog-nifty.com/society/2018/03/post.html
JRF2018/9/96919