« 前のひとこと | トップページ | 次のひとこと »

cocolog:95570542

「仮想合成人口個票の簡易な実装を用いた感染症シミュレーション (2025年8月版)」を Gemini CLI で Gemini 2.5 Pro さんに作ってもらった。突貫作業で、わりと精緻なシミュレーションにしたのにそれを活かせてないが、とりあえず公開しておく。 (JRF 6017)

JRF 2025年8月 5日 (火)

実装は↓に 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

……。

大目的。

以前、国勢調査などから私が作った↓を使った感染症シミュレーションを作る。

《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

« 前のひとこと | トップページ | 次のひとこと »