使用流行病学模型简析Web3叙事的传播机制(可视化动图+Python源代码)

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 np
import pandas as pd
from scipy.integrate import odeint
import 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']=False
plt.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模型解决方案的DataFrame
df = 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'列的数据类型改为datetime
df['datetime'] = pd.to_datetime(df['datetime'], unit='s')

from d3blocks import D3Blocks
d3 = 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官方链接:

官网

推特

官方NFT

 
Subscribe to DeBox Institute
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.