详解meta-analysis必备—森林图 (forestplot )

本文介绍森林图的Python matplotlib实现。

什么是森林图?

森林图,也被称为回归系数图(coefplots)、系数图(coefficient plots)、荟萃分析图(meta-analysis plots)、点须图(dot-and-whisker plots)、泡泡图(blobbograms)、边际图(margins plots)、回归图(regression plots)和绳梯图(ropeladder plots),在医学和健康科学领域被广泛使用。它通常用于展示来自不同研究的结果,尤其是作为荟萃分析(meta-analysis)的一部分。

森林图用于展示和比较多个研究或模型的效应估计及其不确定性,并通过水平线(即置信区间)显示估计值的可信度。每个标记代表一个效应值,标记中心对应估计的效应大小,水平线则表示该效应值的置信区间。较短的置信区间表示估计值较为精确,较长的置信区间则表明估计值的不确定性较大。


matplotlib制作森林图

利用Python matplotlib结合​​​​​​​forestplot ,​​​​​​​可轻松绘制森林。使用“3.2.13 forestplot数据集”,展示分组森林图​​​​​​​。

  • 数据准备
# 23.1_01
# -*- encoding: utf-8 -*-
'''
未经过允许禁止转载!
@Author  :   公众号: pythonic生物人
@Desc    :   23.1 分组森林图
'''
# 数据准备
forestplot = pd.read_csv("matplotlib_data/forestplot.csv").query(
    "model=='all' | model=='young kids'")

def format_value(val):
    try:
        val = float(val)
        if val < 0.001:
            return f"{val:.3f}***"
        elif val < 0.01:
            return f"{val:.3f}**"
        elif val < 0.05:
            return f"{val:.3f}*"
        else:
            return f"{val:.3f}"
    except ValueError:
        return str(val)


forestplot["pval"] = forestplot["pval"].astype(float).apply(
    format_value)  # 格式化p值列
forestplot["CI"] = forestplot.apply(
    lambda row: f"{row['coef']:.2f} ({row['ll']:.2f},{row['hl']:.2f})",
    axis=1)  # 格式化置信区间列
  • 绘图 
fp.mforestplot(
    dataframe=forestplot,  # 数据源,指定为包含绘图所需信息的 DataFrame
    estimate="coef",  # 用于绘制估计值(点估计)的列
    ll="ll",  # 用于绘制置信区间的下限列
    hl="hl",  # 用于绘制置信区间的上限列
    varlabel="label",  # 每个变量的标签列,显示在图表的左侧
    capitalize="capitalize",  # 用于分组标题的列
    model_col="model",  # 不同模型的分类列,用于区分多条线
    color_alt_rows=True,  # 交替改变行的背景颜色
    groupvar="group",  # 用于分组的列,根据此列合并相关变量
    table=True,  # 添加表格
    rightannote=["CI", "pval"],  # 右侧注释列,这里为置信区间和 P 值
    right_annoteheaders=["Est.(95% Conf. Int.)", "P-value"],  # 右侧注释列的标题
    xlabel="Coefficient (95% CI)",  # X 轴标签
    modellabels=["Have young kids", "Full sample"],  # 模型标签,用于图例中区分不同模型
    xticks=[-1200, -600, 0, 600],  # 自定义 X 轴刻度
    mcolor=['#b1283a', '#006a8e'],  # 不同模型的颜色列表
    **{
        "markersize": 30,  # 点的大小
        "offset": 0.40,  # 模型线条之间的垂直偏移
        "xlinestyle": "--",  # X 轴参考线线型
        "xlinecolor": "gray",  # X 轴参考线的颜色,灰色
    },
)

plt.show()

这个森林图的作用是展示不同模型中每个变量的估计值及其置信区间(图中的不同颜色和标签分别代表不同的模型,红色代表“Have young kids”模型,蓝色代表“Full sample”模型)。同时,图中还标注了相关的统计信息(例如,p值)。通过比较不同模型中变量的估计值和置信区间,研究人员可以了解各个模型下变量的稳定性和效应大小。

推荐阅读:

请查收,保姆级matplotlib教程:详细目录

请查收,保姆级seaborn教程:详细目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_21478261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值