17.广播模型

import matplotlib.pyplot as plt 
import matplotlib
matplotlib.rc("font",family='YouYuan')


"""
广播模型:

任何时候,总会有人患上了某种传染病、了解了特定信息或采取了一定的行动。我们将这些人称为感染者或知情者(用It表示),
*相关人群*中除了感染者或知情者之外的其余成员则是易感者(用St表示)。这些易感者可能会感染传染病、了解信息或采取行动。
相关人群的总人数 = 感染者或知情者人数 + 易感者人数的总和

下一个时期的知情者 = 上一个时期的知情者 + 广播概率 * 易感者

广播模型刻画了思想、谣言、信息或技术通过电视、广播、互联网等媒体进行的传播。大多数时事新闻都是通过广播形式传播的。
这个模型的目标是描述一个信息源传播信息的过程,可以是政府、企业或报纸。这个模型不适用于在人与人之间传播的传染病。
由于广播模型更适合描述思想和信息的传播,所以我们在这里说知情者的人数,而不说感染者的人数。

在给定时间段内,知情者人数等于前一期的知情者人数加上易感者听到信息的概率乘以易感者人数。按照惯例,初始人口全部由易感者组成。
要计算未来某期的知情者人数,只需要将知情者人数和易感者人数代入上述方程即可。由此得到的将是一个r形采用曲线。

想象一下:某个拥有100万居民的城市的市长宣布了一项新的税收政策。在他宣布之前,没有人知道这项政策。
假设某人在任何一天听到这个新闻的概率等于30%(即,Pbroad=0.3),那么第一天会有30万人听到这个新闻。
在第二天,剩下的70万人中有30%的人,即21万人会听到这个新闻。在每一个时期,知情者的人数都会增加,并且以一个递减的速度增加。
"""

# 相关人群 广播概率
N, P = 1000000, 0.3

# 累积知情者
I_sum = 0
I_sum_list = []

# 初始易感者
S = N

for day in range(30):
    I_sum += P * S
    S -= P * S
    I_sum_list.append(I_sum)


plt.title("广播模型产生的r形曲线")
plt.xlabel("时间:天")
plt.ylabel("知情者累积人数")
plt.plot(I_sum_list)

plt.show()


"""
用广播模型拟合销售数据

假设一家企业为练习太极拳的人推出了新设计的运动鞋,并在第一个星期就收到了20000双鞋的订单。
如果在第二个星期收到了16000双鞋的订单,那么我们可以大致估计出他们最终的总销售量,也就是相关人群的规模为100000。

假设相关人群数量为N,广播概率为P,则:

I1 = 20000 = P * N

I2 = 36000 = 20000 + P * (N - 20000)

解得:P = 0.2,N = 100000

I3 = 36000 + 0.2 * (N - 36000)
"""
原文地址:https://www.cnblogs.com/waterr/p/13948035.html