OptHub

都市シミュレーションを用いた経済施策問題

2021年 進化計算コンペの問題
都市シミュレーションを用いた経済施策問題

Abstract

新型コロナウイルス感染症の感染拡大は,緊急事態宣言や自粛により様々な産業に大きな経済的被害を生じさせています.また,その影響は均一ではなく,いわゆる非正規雇用者など一部の方に集中していることも報じられています.

国や地方自治体はこれらへの対応として,様々な経済支援施策を実施しています.これらの施策は,(a)給付の対象と(b)支給金額により特徴づけられます.例えば,2020年の「特別定額給付金」では,(a)を住民基本台帳に記録されている者全員,(b)を対象者1人につき10万円の給付として実施されました.この他,「低所得の子育て世帯に対する子育て世帯生活支援特別給付金」では,(a)を一定所得以下のひとり親世帯の児童,(b)を対象者1人につき5万円の給付として実施されました.

これらの施策は広い意味では家計の支援を目的としたものですが,税金を原資として配分することから,i)困窮状態の解消とii)適当な支給水準の両立が社会的な合意・受容のために必要であると言えます(多目的最適化).また,有効な施策を設計するためには,経済ショックの影響を事前に正確に予測することが必要になりますが,この正確な予測は不可能です(不確実性).このため,施策は様々なショックシナリオに対してその効果が頑健なものが望まれます(ロバスト性).

また,施策の設計に際しては内容の十分な検討が必要です.施策が結果的に有効であったとしても,非就業者の人をさしおいて一般労働者のみが支給対象となることは,社会的に受け入れられることは難しいと考えられます(支給対象の優先関係の存在).そして,このような検討のためには目的間のトレードオフ関係を正確に把握できることが要求の一つになります(パレートフロント近似の必要性).

以上から,本問題では,ある自治体における新型コロナウイルス感染症による経済ショックに対する給付金施策設計の最適化問題(不確実性下でのロバスト最適化問題)を扱います.


本問題のプログラムを公開しています.このプログラムをローカルで実行して試行錯誤することができます.
https://github.com/yskgt-sim/ec_2021

社会シミュレーションの概要

施策の設計評価にはシミュレーションを利用します.本問題のような経済を対象とするシミュレーションは,「社会シミュレーション」と総称されます.本問題では,家計の単位である「世帯」の経済状況の変化をシミュレーションします.

下の図はシミュレーションの概要を整理したものです.入力は,自治体の住民のデータである「仮想合成人口個票データ」,新型コロナウイルス感染症による住民の就業状況・収入への影響を表した「経済ショックシナリオ」,給付金の対象と支給金額からなる「経済支援施策」の3つです.これらのうち,「仮想合成人口個票データ」と「経済ショックシナリオ」は所与であり,「経済支援施策」のみが設計対象です.

シミュレーションの概要

これらの入力を受けて,シミュレータは次の計算を行います.経済ショックシナリオに基づいて,対象ごとに生じる失業と給与変動の人数が定まります(経済ショック規模決定).人数が決まった後,具体的に誰が失業・給与変動するかをランダムに選択して,失業や給与変動を発生させ,対象となる住民の属性値を更新します(失業・給与変動).最後に,経済支援施策に基づいて,対象となる住民に給付金を支払い,属性値を更新します(給付金の支給).

なお,シミュレーションの出力は,給付金の支給後の住民の経済状況に関するデータであり,このデータを用いて目的関数値を計算します(詳細は後述します).

仮想合成人口個票

仮想合成人口個票とは,日本の国勢調査等の公的統計から統計との誤差を最小化するようにして生成した仮想的な個票(住民一人ひとりのデータ)です.関西大学の村田忠彦研究室が中心となり開発が進められており,本問題のような社会シミュレーションのデータ基盤として,様々な研究で利用されています.本問題でも,現実の住民の様々なデータを入手することは不可能であることから,仮想合成人口個票データを利用します3 4.

仮想合成人口個票データは仮想的に合成されたものであり,その合成過程では確率的な振る舞いが組み込まれています.このことから,同程度の(十分に小さい)誤差を実現する仮想合成人口個票データのセットは複数存在し,現時点では10セット提供されています.ある特定のセットが「正しい」ものではないことから,社会シミュレーションを行う際には必ず複数セットを用いた分析を行うことが求められています(参照: 合成人口データ使用ルール).本シミュレーションではこのことを不確実性として捉え,準備した3セットに対する平均値で評価を行います.

下の表はシミュレーションで利用する属性を整理したものです.データは2015年時点の統計情報から合成されたものです.

属性 カラム名 説明
世帯ID household_id
家族類型I D family_type_id 平成22年度国勢調査以降の家族類型に準拠
世帯人数 member
住民ID person_id
年齢 age
世帯内役割ID role_household_type_id
収入* total_income 賃金構造基本統計調査に基づく月給換算
産業分類ID industry_type_id 日本標準産業分類 (平成25年) に基づく産業分類20分類
雇用形態ID* employment_type_id 非就業者, 一般労働者, 短時間労働者, 臨時労働者の別
企業規模ID* company_size_id 59人, 1099人, 100~999人, 1000人以上の別

*は以下の産業分類では空欄もしくは0 (A農業, B漁業, S公務, T分類不能の産業)

なお,各カラムの詳細は下の図のとおりです.仮想合成人口個票データに加えて,世帯IDごとに収入の総計を求め,世帯収入household_total_incomeを計算して,世帯の経済状況を評価します.

家族類型 A1A_1

family_type_id family_type
0 単独世帯
1 夫婦のみ世帯
2 夫婦と子供世帯
3 男親と子供
4 女親と子供
50 男親と両親 (夫の親)
60 夫婦とひとり親 (夫の親)
70 夫婦・子供と両親 (夫の親)
80 夫婦・子供とひとり親 (夫の親)

世帯内役割 A2A_2

role_household_type_id role_household_type
0 単独世帯 (男性)
1 単独世帯 (女性)
10 夫・男親
11 妻・女親
20 子供 (男性)
21 子供 (女性)
30 親 (男性)
31 親 (女性)

産業分類 A3A_3

industry_type_id industry_type
-1 非就業者
10 A 農業,林業
20 B 漁業
30 C 鉱業,採石業,砂利採取業
40 D 建設業
50 E 製造業
60 F 電気・ガス・熱供給・水道業
70 G 情報通信業
80 H 運輸業,郵便業
90 I 卸売業,小売業
100 J 金融業,保険業
110 K 不動産業,物品賃貸業
120 L 学術研究,専門・技術サービス業
130 M 宿泊業,飲食サービス業
140 N 生活関連サービス業,娯楽業
150 O 教育,学習支援業
160 P 医療,福祉
170 Q 複合サービス事業
180 R サービス業 (他に分類されないもの)
190 S 公務 (他に分類されるものを除く)
200 T 分類不能の産業

雇用形態 A4A_4

employment_type_id employment_type
-1 非就業者
10 一般労働者
20 短時間労働者
30 臨時労働者

企業規模 A5A_5

company_size_id company_size
-1 非就業者
5 5~9人
10 10~99人
100 100~999人
1000 1000人以上
経済ショックシナリオ

経済ショックの正確な予測は不可能であることから,3つのシナリオ(楽観的 optopt ,平均的 midmid ,悲観的 psmpsm )を想定します.経済ショックとして,i)失業の発生とii)給与変動の2種類のイベントにより,住民の属性値が更新されます.なお,これらのシナリオは現実のものではなく,仮想的なものである点に注意してください

i)失業の発生

失業の発生は次のように行われます.下の表中の p1p_1 の値はその行のindustry_type_id, employment_type_id, company_size_idに該当する住民の中で失業する割合を意味します.住民が失業したときには,属性値の中の,industry_type_id, employment_type_id, company_size_idを-1に更新し,total_incomeを0にします.

industry_type_id employment_type_id company_size_id 楽観的 p1p_1 平均的 p1p_1 悲観的 p1p_1
90 20 5, 10 0.040 0.050 0.060
90 30 5, 10 0.020 0.040 0.050
130 20 5, 10 0.200 0.250 0.275
130 30 5 0.100 0.150 0.175
130 30 10 0.100 0.150 0.150
140 20 5 0.075 0.100 0.125
140 20 10 0.075 0.100 0.100
140 30 5, 10 0.050 0.075 0.080
160 20 5 0.100 0.125 0.150
160 20 10 0.100 0.125 0.125
160 30 5 0.075 0.100 0.125
160 30 10 0.075 0.100 0.100
ii)給与変動

失業されていない方は,給与変動が生じる可能性があります.給与変動は下の表のindustry_type_idの産業に従事し,employment_type_idの雇用形態で働いている住民を対象として, p2p_2 の割合で変動が生じます.住民に給与変動が起きたときには,現在のtotal_incomeの値を0.5倍します.

industry_type_id employment_type_id 楽観的 p2p_2 平均的 p2p_2 悲観的 p2p_2
10--50, 80, 90, 110, 130--180 20, 30 0.4 0.5 0.55
経済支援施策

経済支援施策 xx は(a)給付の対象 QQ と(b)支給金額 mm で構成されます.
住民全員の集合を AA としたとき,家族類型,世帯内役割,産業分類,雇用形態,企業規模の条件で定義した部分集合を A1,A2,,A5A_1, A_2, \ldots , A_5 として定義します (AkAk=1,,5)(A_k \subseteq A| k = 1, \ldots, 5)
給付対象の住民の集合 QQ は各属性から定義される集合群 AiA_i の積集合として定義し,一律の金額(円) mm (m>0)(m \gt 0)QQ に給付します.以上より,

x=(Q,m), Q=k=15Akx = (Q, m),\ Q = \bigcap_{k=1}^{5}{A_k}

と定義します.給付対象の集合は,全体から AkA_k の観点でAND条件を設定したクエリ結果のイメージです.下の表は各属性の集合の説明です.例えば,ある産業に従事している全員を対象とする場合には, A1=A2=A4=A5=AA_1=A_2=A_4=A_5 = A として, A3={指定産業}A_3 = \{\text{指定産業}\} とします.また,単独世帯(男性)で短時間労働者を対象とする場合には, A1=A3=A5=AA_1=A_3=A_5 = A として, A2={単独世帯(男性)},A4={短時間労働者}A_2 = \{\text{単独世帯(男性)}\}, A_4 = \{\text{短時間労働者}\} とします.

対応集合 属性 種類 詳細説明
A1A_1 家族類型 9 単独世帯, 男親と子供, 女親と子供, 夫婦のみ, 夫婦と子供, 夫婦と両親 (夫の親), 夫婦とひとり親 (夫の親), 夫婦・子供と両親 (夫の親) , 夫婦・子供とひとり親 (夫の親)
A2A_2 世帯内役割 8 単独世帯 (男性), 単独世帯 (女性), 夫・男親, 妻・女親, 子供 (女性), 子供 (男性), 親 (男性), 親 (女性)
A3A_3 産業分類 20 日本標準産業分類による
A4A_4 雇用形態 4 非就業者, 一般労働者, 短時間労働者, 臨時労働者
A5A_5 企業規模 4 59人, 10人99人, 100人~999人, 1000人以上

経済支援施策には対象の制約条件が存在します.関係 a>ba \gt b は集合 aa が集合 bb に優先することを意味し,対応集合 AkA_kaa が含まれずに bb が含まれるときには制約を満たさないとします.設計された経済支援施策は下の表に整理したような制約を満たす必要があります.例えば A1A_1 を決める際には,「単独世帯」が最も優先され,次に「女親と子供」が優先され,その次に「男親と子供」がその他の集合に優先されます.このとき,「男親と子供」は含まれるが「単独世帯」が含まれない A1A_1 は実行不能です.また,関係上同じランクに位置する集合(例えば,短時間労働者と臨時労働者)は,同時に含まれる必要はなく, A4={非就業者, 短時間労働者},{非就業者, 臨時労働者},{非就業者, 短時間労働者, 臨時労働者}A_4 = \{\text{非就業者, 短時間労働者}\}, \{\text{非就業者, 臨時労働者}\}, \{\text{非就業者, 短時間労働者, 臨時労働者}\} のいずれも実行可能です.しかしながら,例えば A4={非就業者, 短時間労働者, 一般労働者}A_4 = \{\text{非就業者, 短時間労働者, 一般労働者}\} は実行不能であることに注意してください.

対応集合 属性 優先関係(制約条件)
A1A_1 家族類型 単独世帯 >\gt 女親と子供 >\gt 男親と子供 >\gt その他
A2A_2 世帯内役割 単独世帯(男性),単独世帯(女性) >\gt その他
A3A_3 産業分類 非就業者 >\gt その他
A4A_4 雇用形態 非就業者 >\gt 短時間労働者,臨時労働者 >\gt 一般労働者
A5A_5 企業規模 非就業者 >\gt 5〜9人 >\gt 1099人 >\gt 100999人 >\gt 1000人以上

このとき,上記の制約から給付金を支給する際には,すくなくとも各対応集合の優先関係の最上位に位置する集合が含まれる必要があることに注意してください.

また,支給金額の総額にも制約があります(予算の存在).全人口に対して,20,000円ずつ支払う規模の総支給額に抑える必要があります.すなわち, |\cdot| を集合の要素数としたときに,

Q×mA×20,000|Q| \times m \le |A| \times 20,000

を満たせば実行可能です.

シミュレーション

シミュレーションの出力は,設計変数である経済支援施策 x=(Q,m)x = (Q, m) ,経済ショックシナリオ s{opt,mid,psm}s \in \{ opt, mid, psm \} ,都市 c{那覇市, 函館市}c \in \{\text{那覇市, 函館市}\}ii 番目の仮想合成人口セット Pi[c]P_i[c] ,そして失業・給与変動時に用いる乱数シード値 rRr \in R を与えることで,一意に定まります.

すなわち,シミュレーションモデル MM の実行結果 ZZ

Z=M(xs,Pi[c],r)Z = M(x|s, P_i[c], r)

にて定まり, ZZ を用いて, F1,F2F_1, F_2 を計算します.本問題ではシミュレーション出力 ZZ は,後述する F1,F2F_1, F_2 の計算に必要となる

Z={HN=n,HN=n,Ih,Ih}Z = \{H_{N=n}, H_{N=n}^*, I_h, I_h^*\}

となります.

経済指標

経済ショックと経済支援施策の影響を評価するために2つの経済指標 F1,F2F_1, F_2 を考えます.

相対的貧困に該当する世帯を減らすことを目的とする F1F_1 は,世帯人数 NN に応じた相対的貧困の減少について対象人数による重み付き和として定義します.

F1(Z)=n=14(BnA×HN=nHN=n)F_1(Z) = \sum_{n=1}^4 \left(\frac{|B_n|}{|A|} \times \frac{H_{N=n}^*}{H_{N=n}}\right)

このとき, HN=nH_{N=n}経済ショック前の相対的貧困である世帯人数 ii の世帯数, HN=nH_{N=n}^*経済ショック後に経済支援施策による給付を実施した後の相対的貧困である世帯人数 nn の世帯数, BnB_n は世帯人数 nn である世帯の住人の集合を表します. |\cdot| は集合の要素数です.

なお,世帯人数ごとの相対的貧困の基準は下の表の値を利用します.世帯人数 nn は5人以上の世帯が少ないことをふまえ,最大4までを考慮することとしています.

世帯人数 世帯収入(円)
1 120,000
2 170,000
3 210,000
4 240,000

失業や収入減少があった世帯の収入を減少分だけ補償することを目的とする F2F_2 は,当初の世帯収入に占める支給による前後変動率として定義します.

F2(Z)=hHIhIhhHIhF_2(Z) = \frac{\sum_{h \in H}|I_h - I_h^*|}{\sum_{h \in H}I_h}

このとき, HH をすべての世帯の集合として, IhI_h経済ショック前の世帯 hh の世帯収入, IhI_h^*経済支援施策による給付後の世帯 hh の世帯収入, IhIh|I_h - I_h^*| は世帯収入の変化の絶対値を表します. H|H| は世帯数です.

これらの経済指標を3つの仮想人口,3つのシナリオ,3つの乱数シードについて平均をとったものを目的関数とします.

fj(xc,R)=127i=13s{opt,mid,psm}rRFj(M(xPi[c],s,r))(j=1,2)f_j(x|c,R) = \frac{1}{27} \sum_{i=1}^3 \sum_{s\in\{opt,mid,psm\}} \sum_{r \in R} F_j(M(x|P_i[c], s, r)) \quad (j=1,2)

問題定義

目的関数の添字集合 II ,都市 cc ,乱数シード集合 RR が与えられたとき,最適化問題は以下のように定義されます.

  • I={1}I=\{1\} のとき単目的最適化問題 minimize f1(xc,R)\text{minimize } f_1(x|c,R)
  • I={2}I=\{2\} のとき単目的最適化問題 minimize f2(xc,R)\text{minimize } f_2(x|c,R)
  • I={1,2}I=\{1,2\} のとき多目的最適化問題 minimize (f1(xc,R),f2(xc,R))\text{minimize } (f_1(x|c,R), f_2(x|c,R))

なお,制約条件は前述のとおりです.

計算時間の目安

解1つあたり30秒~1分.


参考文献

  1. Y. Jin and J. Branke (2005) Evolutionary Optimization in Uncertain Environments ― A Survey, IEEE Transactions on Evolutionary Computation, Vol. 9, No. 3, pp. 303-317.
  2. P. Rakshit, A. Konar, S. Das (2017) Noisy Evolutionary Optimization Algorithms ― A Comprehensive Survey, Swarm and Evolutionary Computation, Vol. 33, pp. 18-45.
  3. 杉浦翔,村田忠彦,原田拓弥 (2019) 賃金構造基本統計調査に基づく合成世帯集団の労働者への所得の割当て,システム制御情報学会論文誌,Vol. 32, No. 2, pp. 69-78.
  4. 関西大学 村田研究室 合成人口データ提供,http://www.res.kutc.kansai-u.ac.jp/~murata/rsss-distribution/

Problem Owner

jpnsec

jpnsec

ID

synpop

GitHub

docker_icon

Docker

opthub/problem-synpop:latest