- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
最近想重建论文中的金融传染模型:Contagion in Financial Networks作者:普拉萨纳·盖。现在我陷入了第一张图:
(实际上是图3)。
我使用了 Python 和 networkx
。
首先,构建具有 1000 个节点的 ER 网络,概率取决于我要模拟的平均度。例如,如果我想模拟平均度数为3,则生成ER网络的概率为3/(1000-1),其中1000是网络大小。
然后,对于每个节点,我找到有多少节点指向它并进行计数,以计算 AiIB(权重)。如果节点 1 有 3 个节点指向它,则这些边上的权重为 AiIB(论文中为 0.2)/3(邻居数量)。
为了模拟传染,首先随机选择一个节点来删除其所有 Assets 。那么如果负债超过资本缓冲(Ki,论文中的0.04),它就无法向其邻国偿还负债。对于那些接受了多家银行负债的银行,即使每个环节的权重小于Ki,如果这些负债之和超过Ki,仍被视为破产。这个模型就像疫情蔓延一样,新破产的银行会影响新一批银行,最终系统中不再有银行破产。
传染的定义是该网络中超过 5% 的银行破产(本例中为 50 家)。
为了绘制图形,每个平均度需要测试 100 次:
概率=发生传染的次数/模拟乘以100
程度=【发生传染的情况下】破产银行比例之和/发生传染的数量。
原始代码可在GitHub上获取。通过运行 er_100.py 你可以得到我的数据,如下所示:
如果您对代码有任何疑问,请告诉我。 (代码在具有 8 个 vCPU 的 GCP 上运行至少需要 1 小时...)
我还尝试了 60 个节点的网络,它看起来像:
它的形状与图1有点相似。但这仍然不好,而且小网络也不是我想要的。
我不知道我的代码有什么问题。在我看来,我到处都考虑过,应该会得到类似的结果。我什至开始质疑这篇论文的权威性……
如果您有任何想法,请帮助我。
最佳答案
这是一个“很难”回答的问题。
我仍然没有找到任何有关代码的线索。然后我用 R 重写代码并运行它,这是我得到的草稿图:
正如您现在所看到的,该图只是论文中的图。但算法和结构与我用Python编写的完全一样。
也许这个案例表明Python 无法做到。如果有人对这个问题感兴趣,想进一步了解Python和R之间的区别,这是一个很好的例子。我很乐意提供任何帮助。
顺便说一句,R 中的模型代码可在 GitHub 中找到。并且仍在更新中。
感谢那些花时间阅读我的描述的人。
更新:
我也不敢相信这一点,因为在我看来,代码正在执行计数和计算,这很简单。我每一步都打印出来并检查每个节点,从10个节点的小型网络到1000个节点的网络,日志文件达到了50G以上。一切看起来都很正常,而且数量(破产的)只是没有达到阈值。与 R 不同,结构完全相同,结果与论文相同
。
我真的不知道为什么,也不知道。
关于python - 金融传染(疫情蔓延)模型遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56969062/
我是一名优秀的程序员,十分优秀!