使用流行病学模型简析 Web3 叙事的传播机制(可视化动图 +Python 源代码)
DeBox研究院
2023-12-14 18:06
订阅此专栏
收藏此文章

DeBox 研究院 |作者:NingNing@EMC Labs | 撰稿日期:12 月 14 日

引言

坦率而言,我们 Web3 行业尚处于 Gatnar 新兴科技曲线的成长阶段。在这个阶段,叙事是驱动 Web3 项目原生 Token 二级市场价格上涨的核心因子之一。叙事经济学,成为 Crypto Fund 和 VC 机构研究 Web3 项目的一个重要分析框架。

但美中不足的是,之前 Web3 叙事分析框架主要以定性研究为主。本文将提供一种定量研究 Web3 叙事传播机制方法,帮助分析师和投资者对这一机制构建直观而准确的认知。

研究模拟

我们的定量研究方法,是基于流行病学经典的 SIR 模型分析 Web3 叙事的传播机制。

SIR 模型是流行病学中一个经典的数学模型,是最成功、最著名的传染病传播模型之一。

在 SIR 模型中,全体人口被划分成三类人群:

  • 易感人群(S):尚未被传染的人群,但缺乏免疫能力,与感染者接触后容易受到感染。

  • 感染人群(I):已经被感染并具有传播力的患者群体。

  • 康复人群(R):从感染中恢复并且取得免疫的人群。

这个模型不但可以帮助我们理解和预测传染病的传播过程,也可以帮助我们理解和预测 Web3 叙事的传播过程。

关于这点,读过《叙事经济学》的朋友们都懂的。

科普结束,下面我们开始真正的表演:

第一步:初始化条件。

易感人群(S)= 某 web3 叙事的潜在目标用户比例

感染人群(I)= 已相信某 web3 叙事的用户比例

康复人群(R)= 已脱敏某 web3 叙事的用户比例

beta = 相信某 web3 叙事的转化率

gamma = 脱敏某 web3 叙事的转化率

我们设定:S=0.9,I=0.1,R=0.0,beta=0.8,gamma=0.01

# 导入必要的库 import numpy as npimport pandas as pdfrom scipy.integrate import odeintimport matplotlib.pyplot as plt# SIR 模型的定义 def sir_model(y, t, beta, gamma):    S, I, R = y    dSdt = -beta * S * I    dIdt = beta * S * I - gamma * I    dRdt = gamma * I    return [dSdt, dIdt, dRdt]# 初始条件 S0 = 0.9  # 某 web3 叙事的潜在目标用户比例 I0 = 0.1  # 已相信某 web3 叙事的用户比例 R0 = 0.0  # 已脱敏某 web3 叙事的用户比例 beta = 0.8  # 相信某 web3 叙事的转化率 gamma = 0.01 # 脱敏某 web3 叙事的转化率

第二步:设置时间范围,生成 10000 个随机数,从 Scipy 库导入 SIR 模型,再传入我们的初始化参数处理数据。

# 时间向量 t = np.linspace(0, 100, 10000)# 解 SIR 模型 solution = odeint(sir_model, [S0, I0, R0], t, args=(beta, gamma))solution = np.array(solution)# 绘制结果 plt.figure(figsize=[12, 8])plt.figure(dpi=300)plt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=Falseplt.plot(t, solution[:, 0], label="某 web3 叙事的潜在目标用户比例")plt.plot(t, solution[:, 1], label="相信某 web3 叙事的用户比例")plt.plot(t, solution[:, 2], label="脱敏某 web3 叙事的用户比例")plt.grid()plt.legend()plt.xlabel("时间")plt.ylabel("比例")plt.title("Web3 叙事流行病学的 SIR 模型分析")plt.text(0.5, 0.2, 'NingNing@EMC Labs', fontsize=20, color='gray', ha='center', va='center', alpha=0.5, transform=plt.gca().transAxes)plt.show()

在以上的初始化条件下,某特定 Web3 叙事传播过程如下图所示。

这个可视化图还不够直观,无法动态展示某特定 Web3 叙事的传播过程。下面我们用代码实现移动气泡图效果,以更好的呈现某特定 Web3 叙事的传播过程。

第三步:重整数据,使用移动气泡图可视化 web3 叙事传播过程。

# 创建一个包含 SIR 模型解决方案的 DataFramedf = pd.DataFrame({    'Time': t,    'S': solution[:, 0],    'I': solution[:, 1],    'R': solution[:, 2]})df['sample_id'] = np.random.randint(1, 1000, df.shape[0])# 创建一个新列'state',state 类型有 S、R、I 三种# 'state'的分布符合 SIR 模型的输出结果 conditions = [    (df['S'] > df['I']) & (df['S'] > df['R']),    (df['I'] > df['S']) & (df['I'] > df['R']),    (df['R'] > df['S']) & (df['R'] > df['I'])]#choices = ['S', 'I', 'R']choices = ['潜在目标用户', '相信某 web3 叙事的用户', '脱敏某 web3 叙事的用户']df['state'] = np.select(conditions, choices, default='S')# 删除不需要的列 df = df.drop(['S', 'I', 'R'], axis=1)# 改变时间列名 df = df.rename(columns={'Time': 'datetime'})# 将'datetime'列的数据类型改为 datetimedf['datetime'] = pd.to_datetime(df['datetime'], unit='s')from d3blocks import D3Blocksd3 = D3Blocks()d3.movingbubbles(df, speed={"slow": 1000, "medium": 200, "fast": 10}, filepath='movingbubbles.html')

可视化结果见下图,在以上初始化条件下,~72% 的用户会选择长期相信某 web3 叙事,即加密行业常说的形成稳定“共识”

此外,我还测试了另外两组初始化条件:

第一组的 web3 叙事特性是高传播率、高脱敏率,初始化条件为:S=0.9,I=0.1,R=0.0,beta=0.8,gamma=0.2。

结论

可视化结果显示,仅 1%~3% 用户会选择长期相信这一组 web3 叙事。

第二组的 web3 叙事特性是中等传播率、低脱敏率,初始化条件为:S=0.9,I=0.1,R=0.0,beta=0.5,gamma=0.01。

可视化结果显示,会有 62%~76% 用户会选择长期相信这一组 web3 叙事。

最后总结一下:对于某特定的 Web3 叙事,如 RWA、L2、Web3 游戏、铭文等,我们可以观察和统计其叙事传播中的 beta 值和 gamma 值,预测其能否形成长期稳定的共识。

免责声明

以上所有的市场分析及内容仅供参考,不代表对任何人做为投资建议以及决策依据,请勿基于此报告进行任何投资决策,报告作者和 DeBox 研究院不对用户的投资结果负责。所涉及标的不作推荐,据此买卖,风险自负。

本⽂中涉及的某些陈述可能是作者对于未来预期的假设以及其他的前瞻性观点,⽽已知和未知的⻛险与不确定因素,可能导致实际结果、表现或事件与陈述中的观点和假设存在实质性差异,作者不以任何方式向用户作出不受损失或者取得最低收益的承诺。

DeBox 官方链接:

官网

https://debox.pro/

推特

https://twitter.com/DeBox_Social

官方 NFT

nft://1/0x58CFF419613c00a4828f774DF8c2cA134dea97ce/?showBuying=true&showMeta=true

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

DeBox研究院
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开