做空间生存分析,最怕遇到什么?数据里缺了生存时间。很多新手拿到GeoJSON或者Shapefile,发现只有坐标,没有患者随访记录,直接傻眼。别慌,这问题我遇到过不止一次。今天不整虚的,直接上干货,告诉你geo数据集没有生存数据怎么办。
先说结论:数据不会凭空消失,只是换了地方或者需要推算。核心思路就三个:外部数据关联、代理变量估算、模型插补。
我去年接了个肿瘤地理分布的项目,客户给了一堆医院周边的病例点位,但死活不给生存时间。说是隐私保护,脱敏了。当时我也头大,毕竟生存分析没数据就是无米之炊。后来怎么搞的?我们用了第一种方法:外部数据关联。
我们去了当地卫健委,申请了公开的癌症登记年报。虽然没个体数据,但有各街道的五年生存率统计数据。我们将病例点位匹配到对应的街道网格,把街道级别的生存率作为先验概率,代入到个体的风险模型中。虽然精度不如个体数据,但对于大尺度的地理趋势分析,完全够用。这里要注意,匹配精度要够,别把城东的数据配到城西,误差会放大。
第二种情况,数据里有诊断日期,但没随访结束日期。这种情况,geo数据集没有生存数据怎么办?用代理变量估算。
有个做心血管疾病的团队,手里只有发病地点和发病时间。他们发现,对于急性心梗,从发病到入院的时间分布是相对稳定的。于是,他们收集了当地120急救中心的历史数据,拟合出“发病-入院”的时间分布函数。然后,用入院时间减去这个分布的中位数,反推发病时间,再结合已知的平均生存期,估算出个体的生存时长。这种方法有风险,必须做敏感性分析。我们当时做了十组不同分布假设,发现最终的空间热点区域变化不大,才敢下结论。
第三种,最棘手,啥都没有,只有坐标和简单的分类标签。这时候,geo数据集没有生存数据怎么办?用空间插补加机器学习。
我带的一个博士生,研究的是农村饮水安全与某种寄生虫病的关联。数据只有村庄坐标和感染率,没有个体生存数据。他用了随机森林模型,把海拔、坡度、距河流距离、土壤类型等地理变量作为特征,以感染率为目标变量训练模型。然后,对于未采样或数据缺失的村庄,利用模型预测其风险等级,再结合流行病学文献中的平均病程,构建一个虚拟的生存曲线。虽然这是“人造”数据,但在缺乏真实随访的情况下,这是唯一可行的量化手段。关键是,你要在论文里明确说明这是基于模型的估算,并给出置信区间,不能当成真实数据硬吹。
这里有个坑,千万别踩。有些朋友为了省事,直接给所有缺失的生存时间填个平均值,或者填0。这是大忌!空间数据有自相关性,随便填值会破坏空间结构,导致模型偏差巨大。我之前看过一个案例,有人把缺失的生存时间全部设为中位数,结果导致某些偏远地区的风险被严重低估,因为那些地区本来生存期就短,填高了就掩盖了真相。
总结一下,面对geo数据集没有生存数据怎么办,别急着换题。先看看能不能从公开统计年鉴、政府报告里扒出区域级别的生存率。其次,找找有没有相关的临床数据,用时间分布去反推。最后,如果实在没辙,就用地理变量做机器学习插补,但一定要透明化处理,说明估算过程。
数据缺失是常态,不是绝症。关键在于你怎么利用现有的地理信息去弥补。别怕麻烦,多查几份文献,多跑几次回归,总能找到平衡点。记住,真实的分析过程比完美的数据更重要。希望这三招能帮你在遇到类似困境时,少掉几根头发。