cocolog:95570542
「仮想合成人口個票の簡易な実装を用いた感染症シミュレーション (2025年8月版)」を Gemini CLI で Gemini 2.5 Pro さんに作ってもらった。突貫作業で、わりと精緻なシミュレーションにしたのにそれを活かせてないが、とりあえず公開しておく。 (JRF 6017)
JRF 2025年8月 5日 (火)
……。
大目的。
以前、国勢調査などから私が作った↓を使った感染症シミュレーションを作る。
《JRF-2018/simple_synthetic_population: 仮想合成人口個票の簡易な実装》
https://github.com/JRF-2018/simple_synthetic_population
JRF2025/8/53535
……。
どういうシミュレーションにしたかったか?。
* simple_syntetic_population の Person や Family を拡張し、職業や所属する組織などをよい感じに設定する。時間経過でどの組織に参加しているかが変わる中で、ある感染症がどのように広がるかをシミュレーションする。
* 個人には、いくつかモードがあり、少なくともオンモードとオフモードがある。自己隔離中はオフモードになる。オンモードには生活史があり、それは組織移動にある。組織は組織人数(実構成員)と組織内感染度と全体感染度のパラメータを持つ。
JRF2025/8/52910
* 例えば、学校はクラスが最大30人とし、高い組織内感染度を持つ。また、全校に対する全体感染度を持つ。全校といっても全人口と接触するわけではないが、それは単純化して全人口と接触するとモデル化する。
* 1時間単位でシミュレーションする。大人の一例は満員電車に乗って通勤し、組織(会社)に属し、夜の街(組織内感染度低いが全体感染度高い)に行って家に帰る…とする。
* 大人男性と一部女性の組織の人数はポワソン分布でいいかな? リタイアした人と主婦は感染しにくい感じで。この辺、イイ感じにパラメータを設定する。
JRF2025/8/51138
* シミュレーション実行後、次の段階として CmdStanPy で SIR モデルとマッチングし、R0 や R(t) を計算する。
Gemini さんによってだいたいそのようなシミュレーションになりました。
JRF2025/8/56540
……。
今後の課題。
これだけ精緻なシミュレーションにしたのだから、もっといろんな適用範囲を見つけたい。大日康史&菅原民枝『パンデミック・シミュレーション - 感染症数理モデルの応用』([cocolog:95436730](2025年5月))によれば、初発者からの広がりにおいて、その初発者がどういう人物かによって広がり方が違い、対策として例えば抗ウィルス薬(タミフルなど)の予防によって封じ込めが行える…等のシミュレーションができ…たりするようなのですが、今後の課題としておきます。
JRF2025/8/56815
……。
ライセンス。
基本的に私が作ったのは仕様のみでプログラムは Gemini CLI で Gemini 2.5 Pro さんにお願いしました。私がやったのは .py としてできたファイルを .ipynb にしたぐらいです。それでも私にライセンスが発行できるなら、MIT License で。
JRF2025/8/56521
……。
……。
追記。
>組織は組織人数(実構成員)と組織内感染度と全体感染度のパラメータを持つ。
例えば、学校はクラスが最大30人とし、高い組織内感染度を持つ。また、全校に対する全体感染度を持つ。全校といっても全人口と接触するわけではないが、それは単純化して全人口と接触するとモデル化する。
<
…としたわけだが、ある組織内部をさらに(組織内)全体感染度的なものと小組織(コンパートメント)内感染度に分けることも考えることができるだろう。
JRF2025/8/175208
コンパートメントに分ける意義は、コンパートメントは接触するコンパートメントにも感染を広げない…ということである。ただし、全体感染度に寄与する方向からの感染の広がりはあるのだが。
すると、コンパートメントを非常に小さく分けると、ほとんど感染が広がらないとモデル化できることになるのか? それはおかしいだろう。それは元の大組織内感染度の数値と合わなくなる。
JRF2025/8/174885
この場合、(組織内)全体感染度をかなり上げる必要があるということだ。つまり、秘書などがコンパートメントをめぐることで、(組織内)全体感染度を上げると考えるしかない…ということになる。
それを避けるには、社長室のような重要なコンパートメントとは別に、タコ部屋のような多人数からなるコンパートメントを作り、そこでのコンパートメント内感染度が高いとしなければ、つじつまが合わない…となるだろう。
JRF2025/8/170267
逆に言えば、タコ部屋のような場所の感染度を下げることができれば、大組織内感染度は下がらなければおかしい。
これはおそらく全国という組織にも適用できて、組織内感染度の高い組織を集中して、感染度を下げることが有効だという結論になるのだろう。
Gemini さんによるとそれは「クラスター対策」としてすでに実現されている考え方と言えそうだという。
JRF2025/8/179989


実装は↓に infection_simulation.ipynb として置いてある。v0.2 や v0.1 のディレクトリには作るとき使った GEMINI.md も置いてあるのでご参考までに。
《JRF-2018/infection_simulation_202508: 仮想合成人口個票の簡易な実装を用いた感染症シミュレーション (2025年8月版)》
https://github.com/JRF-2018/infection_simulation_202508
基本的に↑を読んでいただきたいが、いちおう大目的と設計方針ぐらいはここに書いとくか…。
JRF2025/8/58807