目的
由易到难,对mimic-iv的查询进行实际操作,体现先前文章中提到的mimic-iv数据查询的规律。
数据分析计划
死亡,是重症患者最重要的结局指标,在MIMIC数据库中收录了院内死亡的数据,以及进出ICU的时间(和进出医院的时间),所以我们可以获得是否死亡,以及从入ICU(或入院)到死亡发生之间的时间,有了这两个指标,我们可以通过Cox单因素(参数和非参数)模型来观察ICU(和医院)内死亡的趋势,以及某个变量(比如,性别和种族等)对死亡趋势的影响,以为后续的分析奠定基础。
数据的获取
我们需要数个变量,1. 从如入ICU(或入医院)到患者死亡的时间; 2. 患者是否发生院内死亡;3. 性别等;而这几个变量都存储在同一个表格中。
select * from `physionet-data.mimic_derived.icustay_detail`
体现先前文章中提到的几个原则:
- 原则1,重视mimic-derived模块,即首先从这个模块中取寻找需要的变量;
- 原则2,google cloud 上的mimic 数据库查询更方便。
- 原则3,查询之前了解变量以及变量存储的表格。
数据分析的方法和结果
- mimic-iv下载表格的信息
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 subject_id 76540 non-null int64
1 hadm_id 76540 non-null int64
2 stay_id 76540 non-null int64
3 gender 76540 non-null object
4 dod 13628 non-null object
5 admittime 76540 non-null object
6 dischtime 76540 non-null object
7 los_hospital 76540 non-null int64
8 admission_age 76540 non-null int64
9 ethnicity 76540 non-null object
10 hospital_expire_flag 76540 non-null int64
11 hospstay_seq 76540 non-null int64
12 first_hosp_stay 76540 non-null bool
13 icu_intime 76540 non-null object
14 icu_outtime 76540 non-null object
15 los_icu 76540 non-null float64
16 icustay_seq 76540 non-null int64
17 first_icu_stay 76540 non-null bool
-
ICU 患者K-M曲线的结果, K-M生存曲线是最常见的非参数模型, 后续我们还可以用参数模型进行类似的估计,这里用的是python包lifelines。
解读:y轴代表患者在某个时间点生存的概率(我觉得这里理解成比率,是不是更好理解一些),x轴代表时间,可以看到随着时间的增加,患者生存的概率逐渐降低(死亡的风险增加),100天的时候生存概率已经到达一个较低的水平。 -
探索ICU患者性别对于生存函数的影响,首先分组制作K-M曲线图,然后进行log-tank检验,都是用lifelines包完成。
log-tank 检验的结果:
test_statistic p -log2(p)
18.88 <0.005 16.13 -
参数模型Weibull的拟合ICU患者数据的结果
结果解读:因为时间数据中有值为0,所以直接用会有提示错误,可以将为0的值替换为小的正值,比如0.1即可。左图累计曲线的与K-M曲线类似,但是更平滑, 有图为Q-Q图,显示与中央线不贴合,代表数据不符合Weibull分布,所以用Weibull模型进行拟合不合适,需要探索其它的模型,在此不多重复操作。 -
以上操作在院内患者数据中的分析结果
test_statistic p -log2(p)
26.77 <0.005 22.05