← 方法工作台🌱 数据库🧭 逻辑地图下载 Markdown

🎲 蒙特卡洛模拟:让方法先在“知道答案的小世界”里练习

先分清三种任务

任务 每次重复什么 真正关注什么
方法学模拟 从已知机制生成一份新数据再估计 偏倚、覆盖率、I类错误、效能、失败率
概率敏感性分析 PSA 抽取一组不确定的模型参数 决策不确定性、增量净收益、CEAC
个体随机模拟 给定参数后模拟个体事件或路径 个体随机变异、资源利用、成本与健康

蒙特卡洛是一类随机数值计算方法,不等同于Markov模型。Markov是模型结构,蒙特卡洛可用来运行个体模型或传播其参数不确定性。可交叉阅读 Markov 与卫生经济学教程。

方法学模拟:ADEMP任务书

按 Morris、White与Crowther的教程 组织:目标A、数据生成D、估计目标E、待比较方法M、性能P。下列是可填写模板:

先跑小规模排错,再按精度需求确定重复次数。若覆盖率约0.95,B=2000时MCSE约0.0049;B=10000时约0.0022。这是模拟结果自身的数值不确定性,不是原研究效应的标准误。

R:两组均值差的完整教学实验

set.seed(20261023)
B <- 2000; n <- 100; truth <- 0.3
one <- function(){
  y0 <- rnorm(n,0,1); y1 <- rnorm(n,truth,1.5)
  z <- t.test(y1,y0) # Welch;估计方向为y1-y0
  c(est=mean(y1)-mean(y0),lo=z$conf.int[1],hi=z$conf.int[2],p=z$p.value)
}
ans <- t(replicate(B,one()))
err <- ans[,"est"]-truth
covered <- ans[,"lo"]<=truth & ans[,"hi"]>=truth
coverage <- mean(covered)
c(bias=mean(err),MCSE_bias=sd(ans[,"est"])/sqrt(B),
  RMSE=sqrt(mean(err^2)),coverage=coverage,
  MCSE_coverage=sqrt(coverage*(1-coverage)/B),
  power=mean(ans[,"p"]<.05))
# 将truth设为0并重新生成数据,才能估计该场景的I类错误率。
clear
set seed 20261023
capture program drop mc_mean
program define mc_mean, rclass
    drop _all
    set obs 200
    gen byte a = _n > 100
    gen y = .3*a + rnormal(0,cond(a==1,1.5,1))
    quietly regress y a, vce(robust)
    return scalar est = _b[a]
    return scalar se = _se[a]
    return scalar covered = abs((_b[a]-.3)/_se[a]) <= invttail(e(df_r),.025)
end
simulate est=r(est) se=r(se) covered=r(covered), reps(2000): mc_mean
summarize est se covered
* Stata示例用稳健回归区间,R示例用Welch区间,二者并非完全同一方法。

PSA:用增量净收益表达决策

set.seed(20261023)
B <- 10000
delta_cost <- rnorm(B,1200,300)
delta_qaly <- rnorm(B,.08,.025)
lambda <- seq(0,100000,by=5000) # 教学阈值范围,不是政策推荐
ceac <- sapply(lambda,function(k) mean(k*delta_qaly-delta_cost>0))
data.frame(lambda,Pr_cost_effective=ceac)

这里直接抽取增量分布仅供演示,且假定两增量独立。正式PSA从完整模型的参数联合分布抽样,保留成本—效果及转移概率之间的相关性。概率/效用可考虑Beta,正成本可考虑Gamma或对数正态,同一行转移概率可考虑Dirichlet;分布应由参数含义、估计结果和拟合证据支持。见 ISPOR参数与不确定性指南。

质量检查与复现

保存场景表、随机种子、随机数生成器、软件/包版本、每次估计结果与失败原因。并行运行使用独立随机数流,不能给每个worker相同种子。比较方法时可在同一模拟数据上配对运行,提高比较精度;个体模型的共同随机数也需检查路径对齐。

复杂模型分别考察结构、参数、情景与个体变异;增加人数只能减少个体模拟噪声,不能消除参数不确定性。参见 AHRQ建模与模拟指南。

小心这几个坑 🐾

不报告失败率;为了得到显著结果反复换种子;把2000次重复当2000个真实患者;只在单一有利场景测试;PSA逐项独立抽样破坏相关;把“成本效果概率高”解释为临床有效概率高。

可复制请求

请先判断我是方法学模拟、PSA还是个体模拟,写ADEMP/参数任务书和误差目标,再给小规模可运行样例。报告MCSE、失败率与可复现设置,所有教学参数明确标注。

普贤 · 社医卫管方法库 · 教学参数与代码接口需结合实际数据、软件版本和研究设计核对。