R中survival或flexsurvreg模型对象去标识化方法咨询
问题1答复
你当前的操作已经清除了模型对象中大部分直接存储的原始数据字段,但仍存在遗漏,补充清理后即可完全避免原始数据泄露:
- 你列出的5个字段仅覆盖了
fitw$data下的部分存储位置,还需额外清空以下默认会留存原始数据的字段:fitw$model:建模用的model.frame,默认保存所有参与建模的原始变量fitw$y:生存分析响应变量的原始观测值存储位fitw$data$raw:部分flexsurv版本会在此留存原始数据副本
- 把上述字段也统一设为
NA后,模型对象中不存在任何可直接读取的单条原始观测值,也没有足够信息反向还原原始数据,可安全接收.RDS格式的处理后对象。
问题2答复
除了手动清理字段外,还有3种更简便且安全的方案可以共享不含原始数据的模型对象:
- 拟合时直接禁用原始数据存储:在调用
flexsurvreg()时添加model = FALSE, y = FALSE参数,拟合完成的对象本身就不会写入原始数据,无需事后手动清理,示例代码如下:
fitw <- flexsurvreg(formula = Surv(futime, fustat) ~ factor(rx) + age, data = ovarian, dist="weibull", model = FALSE, y = FALSE)
- 用
butcher包批量清理冗余数据:该包专门用于清除R模型对象中不必要的原始数据副本,清理逻辑覆盖绝大多数常见模型的存储位,比手动清理更不易遗漏,示例代码如下:
library(butcher) fitw_clean <- butcher(fitw)
- 仅导出分析结果共享:如果不需要完整模型对象做后续预测、重计算等操作,可以只提取系数、置信区间、拟合优度、生存曲线汇总值等纯统计结果共享,完全不涉及任何原始数据,安全性最高。
内容的提问来源于stack exchange,提问作者Frederick
相关产品推荐
相关产品推荐

