开始使用免费开始使用

为什么需要进行模拟?

在上一节课中,您使用 dia 的均值和协方差矩阵进行了多元正态分布的模拟。现在,您将基于模拟结果来回答一些关键问题!

您可能会问:既然我们已经有历史数据了,为什么还要做模拟?难道不能直接用数据本身来回答问题吗?

这个问题非常好。Monte Carlo 模拟基于概率分布建模,可以得到完整的概率分布供分析(大量样本),而不是受限于历史数据中有限的观测点数量。

例如,您可以问:在我们的模拟中,糖尿病患者 age 变量的第 0.1 分位是多少?对于历史数据 dia 本身,我们无法回答这个问题:因为它只有 442 条记录,无法计算到第一千分位的数值。相反,您可以利用 Monte Carlo 模拟的结果来回答,这正是您接下来要做的!

糖尿病数据集已作为 DataFrame dia 加载,且已为您导入以下库:将 pandas 导入为 pd,将 numpy 导入为 np,以及将 scipy.stats 导入为 st

本练习是课程的一部分

Python 中的蒙特卡洛模拟

查看课程

练习说明

  • 计算模拟结果中 tc 变量的第 0.1 分位(即最底部第 1,000 分位)。

交互式实操练习

通过完成这段示例代码来试试这个练习。

cov_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].cov()
mean_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].mean()

simulation_results = st.multivariate_normal.rvs(mean=mean_dia, size=10000, cov=cov_dia)

df_results = pd.DataFrame(simulation_results, columns=["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"])

# Calculate the 0.1st quantile of the tc variable
print(____)
编辑并运行代码