[
  {
    "id": "A1",
    "name": "横断面研究",
    "category": "A",
    "content": "**适用**：在某一时点同时测量暴露与结局，描述疾病分布或探索暴露-结局关联（如国家卫生服务调查、体检数据、居民健康素养调查）。\n\n**要点**：核心是一次性调查，暴露与结局同时收集、无时间先后，只能得关联不能定因果。患病率 = 现患病例数 / 调查人口数（时点患病率）；关联指标推荐患病率比 PR（log-binomial）或暴露患病比值比 POR，结局常见时 OR 会高估关联。抽样常为多阶段/分层抽样，需加权估计总体；典型偏倚有奈曼偏倚（病程长短影响入选，长病程者过度代表）、无应答偏倚与回忆偏倚。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nproportion disease                       // 患病率及 CI（默认 Wald）\nci proportions disease, wilson           // Wilson CI，小样本更稳\nglm disease exposed, family(binomial) link(log) eform   // PR；不收敛时换 poisson disease exposed, irr vce(robust)\n\n* ===== R =====\nx <- 45; n <- 300                        # 患病人数与调查人数\nprop.test(x, n, correct = FALSE)         # 患病率及近似 CI\nbinom.test(x, n)                         # 精确 Clopper-Pearson CI\nm <- glm(disease ~ exposed, family = binomial(link = \"log\"), data = d)\nexp(cbind(PR = coef(m), confint.default(m)))   # 患病率比 PR\n```\n\n**报告要点**：报告调查时点、抽样设计与加权方法；患病率须附 95% CI（注明方法），关联指标用 PR/POR 并说明为何不选 OR。\n\n**常见错误**：用 OR 解读高患病率结局、忽略复杂抽样权重直接做点估计。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A2",
    "name": "病例对照研究",
    "category": "A",
    "content": "**适用**：结局已发生、回顾比较病例与对照的既往暴露，适合罕见病、长潜伏期结局的病因探索（如肿瘤、罕见不良反应）。\n\n**要点**：按结局状态选病例组与对照组（来自同一源人群），回顾收集暴露史；指标 OR = (a×d)/(b×c) = 病例组暴露比值 / 对照组暴露比值，罕见病时近似 RR。匹配设计（个体/频数匹配）提高效率并控制混杂，个体匹配通常采用条件 logistic；频数匹配可采用调整匹配因素的非条件 logistic，需按设计选择；不能直接估计发病率。典型偏倚：回忆偏倚、选择偏倚（如 Berkson 偏倚）、暴露测量偏倚。\n\n**代码**：\n\n```stata\n* ===== Stata =====\ntabulate exposed case, chi2\ncci 40 20 30 70          // 病例暴露/非暴露=40/20，对照暴露/非暴露=30/70 → OR 与 CI\nlogistic case exposed age, or              // 不匹配：多因素校正 OR\nclogit case exposed, group(pairid) or      // 1:1 匹配：条件 logistic\n\n* ===== R =====\nm <- matrix(c(40, 20, 30, 70), nrow = 2)   # 病例暴露/非暴露、对照暴露/非暴露\nfisher.test(m)                             # 精确 OR 与 CI\nglm(case ~ exposed + age, family = binomial(), data = d)   # 校正 OR\nlibrary(survival)\nclogit(case ~ exposed + strata(pairid), data = d)          # 匹配条件 logistic\n```\n\n**报告要点**：报告病例/对照来源、匹配变量与匹配比、应答率；报告 OR 与 95% CI、校正变量与模型类型（条件/非条件）。\n\n**常见错误**：匹配数据用非条件 logistic（偏倚）、结局不罕见时把 OR 当 RR 解释。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A3",
    "name": "队列研究",
    "category": "A",
    "content": "**适用**：按暴露状态分组、随访观察结局，用于验证病因或评估暴露效应，可直接计算发病率、同时观察多个结局（如出生队列、职业队列）。\n\n**要点**：暴露组与非暴露组前瞻（或回顾）随访；核心指标：累积发病率 CI = 发病数/期初人数、发病密度 ID = 发病数/人时。关联：RR = 暴露组发病率/非暴露组发病率（2×2 数据），人时数据用 Poisson 回归得 IRR，含删失的生存数据用 Cox 回归得 HR。典型偏倚：失访偏倚、健康工人效应、暴露/结局测量偏倚，混杂用分层 MH 或多变量模型控制。\n\n**代码**：\n\n```stata\n* ===== Stata =====\ncs disease exposed, exact                  // 2×2：RR 及 CI\nir disease exposed                         // 发病密度比 IRR\nstset time, failure(disease)               // 人时/生存数据\nstrate exposed                             // 各组人时与发病率\npoisson disease exposed, exposure(time) irr\nstcox exposed age                          // 校正 HR\n\n* ===== R =====\nlibrary(epiR)\nepi.2by2(matrix(c(45, 955, 20, 980), nrow = 2), method = \"cohort.count\")\nglm(disease ~ exposed + offset(log(time)), family = poisson(), data = d)  # IRR\nlibrary(survival)\ncoxph(Surv(time, disease) ~ exposed + age, data = d)                      # HR\n```\n\n**报告要点**：报告随访起止、人时、失访率与删失规则；报告累积发病率/发病密度及 RR/IRR/HR 的 95% CI 与校正模型。\n\n**常见错误**：忽略人时把发病密度当累积发病率，或随访长短不一却不用生存分析。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A4",
    "name": "随机对照试验 RCT",
    "category": "A",
    "content": "**适用**：评价干预效果的金标准，随机分配均衡已知与未知混杂，用于药物、诊疗方案与卫生服务干预的效果评价。\n\n**要点**：要素为随机分配（简单/区组/分层）、对照（安慰剂/标准治疗）、盲法（单盲/双盲），平行组为主，另有交叉与整群设计。首要分析人群为 ITT（意向性分析）；效应量：二分类结局用 RR、RD 与 NNT（NNT = 1/RD），连续结局用均数差 MD。报告遵循 CONSORT（注册号、随机序列、分配隐藏、盲法、流程图）。整群 RCT 需按设计效应 DE = 1 + (m−1)×ICC 扩大样本量。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nset obs 120\nset seed 2026\negen block = seq(), to(30) block(4)       // 30 个区组、组内 4 人\ngen treat = rbinomial(1, 0.5)             // 简单随机（严格 2:2 区组需再抽样）\ntab treat\ncsi 20 10 25 5                            // 干预组事件/非事件=20/10，对照组=25/5 → RD、RR 及 CI；NNT=1/RD\nttest y, by(treat)                        // 连续结局：MD\nregress y treat, vce(robust)\n\n* ===== R =====\nset.seed(2026)\nd$treat <- sample(rep(0:1, 60))           # 120 人简单随机（可用 blockrand 做区组）\nlibrary(epiR)\nepi.2by2(table(d$treat, d$outcome), method = \"cohort.count\")   # RR/RD/NNT\nt.test(y ~ treat, data = d)\nlm(y ~ treat, data = d)\n```\n\n**报告要点**：报告注册号、随机方法与分配隐藏、盲法、CONSORT 流程图；同时报告 ITT（与 PP）结果、效应量及 95% CI（NNT 须附 CI）。\n\n**常见错误**：用 PP 替代 ITT 下结论、未报告分配隐藏，或整群随机忽略设计效应。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A5",
    "name": "准实验设计",
    "category": "A",
    "content": "**适用**：无法随机分配时评价政策/干预效果的次优选择，如自然实验、政策评估（医改前后比较、地区间政策差异）。\n\n**要点**：常见类型：前后对照、非等同对照组（DID）、间断时间序列 ITS、断点回归 RDD。DID =（干预组前后差）−（对照组前后差），以组×时间交互项系数估计，前提是平行趋势；ITS 用分段回归，干预后水平变化与斜率变化分开估计。典型威胁：历史因素、向均数回归、霍桑效应与选择偏倚，须做平行趋势/安慰剂检验。\n\n**代码**：\n\n```stata\n* ===== Stata =====\ngen did = treat * post\nregress y treat post did, vce(cluster id)        // did 系数即 DID 估计\nxtset id time\nxtreg y ib0.time#i.treat i.time, fe vce(cluster id)   // 事件研究：检验平行趋势\ngen time_after = max(0, time - t0)               // ITS 分段回归（t0 = 干预时点）\nnewey y time post time_after, lag(1)             // Newey-West 处理自相关\n\n* ===== R =====\nm <- lm(y ~ treat * post, data = d)              # 交互项系数即 DID\nlibrary(sandwich); library(lmtest)\ncoeftest(m, vcov = vcovCL(m, cluster = ~id))     # 聚类稳健标准误\nd$time_after <- pmax(0, d$time - t0)\nits <- lm(y ~ time + post + time_after, data = d)   # ITS 分段回归\n```\n\n**报告要点**：报告设计类型与可比性证据（基线平衡、平行趋势图、安慰剂检验）；报告 DID 系数或 ITS 水平/斜率变化及 95% CI 与稳健标准误类型。\n\n**常见错误**：不检验平行趋势就下因果结论，或 ITS 忽略自相关直接用 OLS 标准误。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A6",
    "name": "生态学研究",
    "category": "A",
    "content": "**适用**：以群体（国家/地区/年份）为分析单位探索宏观暴露与结局关联，用于跨国比较、政策环境因素分析与假说生成，数据易得、成本低。\n\n**要点**：分析单位是群体，暴露与结局均为群体汇总值，关联指标为相关系数、加权回归斜率或标化率比；比较地区率前须标准化年龄结构。核心局限是生态学谬误——群体关联不能推论到个体（跨层推论需多水平模型）；典型混杂为未测量的群体因素（医疗可及性、经济水平）。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nregress rate exposure [aweight = pop]           // 按地区人口加权\ncorr rate exposure\ndstdize deaths pop, by(agegrp) using(stdpop)    // 直接标化；stdpop.dta 含 agegrp 与 pop\n\n* ===== R =====\nm <- lm(rate ~ exposure, data = d, weights = pop)\ncor(d$rate, d$exposure)\nlibrary(epitools)\nageadjust.direct(count = d$deaths, pop = d$pop, stdpop = ref$stdpop)  # 直接标化\n```\n\n**报告要点**：报告分析单位与群体指标定义、是否加权/标化；明确“生态学谬误”局限，结论限定在群体层面。\n\n**常见错误**：把群体关联外推为个体因果（生态学谬误），或不标化年龄结构直接比较地区率。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A7",
    "name": "混合方法研究（定性+定量）",
    "category": "A",
    "content": "**适用**：单一方法不足以回答研究问题时，定性（机制、体验、实施障碍）与定量（测量、检验）互补，常见于卫生服务研究、实施科学与量表开发。\n\n**要点**：核心设计：聚敛（并行）、解释性顺序（先量后质）、探索性顺序（先质后量）、嵌入式；须明确整合点与整合方式（如 joint display 联合展示）。抽样上定量用概率抽样、定性用目的抽样（最大变异/典型/极端案例），定性样本量以信息饱和为原则。质量报告：定性遵循 COREQ，整体遵循 GRAMMS/MMARS，三角互证提升效度。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nttest score, by(group)                 // 定量侧比较\ntab theme group, chi2                  // 定性主题（编码后）与分组交叉：量化整合\n\n* ===== R =====\nlibrary(quanteda)\ndfm <- dfm(tokens(interview_text, remove_punct = TRUE))   # 定性文本：词频辅助主题\ntopfeatures(dfm, 20)\nt.test(score ~ group, data = d)                           # 定量侧\nchisq.test(table(d$theme, d$group))                       # 主题×分组整合\n```\n\n**报告要点**：报告设计类型（顺序/并行）与整合点、两部分抽样与分析方法；定性部分附 COREQ 清单，整合结果用 joint display 呈现。\n\n**常见错误**：两部分平行发表而无真正整合，或定性样本套用概率抽样逻辑、未报告理论视角与反思性。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A8",
    "name": "德尔菲法（Delphi）",
    "category": "A",
    "content": "**适用**：证据不足或意见分歧时，通过多轮匿名专家咨询收敛共识，用于指标筛选、指南推荐、评价体系构建（如卫生管理指标体系）。\n\n**要点**：匿名多轮问卷（通常 2–3 轮），每轮反馈统计汇总（均数、变异系数 CV、满分比），专家据反馈修改意见直至收敛。指标：专家积极系数（回收率）、权威系数 Cr = (Ca + Cs)/2（Ca 判断依据、Cs 熟悉程度）、协调度（肯德尔和谐系数 W、CV）。专家一般 15–50 人；条目筛选常用均数 ≥ 3.5 且 CV ≤ 0.25（阈值因研究而异）。\n\n**代码**：\n\n```stata\n* ===== Stata =====\negen mean_score = mean(score), by(item)\negen sd_score = sd(score), by(item)\ngen cv = sd_score / mean_score\nlist item mean_score cv if mean_score >= 3.5 & cv <= 0.25   // 示例筛选阈值\nssc install concord\nconcord score1-score15                       // 各专家评分变量 → 肯德尔 W\n\n* ===== R =====\nlibrary(dplyr)\nd |> group_by(item) |>\n  summarise(m = mean(score), cv = sd(score)/mean(score)) |>\n  filter(m >= 3.5 & cv <= 0.25)              # 示例筛选阈值\nlibrary(irr)\nw <- kendall(t(as.matrix(xtabs(score ~ expert + item, data = d))))   # 行为条目、列为专家\nw$value                                      # 肯德尔和谐系数 W\n```\n\n**报告要点**：报告轮数、每轮专家数与积极系数、权威系数、筛选标准与保留/删除条目清单、协调系数及其显著性检验。\n\n**常见错误**：轮间无统计反馈直接计分、只看均数忽略离散度与协调度检验，专家过于同质却称“共识”。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B1",
    "name": "描述统计与正态性检验",
    "category": "B",
    "content": "**适用**：任何连续型变量的分布描述与正态性判断，是选择后续参数或非参数方法的起点。\n\n**要点**：连续资料先报 n、均值±SD（正态）或中位数（P25–P75，偏态）与最小–最大值，`summarize, detail` 还给出偏度/峰度。正态性判断不能只看 Shapiro-Wilk 检验（大样本时几乎总拒绝），要结合直方图与 Q-Q 图，并参考 |偏度|<2、|峰度|<7 等经验界值。偏态明显时报告并分析中位数（IQR），可先尝试对数/平方根变换，或直接改用非参数方法。\n\n**代码**：\n\n```stata+r\n* Stata\nsummarize y, detail              // n、均值、百分位数、偏度峰度\nswilk y                          // Shapiro-Wilk 正态性检验\nhistogram y, normal              // 直方图叠加正态密度曲线\nqnorm y                          // 分位-分位（Q-Q）图",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B2",
    "name": "t 检验与方差分析",
    "category": "B",
    "content": "**适用**：两组（t 检验）或三组及以上（方差分析）连续结局的组间比较。\n\n**要点**：两组独立样本用独立样本 t 检验，方差齐性不满足时用 Welch 校正（`unequal`）；同一对象前后两次测量用配对 t 检验。三组及以上用单因素方差分析（ANOVA），F 显著后再做两两比较并用 Bonferroni/Tukey 校正多重性。多组反复做两两 t 检验会膨胀 I 类错误。\n\n**代码**：\n\n```stata+r\n* Stata\nttest y, by(group) unequal       // Welch t 检验（不假定方差齐）\nttest y1 == y2                   // 配对 t 检验\noneway y group, bonferroni       // 单因素 ANOVA + Bonferroni 两两比较\nanova y group                    // 方差分析表",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B3",
    "name": "卡方检验与非参数检验",
    "category": "B",
    "content": "**适用**：分类结局的组间比较，以及不满足正态/方差齐性条件的连续或等级资料的组间比较。\n\n**要点**：四格表先看期望频数：n≥40 且所有期望频数≥5 用 Pearson 卡方，否则用 Fisher 精确检验。等级资料或严重偏态的连续资料，两独立组用 Mann-Whitney U（`ranksum`），配对用 Wilcoxon 符号秩（`signrank`），多组用 Kruskal-Wallis（`kwallis`）。非参数检验比较的是分布/秩次而非均数，结论措辞要相应调整。\n\n**代码**：\n\n```stata+r\n* Stata\ntab a b, chi2 exact              // Pearson 卡方 + Fisher 精确检验\nranksum y, by(group)             // Mann-Whitney U（Wilcoxon 秩和）\nsignrank y1 = y2                 // 配对 Wilcoxon 符号秩检验\nkwallis y, by(group)             // Kruskal-Wallis 检验",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B4",
    "name": "相关与简单线性回归",
    "category": "B",
    "content": "**适用**：两个连续变量间线性关联的方向与强度描述（相关），及一个变量预测另一个变量的简单线性回归。\n\n**要点**：双变量均近正态时用 Pearson r，否则用 Spearman ρ；r 只衡量线性关联强度，不表示因果。回归分析前必须画散点图确认线性趋势并识别离群点，回归系数 β 报告 95% CI，R² 表示结局方差被解释的比例。拟合后应检查残差的正态性、独立性与方差齐性。\n\n**代码**：\n\n```stata+r\n* Stata\nscatter y x                     // 先画散点图判断线性\npwcorr x y, sig                 // Pearson r 及 p 值\nspearman x y                    // Spearman ρ\nregress y x                     // 简单线性回归",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B5",
    "name": "二元 logistic 回归",
    "category": "B",
    "content": "**适用**：二分类结局（患病与否、是否就诊、是否满意）的影响因素分析，结果以比值比 OR 解释。\n\n**要点**：模型为 logit(p)=β₀+Σβᵢxᵢ，OR=exp(β) 表示自变量每增加 1 个单位时结局「发生/不发生」比值的变化倍数；分类自变量必须设参照组（虚拟变量）。报告整体模型的似然比检验、区分度（AUC）与校准（Hosmer-Lemeshow）。结局事件数太少（每自变量不足约 10 个事件，EPV<10）时模型不稳定，应减少自变量。\n\n**代码**：\n\n```stata+r\n* Stata\nlogit y x1 x2, or               // 二元 logistic，报告 OR\nestat gof, group(10)            // Hosmer-Lemeshow 校准检验\nlroc                            // ROC 曲线与 AUC",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B6",
    "name": "有序/多项 logistic 回归",
    "category": "B",
    "content": "**适用**：等级结局（Likert 量表、疾病分期等有序分类）与无序多分类结局（就医机构类型、职业类别等）的影响因素分析。\n\n**要点**：有序结局用有序 logistic（比例优势模型），前提是比例优势假设（各切点回归系数相同），用 Brant 检验验证；满足时报一个公共 OR，不满足改用广义有序 logit（`gologit2`）或多项模型。无序多分类用多项 logistic，选定一类为参照，其余各类分别与参照类比较，系数指数化后为相对风险比 RRR。\n\n**代码**：\n\n```stata+r\n* Stata\nologit y x1 x2, or              // 有序 logistic（比例优势模型）\nbrant, detail                   // 比例优势/平行线假设检验（SSC 安装）\nmlogit y x1 x2, rrr base(1)     // 多项 logistic，参照组=1，报 RRR",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B7",
    "name": "Poisson 与负二项回归",
    "category": "B",
    "content": "**适用**：计数结局（就诊次数、住院天数、跌倒次数、处方数等）的回归建模。\n\n**要点**：Poisson 回归假设均数=方差；存在过度离散（方差明显大于均数）时标准误被低估，改用负二项回归（`nbreg`/`glm.nb`）或 Poisson+稳健标准误。随访/暴露时间不等时必须加 `exposure()`（Stata）或 `offset(log(t))`（R）按人时调整。结果以发病率比 IRR=exp(β) 解释；零计数过多可考虑零膨胀模型（zip/zinb）。\n\n**代码**：\n\n```stata+r\n* Stata\npoisson y x1 x2, irr vce(robust)          // Poisson + 稳健标准误\nnbreg y x1 x2, irr                        // 负二项回归\npoisson y x1 x2, irr exposure(t)          // 随访时间不等：按 t 调整",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B8",
    "name": "生存分析（Kaplan-Meier 与 Cox）",
    "category": "B",
    "content": "**适用**：事件发生时间结局（再入院时间、死亡时间、并发症出现时间等），数据含删失。\n\n**要点**：先用 `stset` 定义随访时间与事件指示变量（0=删失、1=事件），编码弄反会使 KM 曲线与风险集全部出错。Kaplan-Meier 法估计生存函数并画曲线，log-rank 检验比较组间差异；Cox 模型估计风险比 HR 并做多变量调整。必须用 Schoenfeld 残差（`estat phtest`/`cox.zph`）检验比例风险（PH）假设，违反时改用分层 Cox 或时依协变量模型。\n\n**代码**：\n\n```stata+r\n* Stata\nstset time, failure(event)               // event=1 事件，0 删失\nsts graph, by(group)                     // Kaplan-Meier 生存曲线\nsts test group                           // log-rank 检验\nstcox x1 x2                              // Cox 比例风险模型（HR）\nestat phtest, detail                     // PH 假设检验",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B9",
    "name": "重复测量与混合效应模型",
    "category": "B",
    "content": "**适用**：同一对象多次随访的重复测量数据，或患者嵌套于医院/村等层级（聚类）数据的建模。\n\n**要点**：重复测量数据各次观测彼此相关，不能当独立样本处理；球形假设满足时可用重复测量 ANOVA，否则用线性混合效应模型。混合模型以随机截距/随机斜率刻画个体轨迹差异，报告重点是固定效应 β 及其 95% CI，随机效应与协方差结构的选择用 AIC/BIC 或似然比检验判断。二分类结局改用广义混合模型（`melogit`/`glmer`）。\n\n**代码**：\n\n```stata+r\n* Stata\nxtset id time\nmixed y x##c.time || id: time, reml      // 随机截距 + 随机斜率\nmixed y x##c.time || id:                 // 仅随机截距（供比较）\nestat ic                                 // AIC/BIC 比较\n* 二分类结局改用：melogit y x || id:",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "B10",
    "name": "主成分分析与因子分析",
    "category": "B",
    "content": "**适用**：多个指标降维合成综合得分（主成分分析），或探索量表/问卷的潜在结构（探索性因子分析）。\n\n**要点**：先做适用性检验：KMO>0.6 可接受（>0.8 好）、Bartlett 球形检验 p<0.05，不满足则不适合因子分析。主成分数按特征值>1、碎石图肘点或累计方差解释率（如≥60–80%）确定；因子分析定因子数优先用平行分析，并选择旋转方法（正交 varimax 或斜交 promax）。载荷 |λ|≥0.4 视为有实际意义，量表类结果还应报告 Cronbach's α。\n\n**代码**：\n\n```stata+r\n* Stata\npca x1-x10                          // 主成分分析\nfactor x1-x10, pcf                  // 因子分析（主成分因子法）\nestat kmo                           // KMO（Bartlett 检验：ssc install factortest）\nrotate, varimax                     // 正交旋转后看载荷\nalpha x1-x10                        // Cronbach's α",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C1",
    "name": "成本测算",
    "category": "C",
    "content": "**适用**：测算某一疾病、干预或服务在特定视角与时间段内消耗的资源总量（货币化成本），为成本分析、CEA/BIA 提供成本输入。\n**要点**：先明确测算视角（社会 / 卫生体系 / 医保 / 患者）与时间范围，视角决定纳入范围。\n成本分直接成本（直接医疗 + 直接非医疗）与间接成本（生产力损失，常用人力资本法按工资估算）。\n按「识别—测量—估值」三步：识别资源项目 → 测量消耗数量 → 以单位成本估值（数量 × 单价）。\n微观成本法（bottom-up）逐项自下而上加总，自上而下法（top-down）用总费用分摊，二者结果应交叉校验；跨年度成本须按医疗 CPI 等调整价格并按贴现率折现。\n**代码**：\n\n```stata\n* 成本均数与 bootstrap 95% CI（成本右偏时优于正态 CI）\nbootstrap r(mean), reps(1000) seed(2026): summarize cost\nci means cost\n```\n\n```r\nset.seed(2026)\nboot <- replicate(1000, mean(sample(cost, replace = TRUE)))\nmean(cost)                       # 点估计\nquantile(boot, c(.025, .975))    # 95% 百分位置信区间\n```\n\n**报告要点**：报告测算视角、时间范围、数据与单价来源（年份）、贴现率与价格调整方式；均数附 95% CI。\n**常见错误**：混淆视角（把患者自负费用计入医保视角成本），或把不同年份未经价格调整的成本直接相加。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C2",
    "name": "成本-效果分析 CEA 与成本-效用分析 CUA",
    "category": "C",
    "content": "**适用**：比较两种及以上干预的成本与健康产出，产出为自然单位（CEA）或 QALY（CUA）。\n**要点**：核心指标 ICER = ΔC/ΔE = (C₁−C₀)/(E₁−E₀)，与支付意愿阈值（国内常用 1–3 倍人均 GDP/QALY，口径须注明）比较判断经济性。\n不确定性用 bootstrap 或概率敏感性分析（PSA）刻画，绘制成本-效果平面与成本-效果可接受曲线（CEAC）；净货币效益 NMB = λ·ΔE − ΔC > 0 等价于在阈值 λ 下可接受。\n增量必须基于同一人群、同一时间范围计算，不能简单用两组均值相除代替统计推断。\n**代码**：\n\n```stata\n* ICER 增量计算（arm：1 = 干预，0 = 对照；ttest 按组值升序，组 2 为 arm=1）\nttest c, by(arm)\nscalar dC = r(mu_2) - r(mu_1)\nttest e, by(arm)\nscalar dE = r(mu_2) - r(mu_1)\ndi \"ICER = \" dC / dE\n```\n\n```r\ndC <- with(dat, mean(c[arm == 1]) - mean(c[arm == 0]))\ndE <- with(dat, mean(e[arm == 1]) - mean(e[arm == 0]))\nset.seed(2026)\nicers <- replicate(1000, with(dat[sample(nrow(dat), replace = TRUE), ],\n              (mean(c[arm==1]) - mean(c[arm==0])) / (mean(e[arm==1]) - mean(e[arm==0]))))\nquantile(icers, c(.025, .975))   # bootstrap ICER 置信区间\n```\n\n**报告要点**：并列报告两组成本与效果均数（含 95% CI）、ICER 及 bootstrap/PSA 结果（CEAC 上阈值处的接受概率），并注明阈值来源。\n**常见错误**：增量效果趋近 0 时 ICER 数值爆炸仍直接解读，或不做不确定性分析即断言结论稳健。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C3",
    "name": "QALY 与 DALY 计算",
    "category": "C",
    "content": "**适用**：把生存时间与生命质量合成为单一健康产出（QALY），或按死亡与伤残损失合成疾病负担（DALY），用于 CUA 与负担比较。\n**要点**：QALY = Σ 生存年 × 效用权重（0–1），效用来自 EQ-5D-5L（使用中国效用值集）、SF-6D 或 TTO/SG，纵向数据用曲线下面积法按时间区间加总。\nDALY = YLL + YLD：YLL = 死亡数 × 标准期望寿命，YLD = 患病人数 × 伤残权重 × 病程（权重查 GBD 表）。\nDALY 常用 GBD 参数（3% 贴现、年龄权重）；QALY 与 DALY 互为近似镜像但不能直接互换。\n**代码**：\n\n```stata\n* QALY：效用曲线下面积（q 为效用、t 为时点，按 id 与 t 排序）\nbysort id (t): gen qaly_step = (q + q[_n-1]) / 2 * (t - t[_n-1]) if _n > 1\nbysort id: egen qaly = total(qaly_step)\n* DALY：YLL + YLD（yll、yld 按 GBD 公式预先计算）\ngen daly = yll + yld\n```\n\n```r\ndat <- dat[order(dat$id, dat$t), ]\nqaly <- tapply(seq_len(nrow(dat)), dat$id, function(i) {\n  t <- dat$t[i]; q <- dat$q[i]\n  sum(diff(t) * (head(q, -1) + tail(q, -1)) / 2)     # 梯形面积法\n})\n```\n\n**报告要点**：报告效用工具、值集来源与测量时点，说明 QALY 加总方法（AUC/梯形法）与 DALY 的伤残权重、贴现参数。\n**常见错误**：把疾病严重度评分当效用权重，或直接混用 QALY 与 DALY 做比较。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C4",
    "name": "预算影响分析 BIA",
    "category": "C",
    "content": "**适用**：从预算持有人（医保基金、医院或政府）视角，估计采纳新干预后 3–5 年内逐年及累计的财务影响。\n**要点**：预算影响 =（新干预下目标人群总费用）−（现行干预下总费用），按「目标人群规模 × 渗透/替代率 × 人均年费用」逐年滚动测算。\n需设定市场吸纳曲线（uptake）、替代与增量使用比例、人群自然增长与价格变化；ISPOR 建议按年度现金流报告、不做贴现，且与 CEA 分开呈现。\n**代码**：\n\n```stata\n* 逐年预算影响 = 目标人群 × 渗透率 ×（新方案 − 现行方案）人均年费用\ngen bi = pop * uptake * (c_new - c_cur)\nlist year bi\nsum bi                         // 研究期内合计\n```\n\n```r\nbia <- data.frame(year = 1:5, pop = 1e5, uptake = c(.2, .4, .6, .8, .9))\nbia$bi <- bia$pop * bia$uptake * (c_new - c_cur)\nbia                            # 逐年预算影响；sum(bia$bi) 为合计\n```\n\n**报告要点**：报告视角、时间范围、目标人群与 uptake/替代假设，并给出单因素与情景（乐观/悲观）敏感性分析。\n**常见错误**：把预算影响结果当作成本-效果结论，或漏报 uptake 与人群增长假设。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C5",
    "name": "卫生技术评估 HTA 流程",
    "category": "C",
    "content": "**适用**：为新技术（药品、器械、诊断、服务包）的准入、定价与报销决策整合临床与经济证据的规范化评估。\n**要点**：标准流程：明确评估问题（PICO 与决策问题）→ 系统检索与证据评价 → 临床效果（必要时间接比较/网状 Meta）→ 经济评价（CEA/CUA + BIA）→ 伦理、组织、公平等非经济维度 → 综合报告供委员会决策。\n核心产出是相对阈值的经济性判断与预算影响估计；国内对应医保谈判/准入的申报与专家评审流程。\n**代码**：\n\n```stata\n* PSA 决策判断：净货币效益 NMB = λ·ΔE − ΔC，λ 为阈值（如 1–3 倍人均 GDP）\ngen nmb = lambda * (e_new - e_cur) - (c_new - c_cur)\ncount if nmb > 0\ndi \"成本-效果概率 = \" r(N) / _N\n```\n\n```r\nnmb <- lambda * (e_new - e_cur) - (c_new - c_cur)\nmean(nmb > 0)                  # NMB > 0 的比例 → CEAC 上阈值 λ 处的接受概率\n```\n\n**报告要点**：写明评估视角、关键参数来源与假设、模型结构及不确定性，并独立核验申办方提交的参数与模型。\n**常见错误**：直接采信申办方模型结论而不做独立校验，或把 HTA 简化为只看 ICER 的经济评价。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C6",
    "name": "随机前沿分析 SFA 与数据包络分析 DEA（效率评价）",
    "category": "C",
    "content": "**适用**：评价医院、科室、疾控机构等决策单元（DMU）的技术效率及其影响因素。\n**要点**：DEA 为非参数确定性前沿：CCR（规模报酬不变）与 BCC（可变），允许多投入多产出、无需函数形式，但对离群值敏感且不区分随机误差与无效率。\nSFA 为参数随机前沿：把误差分解为统计噪声 v 与无效率 u（半正态/截断正态等分布假设），可检验影响因素，但一般仅处理单一产出。\n两者常组合使用：DEA 得效率得分，再以 Tobit/截断回归或 SFA 分析效率影响因素。\n**代码**：\n\n```stata\n* SFA：Cobb-Douglas 随机前沿，半正态无效率\nsfcross y x1 x2, distribution(hnormal)\npredict te_sfa, te\n* DEA：投入导向 BCC（先 ssc install dea）\ndea x1 x2 = y, rts(vrs) ort(in)   // 效率得分；选项以 help dea 为准\n```\n\n```r\nlibrary(Benchmarking)\nr_dea <- dea(X = cbind(x1, x2), Y = y, RTS = \"vrs\")    # 投入导向 BCC\neff_dea <- r_dea$eff                                    # Farrell 效率 E ∈ (0,1]\nlibrary(frontier)\neff_sfa <- efficiencies(sfa(log(y) ~ log(x1) + log(x2), data = dat))\n```\n\n**报告要点**：报告前沿模型设定（方向、规模报酬、分布假设）、效率得分分布（均值/四分位）与影响因素回归结果。\n**常见错误**：样本量相对投入产出维度过小导致多数 DMU 效率 = 1 仍做解释，或 SFA 无效率分布假设未检验。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C7",
    "name": "医保支付标准测算（DRG/DIP 权重与点值测算思路）",
    "category": "C",
    "content": "**适用**：为 DRG/DIP 付费改革测算病组权重、费率与病种分值、点值，作为医保基金按病种结算的支付标准。\n**要点**：DRG：权重 RW = 该病组例均费用 ÷ 全部病例例均费用（基于历史住院费用数据，再经临床论证与成本校正）；费率 = 住院基金预算总额 ÷ Σ(RW × 组病例数)，支付标准 = RW × 费率 × 调整系数。\nDIP：病种分值 = 该病种例均费用 ÷ 基准例均费用（或相对点数），点值 = 区域基金总额 ÷ Σ(病种分值 × 病例数)，总量控制下按年度清算校正。\n权重/分值应剔除不合理费用结构影响（药品耗材占比、人次人头比）并建立动态调整机制。\n**代码**：\n\n```stata\n* DRG 权重：病组例均费用 ÷ 全样本例均费用\nbysort drg: egen fee_drg = mean(fee)\negen fee_all = mean(fee)\ngen rw = fee_drg / fee_all\n* DIP 点值：区域基金总额 ÷ Σ(病种分值 × 病例数)\ngen point_amt = dip_score * n_cases\nsum point_amt\ndi \"每分值金额 = \" fund_budget / r(sum)\n```\n\n```r\nlibrary(dplyr)\nrw <- dat |> group_by(drg) |> summarise(rw = mean(fee) / mean(dat$fee))\ndip_value <- fund_budget / sum(dat$dip_score * dat$n_cases)   # DIP 点值\n```\n\n**报告要点**：报告测算数据年份与费用口径、权重/分值校正方法（专家论证、费用结构剔除）及点值年度清算与校正规则。\n**常见错误**：直接使用未校正的历史例均费用当权重/分值，或忽略总额控制下点值年终清算的浮动风险。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "C8",
    "name": "卫生服务利用公平性（集中指数 CI 与不平等分解）",
    "category": "C",
    "content": "**适用**：量化卫生服务利用（或健康结局、费用）随经济状况分布的不平等程度及其来源。\n**要点**：集中指数 CI = 2·cov(y, R)/ȳ，R 为按经济状况（收入/财富）排序的分数秩（(rank−0.5)/n），CI ∈ [−1, 1]，负值表示利用偏向较穷人群，0 为绝对平等；标准误用回归法或专门命令计算，跨人群比较时建议先做年龄性别标化。\n不平等分解：CI = Σ(βk·x̄k/ȳ)·CIk + 残差，即每个影响因素按「弹性 × 该变量的集中指数」贡献，用于定位不平等的主要驱动因素。\n**代码**：\n\n```stata\nssc install conindex, replace\nconindex y, rankvar(r)      // r：按经济状况排序的分数秩；选项以 help conindex 为准\n```\n\n```r\nr  <- (rank(ses) - 0.5) / length(ses)   # 按经济状况排序的分数秩\nci <- 2 * cov(y, r) / mean(y)           # 协方差法集中指数\n```\n\n**报告要点**：报告 CI 及其标准误/置信区间（是否显著偏离 0），分解表给出各因素的弹性、集中指数与贡献占比。\n**常见错误**：分数秩按 y 自身而非经济状况排序，或不做标化直接跨人群比较 CI。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D1",
    "name": "倾向得分匹配（PSM）",
    "category": "D",
    "content": "**适用**：观察性数据中处理（治疗/政策暴露）分配非随机、但可观测混杂充分时，用倾向得分匹配估计平均处理效应（ATT/ATE）。\n**要点**：核心思想是用协变量 X 估计倾向得分 p(X) = P(T=1|X)，将处理组与对照组按得分匹配，使两组在可观测协变量上可比，近似「准随机化」。\n匹配前须检查**共同支撑**（common support）：两组 p(X) 分布应充分重叠，可画密度重叠图或用 `teffects overlap`。\n匹配后须检验**平衡性**：各协变量标准化均值差 SMD，|SMD| < 0.1 视为平衡，否则调整模型设定或更换匹配算法。\nPSM 只控制可观测混杂，不能解决未观测混杂。\n**代码**：\n\n```stata\n* Stata：1:1 近邻匹配估计 ATT（y 结局、t 处理、x1 x2 协变量）\nteffects psmatch (y) (t x1 x2), atet\ntebalance summarize          // 平衡性：SMD 与方差比\ntebalance density            // 共同支撑：倾向得分重叠图\n```\n\n```r\nlibrary(MatchIt)\nm <- matchit(t ~ x1 + x2, data = dat, method = \"nearest\")\nmd <- match.data(m)\nlm(y ~ t + x1 + x2, data = md, weights = weights)\ncobalt::love.plot(m, abs = TRUE)   # SMD 平衡图\n```\n\n**报告要点**：报告匹配算法与卡尺、匹配前后样本量与 SMD 平衡表，效应量附稳健标准误与 95% CI，并声明结果仅对可观测混杂成立。\n**常见错误**：把匹配后结果当作随机对照试验证据，或不报告共同支撑与平衡性检查。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D2",
    "name": "工具变量（IV）",
    "category": "D",
    "content": "**适用**：处理变量存在内生性（遗漏变量、反向因果、测量误差）且能找到有效工具变量 Z 时，用工具变量法估计因果效应（2SLS）。\n**要点**：有效 IV 需满足：①相关性——Z 与内生处理 T 强相关，一阶段 F 统计量 > 10（弱 IV 会放大偏误）；②排他性——Z 仅通过 T 影响 Y，不可直接检验，需靠研究设计论证；③同质性或单调性假设下，2SLS 识别的是依从者平均处理效应（LATE）。\n多工具变量时可用过度识别检验（Sargan/Hansen J）检验工具变量的有效性。\n工具变量的有效性首先取决于研究设计与背景论证，而非统计检验本身。\n2SLS 分两阶段：第一阶段 T 对 Z（及外生协变量）回归得拟合值，第二阶段 Y 对拟合值回归；标准误由 `ivregress`/`ivreg` 自动校正。\n弱 IV 时除 F 统计量外，可加做对弱工具变量稳健的推断（如 Anderson–Rubin 检验）。\nR 公式 y ~ t | z 中，`|` 右侧为工具变量，t 为内生处理。\n**代码**：\n\n```stata\n* Stata：2SLS（核心命令）\nivregress 2sls y (t = z), first vce(robust)\nestat firststage            // 一阶段 F，>10 为强工具变量\n* 多工具变量：ivregress 2sls y (t = z1 z2), first，再用 estat overid 做过度识别检验\n```\n\n```r\nlibrary(AER)\nm_iv <- ivreg(y ~ t | z, data = dat)\nsummary(m_iv, diagnostics = TRUE)   # 含弱工具变量诊断\n```\n\n**报告要点**：报告一阶段 F、工具变量的相关性与排他性论证、2SLS 系数及稳健标准误，并把效应解读为对依从者成立的 LATE。\n**常见错误**：弱工具变量（一阶段 F<10）仍下强因果结论，或把排他性假设当作可检验。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D3",
    "name": "断点回归（RDD）",
    "category": "D",
    "content": "**适用**：处理由连续运行变量是否越过临界值决定（如分数线录取、年龄阈值报销）时，估计断点附近的局部因果效应。\n**要点**：RDD 依据「断点附近个体近似随机落入两侧」，比较临界值两侧的局部平均结果之差。\n须做三类检验：①运行变量密度在断点处连续（无操纵，McCrary 检验）；②前定协变量在断点处平衡；③结果对带宽选择稳健。\n主流做法为局部线性回归 + 三角核权重，带宽按 MSE 最优或 Calonico–Cattaneo–Titiunik (2014) 方法选择，并报告 RD 图。\n效应是断点处的 LATE，向远离断点的人群外推需谨慎。\n模糊断点（fuzzy RD）以「是否越线」为工具变量估计：Stata `rdrobust y x, c(0) fuzzy(t)`，R `rdrobust` 加 `fuzzy = \"t\"`。\n**代码**：\n\n```stata\nssc install rdrobust\nssc install rddensity\nrdrobust y x, c(0)          // x 为中心化运行变量\nrdplot y x, c(0)            // RD 图\nrddensity x, c(0)           // 密度操纵检验\n```\n\n```r\nlibrary(rdrobust)\nrdrobust(y = dat$y, x = dat$x, c = 0)\nrddensity::rddensity(dat$x, c = 0)   # 操纵检验\n```\n\n**报告要点**：报告带宽选择方法与不同带宽下的稳健性、RD 图（断点两侧拟合线 + 置信区间）、操纵检验与协变量连续性检验。\n**常见错误**：不做密度与协变量连续性检验、不报带宽敏感性就下因果结论。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D4",
    "name": "合成控制法（SCM）",
    "category": "D",
    "content": "**适用**：政策只影响一个（或少数）处理单元、且有较长政策前后面板与多个未处理对照单元时，估计政策对处理单元的效应。\n**要点**：用对照组单元的加权组合构造「合成对照」，权重在政策前时期最小化处理单元与合成对照在结局及预测协变量上的差异；政策后两者的差距即政策效应轨迹。\n推断依靠**安慰剂检验**：把每个对照单元依次当作「假处理」单元重复估计，看真实效应是否显著大于假效应分布（可换算置换 p 值）。\n要求政策前时期足够长、合成拟合良好（政策前 RMSPE 小）。\n权重通常非负且和为 1；Stata `synth` 的 `nested` 选项与 R 侧嵌套求解参数（如 `optimxmethod`）控制权重求解（以帮助文档为准）。\n**代码**：\n\n```stata\nssc install synth\ntsset id time\nsynth y x1 x2 y(1990(1)1999), trunit(1) trperiod(2000) fig\n* 安慰剂检验：对每个对照单元重复 synth 比较效应轨迹（以 help synth 为准）\n```\n\n```r\ndp <- Synth::dataprep(foo = dat, predictors = c(\"x1\", \"x2\"), dependent = \"y\",\n                      unit.variable = \"id\", time.variable = \"time\",\n                      treatment.identifier = 1, controls.identifier = 2:20,\n                      time.predictors.prior = 1990:1999, time.optimize.ssr = 1990:1999)\ns1 <- Synth::synth(dp)\n```\n\n**报告要点**：报告合成对照的权重构成与政策前拟合优度（RMSPE）、政策后效应轨迹图，以及安慰剂/置换检验结果。\n**常见错误**：政策前拟合差（RMSPE 大）仍解读效应，或不做安慰剂检验。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D5",
    "name": "事件研究法",
    "category": "D",
    "content": "**适用**：政策冲击时点明确、需考察效应随时间的动态变化（事前趋势与事后轨迹）时使用，适用于面板或重复截面数据。\n**要点**：以相对事件时间（relative time）生成各期虚拟变量并与处理组交互，取政策前一期（-1）为参照。\n**事前系数应不显著**（平行趋势检验），事后系数轨迹刻画效应的动态演化；事件研究图（系数 + 置信区间）是标准呈现。\n基准设定为双向固定效应 + 聚类稳健标准误；交错采用（异质性处理时点）时双向固定效应估计可能有偏，应加做 Sun–Abraham (2021) 或 Callaway–Sant'Anna (2021) 稳健性。\n各期系数均相对 -1 期解读（-1 期系数被吸收进常数项）。\n正式平行趋势检验可对事前交互项做联合检验（`reghdfe` 后用 `test` 联合检验事前系数）。\n若为重复截面而非面板，个体固定效应不可用，改用群组固定效应并按群组聚类。\n**代码**：\n\n```stata\nssc install reghdfe\nssc install coefplot\nreghdfe y ib(-1).time#i.treat, absorb(id time) vce(cluster id)\ncoefplot, keep(*.time#1.treat)          // 事件研究图\n```\n\n```r\nlibrary(fixest)\nm <- feols(y ~ i(time, treat, ref = -1) | id + time, data = dat)\ncoefplot(m)                              // 事件研究图\n```\n\n**报告要点**：报告事件研究图（事前系数应为零、事后轨迹与显著性）、参照期与聚类层级；交错采用时说明稳健性检验。\n**常见错误**：只看平均效应不看动态轨迹，或事前趋势不平行仍解读为因果。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D6",
    "name": "双重差分（DID）",
    "category": "D",
    "content": "**适用**：政策在某时点只冲击处理组、且有政策前后数据时，比较两组变化之差估计处理效应。\n**要点**：识别假设为**平行趋势**（无政策时两组结局变化相同）；交互项 treat × post 的系数即 DID 估计量；交错采用时注意异质性处理效应偏误（见 D5 稳健性建议）。\n**代码**：\n```stata\n* Stata：2×2 DID（交互项系数即效应）\nreg y i.treat##i.post, vce(cluster id)\n```\n```r",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D7",
    "name": "间断时间序列（ITS）",
    "category": "D",
    "content": "**适用**：单一单元（或合并总体）有政策前后多期连续时间序列时，检验政策的水平与斜率改变。\n**要点**：分段回归 Y = β0 + β1·time + β2·post + β3·time_after；β2 为水平（即时）改变，β3 为斜率（长期）改变；须用 Newey–West 或 Prais–Winsten 校正自相关（季节性需处理）。\n**代码**：\n```stata\ntsset time\ngen post = (time >= t0)          // t0 = 政策实施期\ngen time_after = (time - t0) * post\nnewey y time post time_after, lag(1)\n```\n```r\nm <- lm(y ~ time + post + time_after, data = dat)\nlmtest::coeftest(m, vcov = sandwich::NeweyWest(m, lag = 1))\n```\n**报告要点**：报告 β2、β3 与自相关校正方法，并画拟合线与无政策反事实对照。\n**常见错误**：忽略自相关导致标准误低估，或政策前观测点太少无法识别趋势。\n> 详见 ITS skill：完整流程、自相关诊断与季节性处理。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "D8",
    "name": "三重差分（DDD）",
    "category": "D",
    "content": "**适用**：DID 中处理组与对照组存在不同时间趋势或额外混淆时，加入第三个维度（地区/人群/结果）作双重对照。\n**要点**：DDD = 处理 × 时间 × 第三维度的三重交互项系数，通过「差异中的差异的差异」消除两组各自时间趋势与第三维度的共同冲击。\n应同时报告各双重交互项，并说明第三维度剔除何种混淆。\n**代码**：\n```stata\n* Stata：DDD（三重交互项系数即效应）\nreg y i.treat##i.post##i.group, vce(cluster id)\n```\n```r",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E1",
    "name": "缺失数据与多重插补",
    "category": "E",
    "content": "**适用**：数据存在缺失值但需完整数据集进行回归/模型分析时，用多重插补替代删除法以减少偏倚与效能损失（如问卷调查、纵向随访、电子病历数据）。\n\n**要点**：缺失机制决定处理策略——完全随机缺失 MCAR（缺失与任何变量无关）、随机缺失 MAR（缺失与已观测变量有关，条件于已观测变量后可忽略）、非随机缺失 MNAR（缺失与缺失值本身有关）。多重插补（MI）用链式方程生成 m 个（建议 20–50 次，缺失比例越高 m 越大）完整数据集，分别分析后用 Rubin 规则合并点估计与方差，正确体现插补不确定性；优于均值填补与完整病例分析（后者仅在 MCAR 且缺失比例很小时基本无偏）。MNAR 下 MI 仍有偏，需做敏感性分析（如 worst-case、δ 调整）；插补模型应纳入与缺失性及结局相关的辅助变量。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nmi set mlong                                  // 声明多重插补 long 格式\nmi register imputed y x                       // 登记含缺失的待插补变量\nmi impute chained (regress) y (logit) x = z age, add(20) rseed(2026)\n                                              // y 连续用 regress、x 二分类用 logit；z age 为完整辅助变量\nmi estimate: regress y x age                  // 逐集估计 + Rubin 规则合并\n* ===== R =====\nlibrary(mice)\nimp <- mice(data, m = 20, seed = 2026)        # 链式方程多重插补\ndensityplot(imp)                              # 检查插补值分布\nfit <- with(imp, glm(y ~ x + age, family = binomial()))   # 逐集估计\npool(fit)                                     # Rubin 规则合并\n```\n\n**报告要点**：报告各变量缺失比例与缺失模式，明确缺失机制假设（MCAR/MAR/MNAR 判断依据）、插补模型与 m 值、Rubin 合并规则；并与完整病例分析并列作敏感性比较。\n\n**常见错误**：用均值/末次观测填补、只插补 1 次（m=1）当多重插补，或插补模型漏掉预测缺失与结局的关键变量。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E2",
    "name": "样本量与统计效能计算",
    "category": "E",
    "content": "**适用**：研究设计阶段确定所需样本量、或评估既有样本的检验效能，保证结果可解释（RCT、两率比较、抽样调查、预测模型开发）。\n\n**要点**：先固定四个量：效应量（取最小临床重要差异 MCID，或文献/预试验值）、显著性水平 α（通常 0.05）、目标效能 1−β（通常 0.8/0.9）与设计参数（组间比、方差），已知任意三个可解出第四个。效应量须由专业判断或外部证据给定，不能用当前观测数据倒推（事后效能无意义）。连续结局用标准化均数差 d = (μ1−μ2)/σ，分类结局用率差或 OR；分层、整群与重复测量设计须乘设计效应 DE = 1 + (m−1)ICC 并预留脱落率。\n\n**代码**：\n\n```stata\n* ===== Stata =====\npower twomeans 100 110, sd(20) power(0.8)    // 两组均数 100 vs 110、SD 20 → 每组 n\npower twomeans 100 110, sd(20) n(64)         // 固定每组 n=64 → 检验效能\npower twoproportions 0.30 0.20, power(0.8)   // 两率 0.30 vs 0.20 → 每组 n\npower oneproportion 0.20 0.25                // 单组率 0.20 对目标 0.25\npower twomeans 100 110, sd(20) power(0.8) nratio(2)   // 组间比 1:2 设计\n* ===== R =====\nlibrary(pwr)\npwr.t.test(d = 0.5, sig.level = 0.05, power = 0.8, type = \"two.sample\")  // 每组 n\npwr.t.test(d = 0.5, sig.level = 0.05, n = 64, type = \"two.sample\")       // 固定 n → 效能\npwr.2p.test(h = ES.h(0.3, 0.2), sig.level = 0.05, power = 0.8)           // 两率\npwr.anova.test(k = 3, f = 0.25, sig.level = 0.05, power = 0.8)           // 多组方差分析\npwr.chisq.test(w = 0.1, df = 1, sig.level = 0.05, power = 0.8)           // 卡方检验\n```\n\n**报告要点**：报告四个要素（效应量及其来源、α、1−β、设计参数），给出每组所需样本量、考虑脱落后最终样本量；附效能曲线或关键参数敏感性表。\n\n**常见错误**：用观察到的效应量做“事后效能”论证、忽略脱落率与整群/重复测量的设计效应，或多重比较不校正 α。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E3",
    "name": "LASSO/弹性网与正则化",
    "category": "E",
    "content": "**适用**：高维数据（变量数接近或超过样本量）下的变量筛选与惩罚回归，防止过拟合。\n\n**要点**：LASSO 用 L1 惩罚把部分系数压缩为 0，实现变量选择；岭回归用 L2 收缩但不稀疏；弹性网混合两者，变量高度相关时更稳。λ 用交叉验证选择（常取 1-SE 规则，模型更简约）；结局决定 family（连续/二分类）。LASSO 系数有收缩偏倚，P 值需谨慎（样本拆分或去偏）。完整预处理、调参与评估流程详见机器学习 skill。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nlasso linear y x1-x200, selection(cv) nolog    // 连续结局，CV 选 λ\nlasso logit y x1-x200, selection(cv)           // 二分类结局\n* ===== R =====\ncvfit <- glmnet::cv.glmnet(x, y, family = \"binomial\", alpha = 0.5)   // 弹性网\ncoef(cvfit, s = \"lambda.1se\")                  // 1-SE λ 的系数\n```\n\n**报告要点**：报告惩罚类型与 α、λ 选择规则（min/1se）与 CV 折数、最终保留变量及系数（注明标准化与否）。\n**常见错误**：把 LASSO 系数直接报显著性 P 值、在测试集上选 λ、连续变量不标准化。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E4",
    "name": "随机森林与 XGBoost",
    "category": "E",
    "content": "**适用**：非线性、含复杂交互或高维的分类/回归预测任务，作为灵活强基线模型（风险预测、结局分类）。\n\n**要点**：随机森林 = 多棵决策树 bagging + 随机特征子集，抗过拟合、稳健，袋外（OOB）误差可作内部验证；XGBoost = 梯度提升迭代修正残差，精度常更高但对超参敏感、需早停。两者均须调参（树数/深度/学习率）并在独立测试集或交叉验证评估。完整调参、变量重要性与模型解释流程详见机器学习 skill。\n\n**代码**：\n\n```stata\n* ===== Stata =====\n* Stata 无内置实现；可经 PyStata 调用 Python（sklearn/xgboost）\n* ===== R =====\nlibrary(randomForest); library(xgboost); set.seed(2026)\nrf <- randomForest(y ~ ., data = train, ntree = 500, importance = TRUE)   # 分类/回归自动识别\nbst <- xgboost(data = xgb.DMatrix(as.matrix(train_x), label = train_y),\n               nrounds = 100, eta = 0.1, max_depth = 3, objective = \"binary:logistic\")\n```\n\n**报告要点**：报告调参范围、重抽样策略（CV/独立测试集）与区分度、校准指标（AUC、Brier）。\n**常见错误**：只在训练集报告精度（过拟合乐观），或不做调优直接套用默认参数。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E5",
    "name": "聚类分析（K-means/层次聚类）",
    "category": "E",
    "content": "**适用**：无监督地将个体或变量分成同质组，用于人群分型（患者亚组、健康素养/就医行为类型）、变量降维与问卷条目归类。\n\n**要点**：分析前须标准化（量纲不同时）；K-means 将样本迭代分配到最近质心、最小化组内平方和，需预先指定 K；层次聚类（凝聚/分裂）不预设 K，按距离逐层合并并用树状图展示。K 的选择：肘部法（组内平方和随 K 的拐点）、轮廓系数（越接近 1 越好）或树状图截断，最终由专业可解释性定夺。结果依赖距离度量（欧氏/曼哈顿）、标准化与初始值，须设种子并比较多种方案验证稳定性。\n\n**代码**：\n\n```stata\n* ===== Stata =====\ncluster kmeans x1 x2, k(3) start(krandom(2026)) name(k3)   // K-means（x1 x2 宜先标准化）\ncluster stop, rule(duda)                      // 肘部指标辅助选 K（Duda-Hart）\ncluster wardslinkage x1 x2, name(hc)          // 层次聚类（Ward 法）\ncluster dendrogram hc, labels(id)             // 树状图\ncluster generate g = groups(k3)               // 保存 K-means 分组结果\n* ===== R =====\nset.seed(2026); km <- kmeans(scale(x), centers = 3, nstart = 25)   # K-means（scale 标准化）\nd <- dist(scale(x)); hc <- hclust(d, method = \"ward.D2\")           # 层次聚类（Ward 法）\nplot(hc); table(cutree(hc, k = 3), km$cluster)                     # 树状图；两法结果交叉\nlibrary(cluster)\nmean(silhouette(km$cluster, dist(scale(x)))[, 3])                  # 平均轮廓系数（选 K）\n```\n\n**报告要点**：报告标准化方式、距离度量与聚类方法、K 的选择依据（肘部/轮廓系数/树状图）与各组样本量；描述各组特征并验证稳定性（不同种子/子样本重复）。\n\n**常见错误**：不标准化直接聚类、凭主观随意定 K 不报告依据，或聚类后不验证稳定性与可解释性。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "E6",
    "name": "贝叶斯统计入门",
    "category": "E",
    "content": "**适用**：需要结合先验知识、小样本推断、或输出参数完整后验分布与不确定性区间的分析（网状 meta 分析、卫生经济学评价、适应性设计、层次模型）。\n\n**要点**：贝叶斯推断 = 后验 ∝ 先验 × 似然，先验（文献/专家/无信息弱信息）与数据结合更新信念；区间用 95% 可信区间（credible interval：参数有 95% 概率落于其中），区别于频率学派的置信区间。用 MCMC 抽样近似后验，必须检查收敛（链轨迹混合、R-hat < 1.01、有效样本量 ESS 充足）并报告链数、迭代数与预热期。先验选择需说明依据并做先验敏感性分析（不同先验下结论是否稳健）。\n\n**代码**：\n\n```stata\n* ===== Stata =====\nbayes, mcmcsize(10000) rseed(2026): regress y x   // 默认弱信息先验的贝叶斯回归\nbayesgraph diagnostics {y:x}                      // 轨迹/自相关/R-hat 收敛诊断\nbayesstats ess                                   // 有效样本量\nbayesstats summary, credible                     // 后验均值与 95% 可信区间\nbayes, prior({y:x}, normal(0, 10)) rseed(2026): regress y x   // 自定义先验 → 敏感性分析\n* ===== R =====\nlibrary(brms)\nfit <- brm(y ~ x, data = d, chains = 4, iter = 2000, warmup = 1000, seed = 2026)\nsummary(fit)                                 # 后验均值、95% CI、R-hat、ESS\nplot(fit)                                    # 链轨迹与后验密度\nhypothesis(fit, \"x > 0\")                     # 后验概率 P(x > 0)\n```\n\n**报告要点**：报告先验分布及依据、MCMC 设置（链数/迭代/预热/种子）与收敛指标（R-hat、ESS）；效应量给出后验均值与 95% 可信区间，附先验敏感性分析。\n\n**常见错误**：把可信区间当置信区间解释、不检查收敛就下结论，或先验无依据且不做敏感性分析。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F1",
    "name": "Andersen 卫生服务利用行为模型",
    "category": "F",
    "content": "**适用**：解释与预测个体卫生服务利用（是否就诊、就诊次数、慢病服务利用），为就医行为与卫生服务研究提供变量选择框架。\n\n**要点**：模型由三类因素构成——倾向特征（predisposing：年龄、性别、教育、健康信念）、使能资源（enabling：收入、医保、机构可及性）、需要因素（need：自评健康、疾病状况），其中需要因素通常对利用的解释力最强。初始模型（1960s）后经多轮扩展，加入卫生系统、环境与健康行为/结局（BMH 版）。论文用法：按三因素组织自变量并分组报告，检验「需要主导」假设。\n\n**代码**（论文应用模板：三因素变量清单 + 回归）：\n\n```stata\n* Andersen 三因素变量清单（就诊行为研究示例）\n* 倾向特征 predisposing：age 年龄、female 性别(0/1)、edu 教育年限\n* 使能资源 enabling：lnincome 家庭收入对数、insured 是否参保(0/1)、dist 距最近机构(km)\n* 需要因素 need：sahealth 自评健康(1-5)、chronic 慢病种数\nlogit visit age female edu lnincome insured dist sahealth chronic, or\n```\n\n**报告要点**：理论框架部分画三因素模型图，逐项说明本研究变量与模型的对应关系；讨论中用「需要因素是否主导、使能因素是否受限」呼应模型预测并推导政策含义。\n\n**常见错误**：三因素不齐却声称「基于 Andersen 模型」；只列变量不说明归属与依据，模型沦为装饰。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F2",
    "name": "Grossman 健康需求模型",
    "category": "F",
    "content": "**适用**：把健康视为人力资本，分析健康投资的决定因素及健康与教育、收入、年龄的关系，用于健康不平等与老年健康研究。\n\n**要点**：健康既是消费品（健康本身产生效用）又是投资品（健康时间增加劳动供给）；健康存量随年龄折旧，个体通过医疗服务等投资维持存量，投资量由工资率、教育效率与医疗服务价格决定。论文用法：用模型说明健康方程为何必须控制收入、教育与年龄，并据此提出机制性假设（教育提高健康生产效率）。\n\n**代码**（论文应用模板：需求简化式示意）：\n\n```stata\n* 健康需求简化式：H = f(工资率 w, 教育 E, 年龄 t, 医疗服务价格 p)\n* 预期：教育、工资系数为正（效率与投资回报），年龄为负（折旧），价格为负\nreg health lnwage edu age age2 lnprice\n* 教育→健康的机制检验：加入知识/行为中介后看 edu 系数变化\nreg health edu age\nreg health edu age knowl healthbehavior\n```\n\n**报告要点**：在理论框架部分以「健康存量—投资」逻辑引出变量；讨论中解释教育与年龄的系数方向如何与折旧、效率机制一致。\n\n**常见错误**：与 Andersen 模型混用（前者是需求决定机制，后者是利用分析框架）；只做相关回归不交代机制。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F3",
    "name": "健康信念模型 HBM",
    "category": "F",
    "content": "**适用**：解释与干预个体预防性健康行为（疫苗接种、筛查、体检、遵医服药），为问卷维度设计与干预设计提供依据。\n\n**要点**：行为由六个构念驱动——感知易感性、感知严重性、感知收益、感知障碍、行动线索、自我效能（后两者为修订版加入）。论文用法：按维度编制 Likert 量表条目（每维度 ≥ 3 题，取均值入模），以预防行为为因变量做 logistic 回归或结构方程。\n\n**代码**（论文应用模板：维度变量清单）：\n\n```stata\n* HBM 维度量表（Likert 1-5，各维度多题取均值）与预防行为模型\n* perc_sus 感知易感性 | perc_sev 感知严重性 | perc_ben 感知收益 | perc_bar 感知障碍\n* cue 行动线索(0/1) | selfeff 自我效能\nlogit vaccinate perc_sus perc_sev perc_ben perc_bar cue selfeff, or\n```\n\n**报告要点**：方法部分报各维度的信度（Cronbach's α）与效度；讨论按维度解释作用方向，并把「感知障碍最显著」等结果转化为干预靶点。\n\n**常见错误**：每维度只设 1 题且不报信效度；用 HBM 解释治疗行为（HBM 针对预防行为，治疗行为宜用 TPB）。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F4",
    "name": "计划行为理论 TPB",
    "category": "F",
    "content": "**适用**：解释由行为意向驱动的健康行为（锻炼、戒烟、手卫生、用药依从），用于问卷编制与行为干预研究。\n\n**要点**：行为意向由态度、主观规范、知觉行为控制（PBC）三者决定；行为则由意向与 PBC 共同预测，且 PBC 可绕过意向直接作用于行为。论文用法：用结构方程模型（SEM）检验 TPB 全路径，报告路径系数与模型拟合指标。\n\n**代码**（论文应用模板：SEM 语法）：\n\n```stata\n* Stata sem：观测题项均值入模（单指标路径模型）\nsem (intention <- att sn pbc) (behavior <- intention pbc), standardized\nestat gof, stats(all)\n```\n\n```r",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F5",
    "name": "社会生态学模型",
    "category": "F",
    "content": "**适用**：识别个体、人际、社区/组织、政策多层影响因素，为多水平干预设计（慢病管理、控烟、体力活动促进）提供框架。\n\n**要点**：行为由嵌套层级共同决定——个体内（知识、信念）、人际（家庭、同伴）、组织/社区（学校、工作场所、社区资源）、政策（法规、环境）。论文用法：按层级组织变量，用多水平模型同时估计个体层与群体层效应，干预建议对应各层级。\n\n**代码**（论文应用模板：分层变量 + 多水平模型）：\n\n```stata\n* 个体层：age sex edu | 人际层：fam_support 家庭支持(0-3) | 社区层：park_density 绿地密度\n* 随机截距两水平模型（个体嵌套于社区）\nmixed behavior age sex edu fam_support park_density || community: , mle\n* 跨层交互：社区环境调节个体因素\nmixed behavior age sex edu fam_support c.fam_support#c.park_density || community: , mle\n```\n\n**报告要点**：理论框架部分画出层级图并标出本研究落在哪几层；讨论按层级解读系数（个体层 vs 群体层）并给出分层干预建议。\n\n**常见错误**：声称用生态学框架却把社区变量当个体变量做 OLS（忽视组内相关、易犯生态谬误）；层级划分与数据结构不匹配。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F6",
    "name": "健康公平与正义理论（Rawls / Sen 可行能力）",
    "category": "F",
    "content": "**适用**：为健康公平测量与卫生政策评价提供规范基础，用于健康不平等测量、医保待遇公平性与政策伦理分析。\n\n**要点**：Rawls 差别原则——社会经济不平等安排应使最不利者获益最大（maximin）；Sen 可行能力——评价的核心是「人实际能做到什么（functionings/capabilities）」而非资源占有。论文用法：理论部分明确采纳的正义观，并据此选择公平测量指标（如集中指数、公平缺口）与「有利变化」的判定标准。\n\n**代码**（论文应用模板：集中指数计算）：\n\n```stata\n* 集中指数 CI（便利回归法）：按收入排序后，2*σ²_rank*(h/μ) 对 rank 回归\nsort income\ngen rank = _n / _N\nquietly summarize h\nlocal mu = r(mean)\nquietly summarize rank\ngen lhs = 2 * r(Var) * (h / `mu')\nreg lhs rank\n* _b[rank] 即 CI（正=亲富，负=亲穷）；SSC 版：ssc install conindex; conindex h, rankvar(income)\n```\n\n**报告要点**：理论框架部分说明采纳 Rawls 或 Sen 的理由，并解释它如何决定公平指标选择与结果判定；讨论中回到所采纳的正义观检验结论。\n\n**常见错误**：公平测量指标与所宣称的正义理论脱节；把「公平」与「平等」混为一谈，未交代价值判断。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F7",
    "name": "健康社会决定因素框架（CSDH）",
    "category": "F",
    "content": "**适用**：分析结构性/中间决定因素如何沿社会经济梯度造成健康不平等，用于健康不平等机制与「将健康融入所有政策」研究。\n\n**要点**：因果链为「社会经济政治环境 → 社会经济地位（SES）→ 中间决定因素（物质条件、行为、生物、心理社会）→ 健康」，卫生系统本身也是社会决定因素。论文用法：把变量明确归入结构层与中间层，用分解方法（Oaxaca-Blinder、集中指数分解）量化各因素对健康不平等的贡献。\n\n**代码**（论文应用模板：分层变量 + 分解）：\n\n```stata\n* 结构层：ses 教育年限/收入/职业 | 中间层：housing 居住条件、smoke 吸烟、stress 心理压力 | 结局：health\n* Oaxaca-Blinder 分解：高/低 SES 组健康差距分解为「禀赋效应 + 系数效应」\nssc install oaxaca\noaxaca health housing smoke stress, by(ses_group)\n```\n\n**报告要点**：在理论框架中画出 CSDH 因果链并把变量标注到对应层级；讨论中报告各决定因素的贡献排序，指出政策切入点（结构层优先）。\n\n**常见错误**：把 CSDH 当普通回归变量清单，不做分解或机制分析；结构层与中间层混排、因果方向写反。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F8",
    "name": "委托代理与供方诱导需求（SID）",
    "category": "F",
    "content": "**适用**：解释医患信息不对称下供方诱导过度需求，用于卫生服务利用、过度医疗与医保控费研究。\n\n**要点**：医患信息不对称使医生同时充当患者代理人（决定需求）与服务提供者（获取收益），存在为自身利益诱导需求的动机；经典经验检验是「床位数/医生密度 → 利用量」正相关（Roemer 定律：造好的床位就会被填满）。论文用法：在控制需要与价格后，用供给资源变量的系数作为诱导需求的证据。\n\n**代码**（论文应用模板：简化估计式）：\n\n```stata\n* 供方诱导需求简化估计式：y = β0 + β1·beds + β2·need + β3·price + ε\n* β1 > 0 且在控制需要与价格后仍显著 → 诱导需求的证据\nreg visits beds_per1000 chronic lnprice insurance age\n* 稳健性：换供给指标（医生密度）重复\nreg visits doctors_per1000 chronic lnprice insurance age\n```\n\n**报告要点**：讨论中如实报告识别问题（供给与需求同时决定、地区未观测因素），说明缓解策略（工具变量、自然实验、滞后期）并谨慎表述因果。\n\n**常见错误**：把床位—利用正相关直接等同于诱导需求，忽视人口需要、价格与反向因果；不讨论内生性。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F9",
    "name": "市场失灵与政府干预（公共品 / 外部性 / 信息不对称）",
    "category": "F",
    "content": "**适用**：论证政府干预卫生领域的必要性与方式选择，用于卫生政策分析、医保制度设计与公共卫生筹资研究。\n\n**要点**：卫生领域存在公共品（传染病防控、健康信息，非竞争非排他）、正外部性（疫苗接种、抗生素合理使用，私人收益低于社会收益）、信息不对称（医患关系诱导需求；保险市场逆选择与道德风险），市场配置失灵为政府干预提供理由。论文用法：把每条政策建议对应到具体失灵类型，形成「失灵—干预—机制」论证链。\n\n**代码**（论文应用模板：失灵—干预论证链提纲）：\n\n```text\n论文应用模板：市场失灵 → 对应卫生服务 → 干预手段（论证链）\n· 公共品：传染病监测、控烟立法（非竞争、非排他）→ 政府提供或强制\n· 正外部性：疫苗接种（私人收益 < 社会收益，私人最优接种量低于社会最优）→ 补贴、免疫规划\n· 信息不对称①：医患（供方诱导需求）→ 支付方式改革、监管、信息公开\n· 信息不对称②：保险市场（逆选择、道德风险）→ 强制参保、共付与起付线设计\n```\n\n**报告要点**：在政策建议部分逐条注明依据的是哪类市场失灵及其证据；讨论政府干预本身可能的失灵（政府失灵）以保持分析平衡。\n\n**常见错误**：只罗列失灵类型不落到具体干预设计；不区分市场失灵与政府失灵，政策建议缺乏对应机制。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "F10",
    "name": "制度变迁与路径依赖（医改分析）",
    "category": "F",
    "content": "**适用**：解释医改政策演进、制度为何难以变革及政策扩散规律，用于卫生体制改革与医保制度变迁研究。\n\n**要点**：制度变迁受历史路径约束——初始制度选择通过规模报酬递增、学习效应、协调效应、适应性预期与利益集团锁定而自我强化；制度突破依赖关键节点或外部冲击。论文用法：以政策时间线证据识别锁定机制与变迁触发点，解释医改反复或试点—推广过程。\n\n**代码**（论文应用模板：制度变迁分析提纲）：\n\n```text\n论文应用模板：医改制度变迁分析提纲\n1) 锁定起点：初始制度安排（如公费/劳保/新农合分轨起点）与关键节点（2009 新医改）\n2) 自我强化机制：规模报酬递增、沉没成本、利益集团、适应性预期\n3) 锁定证据：政策时间线——改革方案反复收敛于既有路径（如碎片化格局持续）\n4) 变迁触发：外部冲击（疫情、财政压力）或内部矛盾积累 → 制度突破/渐进调整\n```\n\n**报告要点**：用时间线表格或图呈现制度沿革，逐条对应锁定机制；讨论说明本案例中路径依赖的强度与突破条件，避免历史决定论。\n\n**常见错误**：把路径依赖当「历史决定论」只叙述不分析机制；时间线证据与机制脱节，未说明变迁触发条件。\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "G1",
    "name": "扎根理论（Grounded Theory）",
    "category": "G",
    "content": "**适用**：从访谈/观察/文本材料中归纳建构理论（医患体验、政策执行过程、患者旅程）。\n\n**要点**：三级编码——开放式编码（贴标签）、主轴编码（范畴与关系）、选择性编码（核心范畴与故事线）；理论抽样与饱和（新资料不再产生新范畴）；备忘录贯穿全程。Strauss-Corbin 偏结构化程序，Charmaz 偏建构主义。质性分析以**人工编码为主**，软件（NVivo/MAXQDA）与文本挖掘只是辅助；报告遵循 COREQ。\n\n**代码**：R 文本辅助（词频与共现），编码本身仍由人完成：\n\n```r\nlibrary(quanteda)\ncorp <- corpus(data.frame(text = interviews$text, doc_id = interviews$id))\ndfm(corp, remove = stopwords(\"zh\"), remove_punct = TRUE) |>\n  textstat_frequency(n = 30)          # 高频词提示开放编码线索\n```\n\n**报告要点**：编码表（范畴-子范畴-原始引文）、理论模型图、饱和度说明、研究者立场。\n\n**常见错误**：只贴词频不做理论建构；样本量小却宣称饱和；混淆描述与理论。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "G2",
    "name": "结构方程模型（SEM）",
    "category": "G",
    "content": "**适用**：多个潜变量（如健康素养、自我效能）与其测量条目、结构路径的联合检验。\n\n**要点**：测量模型（CFA，效度：载荷、CR、AVE）与结构模型（路径）两步或联合估计；拟合指标 CFI/TLI ≥ 0.90、RMSEA < 0.08、SRMR < 0.08，修正指数仅用于理论允许的修正；样本量经验：每个自由参数 10–20 例。\n\n**代码**：\n\n```stata\n* Stata：三潜变量 SEM\nsem (HL -> x1 x2 x3) (SE -> y1 y2 y3) (AD -> z1 z2 z3) (HL -> SE) (SE -> AD), method(mlmv)\nestat gof\n```\n\n```r\n# R：lavaan 等价写法\nlibrary(lavaan)\nmodel <- ' HL =~ x1 + x2 + x3\n           SE =~ y1 + y2 + y3\n           AD =~ z1 + z2 + z3\n           SE ~ HL\n           AD ~ SE '\nfit <- sem(model, data = dat)\nfitMeasures(fit, c(\"cfi\",\"tli\",\"rmsea\",\"srmr\"))\n```\n\n**报告要点**：模型图、载荷与路径系数表（标准化）、拟合指标与判断标准、测量不变性（如做群组比较）。\n\n**常见错误**：把探索性结果当验证性模型报告；只看卡方显著性；无理论依据乱加修正路径。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "G3",
    "name": "多层 / 多重嵌套 SEM（Multilevel SEM）",
    "category": "G",
    "content": "**适用**：嵌套数据（患者—科室—医院、居民—社区）的潜变量与结构关系，区分组内与组间效应。\n\n**要点**：先检验 ICC 判断是否需要多层；组内/组间变异分解；样本量经验：组数至少 30–50，组内个体可少；随机截距与随机斜率设定要有理论依据。\n\n**代码**：\n\n```stata\n* Stata：gsem 多层（医院随机截距）\ngsem (HL -> x1 x2 x3) (SE -> y1 y2 y3) (SE <- HL M1[hospital]), vce(cluster hospital)\n```\n\n```r\n# R：lavaan 双层写法\nlibrary(lavaan)\nmodel2 <- '\n  level: 1\n    SEw =~ y1 + y2 + y3\n    SEw ~ HLw\n  level: 2\n    SEb =~ y1 + y2 + y3\n    SEb ~ HLb '\nfit2 <- sem(model2, data = dat, cluster = \"hospital\")\n```\n\n**报告要点**：ICC、组内与组间两层结果分表、层级说明与软件语法对照。\n\n**常见错误**：组数很少却做多层 SEM；把组间结论套到个体；忽略聚类稳健标准误。",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "G4",
    "name": "fsQCA 模糊集定性比较分析",
    "category": "G",
    "content": "**适用**：中小样本、多条路径达到同一结果（组态视角），如「基层能力建设成效」的条件组合：资源投入、人员配置、激励机制、信息化。\n\n**要点**：校准（直接法三锚点：完全隶属/交叉点/完全不隶属）；必要条件（一致性 ≥ 0.9）与充分条件（一致性 ≥ 0.75–0.8）；真值表与最小化得到复杂解/简约解/中间解；覆盖率（原始/唯一）；与回归互补：fsQCA 问「哪些组合」，回归问「净效应」。\n\n**代码**：\n\n```r\nlibrary(QCA)\ndat2 <- data.frame(成效 = calibrate(score, c(60, 75, 90)),\n                   资源 = calibrate(res, c(10, 20, 30)),\n                   人员 = calibrate(staff, c(5, 10, 15)),\n                   激励 = calibrate(inc, c(0.2, 0.5, 0.8)),\n                   信息化 = calibrate(it, c(1, 3, 5)))\ntt <- truthTable(dat2, outcome = \"成效\", n.cut = 1, incl.cut = 0.8)\nminimize(tt, include = \"?\")            # 中间解\n```\n\n```stata\n* Stata：SSC 的 fuzzy 包做校准等（以 help fuzzy 为准）\nssc install fuzzy\nfzcalc zy, low(60) cross(75) high(90)\n```\n\n**报告要点**：校准锚点与理由、真值表、各解的组态表、一致性与覆盖率、稳健性（锚点微调/阈值变动）。\n\n**常见错误**：校准锚点拍脑袋不给理由；把组态解当净效应做因果推断；样本与条件数比例失衡。\n\n> 以上 4 条的完整教程（含完整模拟数据与更多代码）见 **sem-qca-qualitative-skill.md**。\n\n\n---",
    "source": "skills/references/methods-54.md"
  },
  {
    "id": "A9",
    "name": "复杂抽样与调查权重",
    "category": "A",
    "content": "**适用**：分层整群调查的总体估计；区分横断面与纵向权重。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [复杂抽样与调查权重专题](longitudinal-public-data-skill.md)。\n\n**报告要点**：抽样层级、PSU、分层、权重版本、目标总体和方差估计。\n\n**常见错误**：直接把全国调查当简单随机样本，或把调查权重与因果权重混用。",
    "source": "guides/longitudinal-public-data-skill.html"
  },
  {
    "id": "B11",
    "name": "一致性评价：Kappa / ICC",
    "category": "B",
    "content": "**适用**：名义、等级或连续评分的评审者一致性；与准确性分开。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [一致性评价：Kappa / ICC专题](medical-ai-evaluation-skill.md)。\n\n**报告要点**：评分者结构、量表类型、Kappa/ICC定义、区间及类别分布。\n\n**常见错误**：用相关性代替一致性，或将高一致性等同于高准确性。",
    "source": "guides/medical-ai-evaluation-skill.html"
  },
  {
    "id": "B12",
    "name": "竞争风险与累积发生率",
    "category": "B",
    "content": "**适用**：死亡等事件阻止目标结局发生时，估计原因别风险或实际累积风险。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [竞争风险与累积发生率专题](longitudinal-public-data-skill.md)。\n\n**报告要点**：事件定义、竞争事件、估计目标、时间点与绝对风险。\n\n**常见错误**：把竞争死亡作为无信息删失，直接用1-KM解释实际发生风险。",
    "source": "guides/longitudinal-public-data-skill.html"
  },
  {
    "id": "D9",
    "name": "目标试验模拟 TTE",
    "category": "D",
    "content": "**适用**：把观察性数据分析对应到明确的假想试验协议。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [目标试验模拟 TTE专题](target-trial-emulation-skill.md)。\n\n**报告要点**：七要素协议、time zero、estimand、识别假设、诊断及TARGET。\n\n**常见错误**：资格、治疗分配和随访起点错位，或用未来依从性定义基线治疗组。",
    "source": "guides/target-trial-emulation-skill.html"
  },
  {
    "id": "D10",
    "name": "IPW与边际结构模型 MSM",
    "category": "D",
    "content": "**适用**：基线或时间变化治疗的加权因果估计。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [IPW与边际结构模型 MSM专题](advanced-causal-inference-skill.md)。\n\n**报告要点**：概率模型、稳定化、截尾、平衡、有效样本量与删失机制。\n\n**常见错误**：忽略极端权重、正值性或受既往治疗影响的时间变化混杂。",
    "source": "guides/advanced-causal-inference-skill.html"
  },
  {
    "id": "D11",
    "name": "g-formula与双稳健估计",
    "category": "D",
    "content": "**适用**：按指定干预标准化结局，或结合治疗和结局模型估计目标效应。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [g-formula与双稳健估计专题](advanced-causal-inference-skill.md)。\n\n**报告要点**：目标人群、干预策略、模型设定、标准化流程和推断方法。\n\n**常见错误**：把双稳健误解为对未测量混杂也稳健；不核对两模型的假设。",
    "source": "guides/advanced-causal-inference-skill.html"
  },
  {
    "id": "D12",
    "name": "双重机器学习 DML",
    "category": "D",
    "content": "**适用**：高维或非线性混杂下，利用正交得分与交叉拟合估计因果参数。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [双重机器学习 DML专题](advanced-causal-inference-skill.md)。\n\n**报告要点**：得分/模型、估计目标、折分单位、学习器、调参与聚类推断。\n\n**常见错误**：把高预测准确率视为因果识别，或在测试折调参导致信息泄漏。",
    "source": "guides/advanced-causal-inference-skill.html"
  },
  {
    "id": "D13",
    "name": "合成双重差分 SDID",
    "category": "D",
    "content": "**适用**：政策面板中同时构造单位权重与时间权重。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [合成双重差分 SDID专题](advanced-causal-inference-skill.md)。\n\n**报告要点**：供体池、处理日期、政策前拟合、权重、溢出及少簇推断。\n\n**常见错误**：忽略供体受政策影响，或把交错处理直接套入同时处理的块状实现。",
    "source": "guides/advanced-causal-inference-skill.html"
  },
  {
    "id": "D14",
    "name": "定量偏倚与敏感性分析",
    "category": "D",
    "content": "**适用**：评估未测量混杂、误分类和选择机制对主要结论的影响。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [定量偏倚与敏感性分析专题](advanced-causal-inference-skill.md)。\n\n**报告要点**：偏倚机制、参数来源、情景范围、效应变化及剩余局限。\n\n**常见错误**：把敏感性摘要当作不存在偏倚的证据，或随意选择参数范围。",
    "source": "guides/advanced-causal-inference-skill.html"
  },
  {
    "id": "E7",
    "name": "纵向轨迹与潜类别",
    "category": "E",
    "content": "**适用**：识别重复测量数据中的不同变化模式。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [纵向轨迹与潜类别专题](longitudinal-public-data-skill.md)。\n\n**报告要点**：时间编码、模型/类数选择、类别大小、后验概率及失访处理。\n\n**常见错误**：把统计类别当自然人群，忽略后验分类不确定性和类数稳定性。",
    "source": "guides/longitudinal-public-data-skill.html"
  },
  {
    "id": "E8",
    "name": "预测验证、校准与净获益",
    "category": "E",
    "content": "**适用**：从内部/外部验证判断模型判别、风险准确性和决策价值。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [预测验证、校准与净获益专题](medical-ai-evaluation-skill.md)。\n\n**报告要点**：独立验证设计、校准截距/斜率、区间、阈值及净获益比较。\n\n**常见错误**：仅凭训练集AUC或SHAP图宣称模型临床可用。",
    "source": "guides/medical-ai-evaluation-skill.html"
  },
  {
    "id": "F11",
    "name": "实施科学：CFIR / RE-AIM",
    "category": "F",
    "content": "**适用**：解释干预为何难落地，并评价触达、实施与维持。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [实施科学：CFIR / RE-AIM专题](implementation-equity-skill.md)。\n\n**报告要点**：框架版本、构念定义、分母、层级、时间窗与弱势群体触达。\n\n**常见错误**：堆叠框架名称而没有构念测量，把实施结局与健康结局混为一谈。",
    "source": "guides/implementation-equity-skill.html"
  },
  {
    "id": "H1",
    "name": "系统评价与证据分级",
    "category": "H",
    "content": "**适用**：对明确研究问题系统检索、筛选、评价并综合证据。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [系统评价与证据分级专题](research-workflow-skill.md)。\n\n**报告要点**：方案、检索式/日期、双人流程、排除原因、偏倚与确定性。\n\n**常见错误**：只有检索和文章汇总，没有预设标准、偏倚评价或排除记录。",
    "source": "guides/research-workflow-skill.html"
  },
  {
    "id": "H2",
    "name": "成对 Meta 分析",
    "category": "H",
    "content": "**适用**：对可合并的同类比较与结局估计综合效应。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [成对 Meta 分析专题](meta-analysis-skill.md)。\n\n**报告要点**：效应方向、模型、τ²、区间、研究设计与异质性解释。\n\n**常见错误**：混合不相容效应尺度，按I²阈值机械选择模型。",
    "source": "guides/meta-analysis-skill.html"
  },
  {
    "id": "H3",
    "name": "网状 Meta 分析 NMA",
    "category": "H",
    "content": "**适用**：在连通且可比的研究网络中比较三个及以上干预。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [网状 Meta 分析 NMA专题](network-meta-analysis-skill.md)。\n\n**报告要点**：节点、网络、多臂相关、直接间接证据、诊断与CINeMA。\n\n**常见错误**：缺少传递性论证，仅凭排序宣布最佳干预。",
    "source": "guides/network-meta-analysis-skill.html"
  },
  {
    "id": "H4",
    "name": "meta-meta / 伞状综述",
    "category": "H",
    "content": "**适用**：以系统综述为单位绘制证据版图并解释结论差异。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [meta-meta / 伞状综述专题](umbrella-review-skill.md)。\n\n**报告要点**：综述家族、研究重叠矩阵、CCA、方法质量与重叠处理。\n\n**常见错误**：忽略原始研究重复，直接将多个Meta合并效应再次独立加权。",
    "source": "guides/umbrella-review-skill.html"
  },
  {
    "id": "H5",
    "name": "范围综述 Scoping review",
    "category": "H",
    "content": "**适用**：梳理概念、研究类型、测量方法和证据缺口。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [范围综述 Scoping review专题](research-workflow-skill.md)。\n\n**报告要点**：问题框架、检索范围、筛选、资料制图与PRISMA-ScR。\n\n**常见错误**：把非系统的文献罗列称范围综述，或据研究数量断言干预有效。",
    "source": "guides/research-workflow-skill.html"
  },
  {
    "id": "I1",
    "name": "蒙特卡洛方法学模拟",
    "category": "I",
    "content": "**适用**：在已知真值下评估估计方法的偏倚、覆盖与效能。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [蒙特卡洛方法学模拟专题](monte-carlo-simulation-skill.md)。\n\n**报告要点**：ADEMP、场景、种子、重复次数依据、性能及MC误差。\n\n**常见错误**：不报告MCSE与失败率，或只选择对方法有利的数据生成机制。",
    "source": "guides/monte-carlo-simulation-skill.html"
  },
  {
    "id": "I2",
    "name": "概率敏感性分析 PSA",
    "category": "I",
    "content": "**适用**：传播模型参数不确定性，估计成本效果决策的不确定性。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [概率敏感性分析 PSA专题](monte-carlo-simulation-skill.md)。\n\n**报告要点**：联合分布、参数依据、相关性、阈值、INMB与CEAC。\n\n**常见错误**：破坏参数相关性，把成本效果概率当临床有效概率。",
    "source": "guides/monte-carlo-simulation-skill.html"
  },
  {
    "id": "I3",
    "name": "个体微观模拟",
    "category": "I",
    "content": "**适用**：模拟具有异质风险和历史依赖的个体路径。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [个体微观模拟专题](microsimulation-studio.md)。\n\n**报告要点**：个体属性、事件风险、路径记忆、校准、验证与随机数。\n\n**常见错误**：混淆个体随机变异与参数不确定性，忽略模拟噪声收敛。\n\n**实现**：base R四状态教学脚本已运行并通过29项检查，Stata未执行；见完整技能与支持脚本。",
    "source": "guides/microsimulation-studio.html"
  },
  {
    "id": "I4",
    "name": "离散事件模拟 DES",
    "category": "I",
    "content": "**适用**：分析到达、排队、床位与转诊等资源受限系统。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [离散事件模拟 DES专题](simulation-models-skill.md)。\n\n**报告要点**：实体、事件、队列纪律、分布、容量、重复与验证。\n\n**常见错误**：忽略到达率、容量、暖机期或重复运行，仅展示单次输出。",
    "source": "guides/simulation-models-skill.html"
  },
  {
    "id": "I5",
    "name": "系统动力学 SD",
    "category": "I",
    "content": "**适用**：刻画存量、流量、反馈与延迟驱动的系统变化。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [系统动力学 SD专题](simulation-models-skill.md)。\n\n**报告要点**：边界、存量流量方程、延迟、参数、校准与情景。\n\n**常见错误**：仅画因果回路图便声称完成定量模拟，或忽视量纲一致。",
    "source": "guides/simulation-models-skill.html"
  },
  {
    "id": "I6",
    "name": "多主体模型 ABM",
    "category": "I",
    "content": "**适用**：通过异质主体互动和适应解释系统涌现。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [多主体模型 ABM专题](simulation-models-skill.md)。\n\n**报告要点**：主体、环境、决策与互动、调度、参数来源及验证。\n\n**常见错误**：把AI助手称为仿真主体，或用无依据行为规则预设政策效果。",
    "source": "guides/simulation-models-skill.html"
  },
  {
    "id": "J1",
    "name": "三维政策框架与 PMC",
    "category": "J",
    "content": "**适用**：按可复核codebook整理政策工具、对象、目标和内容覆盖。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [三维政策框架与 PMC专题](policy-text-analysis-skill.md)。\n\n**报告要点**：政策范围、单位、指标依据、编码规则、权重与原文定位。\n\n**常见错误**：把文件得分直接解释为政策执行或健康改善。",
    "source": "guides/policy-text-analysis-skill.html"
  },
  {
    "id": "J2",
    "name": "LDA / BERTopic 主题分析",
    "category": "J",
    "content": "**适用**：探索政策语料中的主题及其变化。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [LDA / BERTopic 主题分析专题](policy-text-analysis-skill.md)。\n\n**报告要点**：语料、预处理、词典/嵌入、参数、主题稳定性及代表文本。\n\n**常见错误**：只看主题词命名，不回读原文或检验参数/主题数稳定性。",
    "source": "guides/policy-text-analysis-skill.html"
  },
  {
    "id": "J3",
    "name": "LLM辅助编码与关系抽取",
    "category": "J",
    "content": "**适用**：把政策或病历条款转成有证据定位的结构化变量。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [LLM辅助编码与关系抽取专题](policy-text-analysis-skill.md)。\n\n**报告要点**：codebook、人工仲裁、模型/prompt版本、测试、错误与修订率。\n\n**常见错误**：无人工金标准、无独立测试，用模型自报信心代替评价。",
    "source": "guides/policy-text-analysis-skill.html"
  },
  {
    "id": "J4",
    "name": "医疗大模型配对评价",
    "category": "J",
    "content": "**适用**：比较模型与人工的准确性、安全性、时间和实际决策表现。\n\n**逻辑与操作**：明确研究单位与目标，按专题完成设计、估计与验证。详细流程和示例见 [医疗大模型配对评价专题](medical-ai-evaluation-skill.md)。\n\n**报告要点**：病例与参考标准、盲评、配对/聚类、区间、失败及亚组。\n\n**常见错误**：把同一病例多轮回答当独立样本，忽略拒答或严重错误。",
    "source": "guides/medical-ai-evaluation-skill.html"
  },
  {
    "id": "B13",
    "name": "广义线性模型 GLM",
    "category": "B",
    "content": "**适用**：依据结局支持集与均值-方差关系选择分布和链接。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [广义线性模型 GLM专题](econometric-modeling-skill.md)。\n\n**报告要点**：分布、链接、支持集、方差、诊断、边际预测与区间。\n\n**常见错误**：对含零费用直接用Gamma，或把链接尺度系数当原尺度差异。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "B14",
    "name": "费用两部模型",
    "category": "B",
    "content": "**适用**：分别估计发生费用概率与正费用均值，再合成人群费用。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [费用两部模型专题](econometric-modeling-skill.md)。\n\n**报告要点**：两部分样本/模型、合成预测、区间及因果假设。\n\n**常见错误**：只报告正费用模型，忽略使用概率和整个估计流程的不确定性。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "B15",
    "name": "面板 FE / RE / CRE",
    "category": "B",
    "content": "**适用**：区分组内变化、组间差异及个体效应与协变量的关系。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [面板 FE / RE / CRE专题](econometric-modeling-skill.md)。\n\n**报告要点**：单位/时间效应、组内变异、假设、聚类层级与动态偏误。\n\n**常见错误**：把FE当作全部内生性的解决方案，或仅凭Hausman选择模型。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "B16",
    "name": "分位数回归",
    "category": "B",
    "content": "**适用**：研究条件分布不同位置的费用或健康结局关联。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [分位数回归专题](econometric-modeling-skill.md)。\n\n**报告要点**：条件/无条件目标、分位点、区间和模型支持。\n\n**常见错误**：把条件分位数系数直接解释为同一群个体的因果效应。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "B17",
    "name": "零膨胀与 hurdle 计数模型",
    "category": "B",
    "content": "**适用**：依据零产生机制区分结构性零与计数过程。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [零膨胀与 hurdle 计数模型专题](econometric-modeling-skill.md)。\n\n**报告要点**：零机制、两部分模型、过度离散、拟合和边际效应。\n\n**常见错误**：仅因零很多就选择零膨胀，不核对两过程机制与可识别性。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "B18",
    "name": "空间计量与溢出",
    "category": "B",
    "content": "**适用**：分析地区间依赖并在合适模型中解释直接/间接效应。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [空间计量与溢出专题](econometric-modeling-skill.md)。\n\n**报告要点**：空间权重、尺度、依赖结构、直接/间接效应与敏感性。\n\n**常见错误**：把空间自相关直接当作政策溢出因果证据。",
    "source": "guides/econometric-modeling-skill.html"
  },
  {
    "id": "D15",
    "name": "交错 DID / 分批处理",
    "category": "D",
    "content": "**适用**：按首次政策批次估计ATT(g,t)并聚合动态与总体效应。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [交错 DID / 分批处理专题](staggered-did-skill.md)。\n\n**报告要点**：处理批次、对照、预期、支持、聚合权重、置信带与聚类。\n\n**常见错误**：异质效应下直接套传统TWFE，或把已处理单位当合格对照。",
    "source": "guides/staggered-did-skill.html"
  },
  {
    "id": "D16",
    "name": "熵平衡与重叠权重",
    "category": "D",
    "content": "**适用**：通过矩约束或强调重叠构建可比样本，明确新的目标总体。\n\n**逻辑与操作**：先定义目标与数据单位，再核对假设、执行诊断并解释结果。完整步骤、代码和边界见 [熵平衡与重叠权重专题](propensity-score-skill.md)。\n\n**报告要点**：目标、约束/权重公式、重叠、有效样本量与推断。\n\n**常见错误**：只看平衡不看权重集中，或把ATO结果仍称原总体ATE。",
    "source": "guides/propensity-score-skill.html"
  },
  {
    "id": "A10",
    "name": "模拟与标准化病人 SP / USP",
    "category": "A",
    "content": "**适用**：用训练过的扮演者在统一情境下测量服务过程，区分教学考核与未预先告知的质量研究。\n\n**准备**：先明确场景、剧本、评分依据、伦理安全、机构抽样、重复访问与识别记录。\n\n**代码**与完整说明：\n\n---\nname: standardized-patient\ndescription: 模拟/标准化病人SP与未预先告知标准化病人USP：教学考核、医疗服务质量测量、剧本与评分表、训练一致性、伦理安全、抽样与机构聚类分析，配R/Stata教学代码。\n---\n\n# 模拟与标准化病人：把服务过程变成可比较的证据\n\n标准化病人（standardized patient, SP）通常由经过训练的人按剧本稳定呈现病史、行为和反应；模拟病人（simulated patient）在文献中有时与之互用。这里强调可重复呈现和测量一致性。它不是 Markov 微观模拟，也不是让大模型生成“真实患者”。\n\n## 1. 先选研究用途\n\n| 用途 | 主要问题 | 能测量什么 | 不能直接声称什么 |\n|---|---|---|---|\n| 教学、沟通训练与OSCE | 学员在统一情境下如何表现 | 问诊、沟通、决策和程序表现；按站点评分 | 考场表现等于长期真实临床表现 |\n| 告知式服务评估 | 机构在知道评估存在时怎样服务 | 统一情境的质量与流程 | 不存在观察反应 |\n| 未预先告知标准化病人 USP | 常规服务中的实际行为如何 | 适当处置、询问检查、转诊、费用及沟通 | 覆盖所有疾病、重症体征和后续健康结局 |\n| 标准化病例/临床情境问卷 | 医务人员“知道该怎么做” | 知识或陈述决策 | 与USP测得的实际行为完全相同 |\n\nASPE 标准主要面向人类模拟教学与评估；USP 质量研究还需研究方案、抽样、识别与安全管理。先确定对象、场景、主要结局、比较与时间窗，再选是否适合 SP。[S1–S3]\n\n## 2. 剧本与评分表怎样制作\n\n选择可安全、可信地呈现且与研究问题相关的场景。明确开场陈述、只有被问到才提供的信息、允许的标准回答、情绪与行为、不可模拟的体征，以及何时停止访问。临床处置评分应由相应专业人员依据适用指南制定，注明指南日期与评分规则；本站不提供自行施行检查或治疗的脚本。\n\n评分表逐项定义“应询问/应检查/应处置/不适当操作”、信息来源、缺失、不适用和分母。主要结局应预先规定，例如符合预定处置标准的访问比例；不能看完结果才挑最显著条目。复杂综合分数需说明权重和测量依据，不能自动视为已验证量表。\n\n先做小规模可行性试演：对同一剧本重复训练，检查扮演者间与扮演者内一致性、评分者一致性及回忆遗漏。二分类可考虑一致率与κ，连续分数按设计考虑ICC；同时查看分布，因为高一致率与低κ可能并存。\n\n## 3. 抽样、分配与访视安排\n\n1. 写清机构抽样框、纳排、地区与服务类型。便利样本不代表全国质量。\n2. 若评价干预，明确随机化或政策分配单位；机构层分配不能把每次访问当作独立随机单位。\n3. 记录医生、机构、扮演者、剧本、访问时间与重复访问关系。角色和案例尽量在比较组平衡；同一医生重复访问及跨机构SP可形成多层或交叉结构。\n4. 事先做功效规划：主要结局、预期差异、机构数、每机构访问数、ICC、病例构成与不可完成比例。增加同一机构访问数不能无限替代增加机构数。\n5. 在许可范围内尽快填写结构化访问记录；若使用音频等材料，必须与批准方案、访问授权和保存期限一致。\n\n## 4. 伦理与安全是设计条件\n\n未预先告知不等于不需伦理审查。医务人员同意的取得方式或豁免、事后说明、隐私与声誉保护、对正常服务的干扰，须由相应伦理审查与机构安排明确。授权或豁免只能由适用程序认定，不能由本工具自动决定。[S1–S3]\n\n预设不得接受的侵入性检查、真实用药与危险情境及退出流程；出现超出模拟范围的情况应中止并按批准的安全流程处理。保护SP的身体与情绪安全，安排训练、支持和复盘。公开结果以适当聚合形式呈现，不发布可识别的个人访问记录。\n\n## 5. 数据字典与质量核查\n\n[下载SP字段模板](../data/standardized-patient-data-dictionary.csv)。模板是空白字段说明，不含患者或医务人员记录。\n\n核心字段：匿名机构/医生/访问/扮演者/案例ID，组别与实际分配，访问时间，各评分项目及分母，主要处置结局，费用，是否被识别，剧本偏离，不完整访问及缺失原因。\n\n保留访视失败和识别记录。识别可能与机构、剧本或干预有关；仅删除“被识别”样本可能引入选择偏倚。主分析与敏感性分析的对象、分母和排除标准均提前规定，并报告各阶段数量。[S2]\n\n## 6. 分析如何排布\n\n- 先描述抽样、完成率、案例分布、识别比例和评分缺失。\n- 二元结局报告比例与区间，并明确风险差、风险比或OR；不把OR直接解释成风险比。\n- 机构随机研究按分配单位处理相关性。脚本/演员固定或随机、平衡程度与目标总体决定采用机构汇总、多层或交叉模型。\n- 横断面USP比较主要支持描述与关联；只有满足随机或准实验识别条件才能作相应因果解释。\n- 观察真实患者资料与SP资料回答不同问题：病例标准化有利于比较，却不代表实际患者疾病谱与长期结局。[S2–S3]\n\n下方例子为36个随机分组机构，每机构3个案例×4位扮演者，共432次模拟访问。案例和扮演者在机构间完全平衡，采用等机构权重的组间比较；推断限于这组案例和扮演者。R脚本已在R 4.6.1运行；Stata为未执行教学模板。模拟结果不保证显著，也不是任何真实政策效果。\n\n## 7. 与实施科学怎样联用\n\n例如评估基层指南落实：同一临床服务对应两种实施支持策略，机构分组，USP评估处置过程质量，另用实施数据衡量采纳、忠实度、成本与维持。SP评分属于服务过程质量，不能替代全部实施结局或患者健康结局。明确盲法、识别风险、策略污染及机构聚类，再判断是否适合 hybrid 设计。[实施科学路线](implementation-science-skill.md)\n\n## 8. 最终交付清单\n\n研究问题与估计目标、剧本版本、评分依据、抽样与功效方案、伦理与安全文件、训练及一致性记录、字段字典、访问流程图、分析计划、可复现代码和限制说明。\n\n可复制提问：**“我想用标准化病人比较基层服务质量。请帮我定义主要结局、剧本、抽样、机构相关性、识别记录和R分析方案。”**\n\n## 核对来源\n\n- S1. Lewis KL 等，2017，ASPE Standards of Best Practice。[官方全文](https://www.aspeducators.org/assets/docs/ASPE%20SOBP%202.7.20.pdf) · [DOI](https://doi.org/10.1186/s41077-017-0043-4)。使用范围：训练、安全、情境与质量保证。\n- S2. King JJC 等，2019，How to do (or not to do)… using the standardized patient method to measure clinical quality of care in LMIC health facilities。[PubMed](https://pubmed.ncbi.nlm.nih.gov/31424494/) · [DOI](https://doi.org/10.1093/heapol/czz078)。使用范围：USP方法与测量边界。\n- S3. Assessing the quality of primary healthcare in seven Chinese provinces with unannounced standardised patients: protocol of a cross-sectional survey，2019。[BMJ Open](https://bmjopen.bmj.com/content/9/2/e023997)。这是研究方案，不能当作研究结果。\n\n题名、DOI、期刊与作者核对日期：2026-10-24。[来源登记](../data/sp-implementation-sources.json)。本站为原创方法导读，不复制论文全文。\n\n<!-- BEGIN TEACHING CODE -->\n\n## 教学代码：可以单独下载，也可展开复制\n\n### 机构层级分析 · R\n\n[下载脚本](scripts/standardized_patient_demo.R)\n\n```r\n# Original teaching simulation. No patient data and no clinical recommendations.\n# Balanced cases/actors at every clinic; inference is conditional on this set.\nset.seed(20261024)\nclinics <- data.frame(clinic_id=1:36, arm=sample(rep(0:1, each=18)))\nvisits <- merge(clinics, expand.grid(case_id=1:3, actor_id=1:4))\nclinic_effect <- rnorm(36, 0, 0.45)\np <- plogis(-0.55 + 0.5*visits$arm + clinic_effect[visits$clinic_id] +\n             c(-0.2,0,0.2)[visits$case_id])\nvisits$correct <- rbinom(nrow(visits), 1, p)\nvisits$detected <- rbinom(nrow(visits), 1, 0.07)\nstopifnot(nrow(visits)==432, all(table(visits$clinic_id)==12))\nclinic_scores <- aggregate(correct ~ clinic_id + arm, visits, mean)\n# Clinic allocation means visits are not independent trial units.\ncomparison <- t.test(clinic_scores$correct[clinic_scores$arm==1],\n                     clinic_scores$correct[clinic_scores$arm==0])\nrd <- unname(diff(rev(comparison$estimate)))\nstopifnot(abs(rd - (mean(clinic_scores$correct[clinic_scores$arm==1]) -\n                   mean(clinic_scores$correct[clinic_scores$arm==0]))) < 1e-12)\nprint(data.frame(estimand='Equal-clinic mean risk difference (arm 1 minus 0)',\n                 estimate=rd, lower=comparison$conf.int[1], upper=comparison$conf.int[2]))\n# Detection is reported, not silently deleted; exclusions may select on treatment.\nprint(aggregate(detected ~ arm, visits, mean))\nprint(aggregate(correct ~ arm + case_id, visits, mean))\n# For observational samples these contrasts are descriptive, not causal effects.\n# Unbalanced scripts/actors, few clusters, or cross-classified random actors need\n# a prespecified adjustment model and suitable uncertainty estimation.\nstopifnot(all(visits$correct %in% 0:1), all(is.finite(comparison$conf.int)))\ncat('PASS: 432 visits; 36 randomized clinics; balanced scripts; finite clinic-level interval\\n')\n```\n\n### 机构层级分析 · STATA\n\n[下载脚本](scripts/standardized_patient_demo.do)\n\n```stata\n* Original teaching simulation; not run in Stata in this release.\nclear all\nset seed 20261024\nset obs 36\ngen clinic_id = _n\ngen allocation_order = runiform()\nsort allocation_order\ngen arm = (_n > 18)\ngen clinic_effect = rnormal(0, .45)\nexpand 12\nbysort clinic_id: gen visit = _n\ngen case_id = mod(visit-1,3)+1\ngen actor_id = ceil(visit/3)\ngen p = invlogit(-.55 + .5*arm + clinic_effect + .2*(case_id-2))\ngen correct = (runiform() < p)\ngen detected = (runiform() < .07)\nassert inlist(correct,0,1)\nassert _N == 432\ntabstat detected, by(arm) stat(mean n)\n* Equal clinic weighting; case and actor assignments are balanced by construction.\npreserve\ncollapse (mean) correct, by(clinic_id arm)\nassert _N == 36\nregress correct i.arm, vce(robust)\nlincom 1.arm\nrestore\n* The individual-visit model is an alternative, not an independent replication.\nregress correct i.arm i.case_id i.actor_id, vce(cluster clinic_id)\nlincom 1.arm\n* Few clusters, unbalanced case mixes and observational allocation require\n* separate design-based decisions. Do not delete detected visits without a plan.\n```\n",
    "source": "guides/standardized-patient-skill.html"
  },
  {
    "id": "F12",
    "name": "实施科学：从框架到研究设计",
    "category": "F",
    "content": "**适用**：区分服务干预与实施策略，把障碍、策略、实施结局、健康结局和持续使用连接到具体设计。\n\n**准备**：先明确服务证据、策略执行者、主要结局、层级、分母与时间窗；框架不能代替识别设计。\n\n**代码**与完整说明：\n\n---\nname: implementation-science\ndescription: 实施科学完整路线：临床/服务干预与实施策略分离，CFIR、RE-AIM、Proctor实施结局、ERIC、hybrid 1/2/3、混合方法、分母与层级、R/Stata教学分析和StaRI报告。\n---\n\n# 实施科学：让有证据的服务在真实场景中被采用和持续使用\n\n先区分**要落实的服务/干预**（innovation/intervention）与**帮助它落实的实施策略**（strategy）。例如，“规范的慢病随访服务”与“为实施该服务提供培训、反馈和促进支持”是两条不同的线。研究应同时明确谁采用、如何交付、为何受阻、产生何种结果。[I1–I4]\n\n## 1. 把研究问题写成可执行句子\n\n在【场景与机构】中，为【人群】落实【已有证据的服务】时，针对【已识别障碍】，由【执行者】实施【策略及剂量】，相对于【比较条件】，在【时间窗】内改善【主要实施结局】，并观察【服务或健康结局】。\n\n先评估服务本身的证据与可实施性，不把“有效性未知”隐藏成单纯推广问题。研究不是将多个框架名词拼接；框架服务于具体问题、构念和数据。\n\n## 2. 框架按任务分工\n\n| 任务 | 候选工具 | 用法与边界 |\n|---|---|---|\n| 解释障碍与促进因素 | 更新版CFIR（2022）；2025使用指南 | 按问题选构念，建立访谈/观察与分析对应；不是全部条目强制打分 |\n| 规划和评价真实世界覆盖 | RE-AIM | 分开触达、效果、采纳、实施、维持；逐维指定层级、分母与时间 |\n| 定义实施成效 | Proctor实施结局 | 区分实施、服务与健康结局；不把患者满意度当所有实施成功 |\n| 具体说明实施支持措施 | ERIC策略术语 | 明确谁对谁做什么、何时、多频繁及预期机制；不是看到障碍就机械配策略 |\n| 组织结果报告 | StaRI | 服务干预与实施策略分两条线报告；另按具体研究设计核对报告规范 |\n\nCFIR常用于解释决定因素，RE-AIM常用于规划与评价；两者可互补，但不是同一套量表。构念名称本身不会产生因果识别。[I1–I3、I6–I8]\n\n## 3. 结局、分母与时间窗\n\nProctor等区分可接受性、采纳、适切性、可行性、忠实度、实施成本、渗透/整合和可持续性。分别定义测量对象与操作化指标；临床效果和服务系统结果单独记录。[I4]\n\n| 指标例子 | 分子 | 分母 | 注意 |\n|---|---|---|---|\n| 触达 | 实际接受服务的符合条件者 | 目标范围内全部符合条件者 | 说明招募、拒绝和排除；还要看代表性 |\n| 机构采纳 | 开始采用服务的机构 | 纳入目标的符合条件机构 | 机构层和工作人员层不要混算 |\n| 忠实度 | 按规定完成核心环节的服务次数 | 应执行这些环节的服务次数 | 区分适应性调整与偏离；不适用不是未完成 |\n| 维持 | 规定随访时点仍运行的机构 | 按方案定义的初始或已采纳机构 | 明确时点和分母，不能临时替换 |\n| 单位实施成本 | 明确视角下的实施资源成本 | 对应触达者/采纳机构数 | 分开服务成本与实施支持成本，注明币种和价格年 |\n\n分母为0时显示缺失并说明原因，不能直接记为0%。机构平均比例与“总分子/总分母”是不同估计目标；两者不能混报。可接受性等潜变量如使用量表，需核对授权、译本、测量性质及本场景适用性，不能把自编问题标成已验证量表。\n\n## 4. 选择设计与hybrid类型\n\n| 类型 | 主要关注 | 同时关注 |\n|---|---|---|\n| Hybrid 1 | 检验服务干预有效性 | 探索实施条件与障碍 |\n| Hybrid 2 | 服务干预与实施策略的双重研究目标 | 两类目标的样本量、结局和比较均须说明 |\n| Hybrid 3 | 检验实施策略对实施结局的作用 | 观察服务/健康效果 |\n\n类型描述研究目标的侧重，不能替代具体的随机、准实验或观察设计。根据已有服务证据、场景差异、污染和可行性选择个体/整群随机、分阶段推行或适当准实验；阶梯楔形设计仍要处理日历时间和机构相关性，不能等同简单前后比较。[I5]\n\n样本量以主要目标和分配层级计算，考虑ICC、机构大小差异、双重主要结局与缺失；不能把个体数当成独立机构数。\n\n## 5. 实施策略与机制表\n\n一行一个策略：执行者 → 具体行动 → 对象 → 频率/时长 → 对应障碍 → 预期机制 → 近端实施结局 → 远端服务/健康结局。区分计划剂量与实际执行，记录适应性修改的时间、理由和决定者。[I6]\n\n访谈可按选定CFIR构念设计，同时保留开放编码与反例。建立联合展示：构念、定性证据、量化指标、相符/不符、替代解释。不能用访谈提及次数直接估计人群比例，也不能仅凭显著路径判定机制成立。\n\n## 6. 数据与分析\n\n[下载实施研究字段模板](../data/implementation-science-data-dictionary.csv)。至少包括机构/工作人员/服务对象层级ID，策略分配，服务定义，实施阶段，时间，分母，采纳与执行记录，适应性修改，成本及相关群体特征。公开模板不含任何个体记录。\n\n下方教学例子把40个机构随机分配至两种实施策略，对同一种临床服务计算采纳、触达、执行忠实度和单位实施成本。主示例比较等机构权重的触达率；重复时间点需另建纵向模型。\n\n忠实度在实际接受服务者中计算，条件于一个分组后的变量；组间忠实度差不能自动解释为随机策略对所有符合条件者的因果效应。R脚本已运行并检查分母与缺失逻辑；Stata未执行。模拟数据只演示计算，不提供效果证据。\n\n## 7. 公平与标准化病人联用\n\n按预先定义的群体查看谁未被触达、谁承担更大负担、机构是否代表目标场景。平均改善不排除差距扩大。[公平性补充](implementation-equity-skill.md)\n\n[标准化病人](standardized-patient-skill.md)可提供统一情境的服务过程评价，帮助比较策略实施前后或不同组的实际处置；仍需单独收集实施策略执行、采纳和成本，不能把USP处置合格率直接改名为全部实施成功。\n\n## 8. 按StaRI交付\n\n分别报告服务干预、实施策略及其依据；交代情境、适应性修改、设计、比较、主要分母、过程、实施/健康结局和局限。交付研究问题表、框架—构念映射、逻辑模型、策略操作表、测量字典、混合方法联合展示、分析计划与报告核对表。[I7]\n\n可复制提问：**“我想提高基层指南采纳。请区分服务干预与实施策略，用CFIR选择障碍、RE-AIM定义分母，并比较hybrid 1/2/3的适用条件。”**\n\n## 核对来源\n\n- I1. Damschroder等，2022，更新版CFIR。[原文](https://link.springer.com/article/10.1186/s13012-022-01245-0)。\n- I2. CFIR User Guide，2025，五步使用指南。[原文](https://link.springer.com/article/10.1186/s13012-025-01450-7)。\n- I3. RE-AIM框架团队。[官方五维说明](https://re-aim.org/learn/what-is-re-aim/)。\n- I4. Proctor等，2011，实施结局概念区分。[原文](https://doi.org/10.1007/s10488-010-0319-7)。\n- I5. Curran等，2012，Effectiveness-implementation Hybrid Designs。[原文](https://pmc.ncbi.nlm.nih.gov/articles/PMC3731143/)。\n- I6. Powell等，2015，ERIC策略术语整理。[原文](https://link.springer.com/article/10.1186/s13012-015-0209-1)。\n- I7. Pinnock等，2017，StaRI。[EQUATOR登记与清单](https://www.equator-network.org/reporting-guidelines/stari-statement/)。\n- I8. [CFIR官方资源](https://cfirguide.org/)。\n\n核对日期：2026-10-24。[完整题名、DOI、作者及核验范围](../data/sp-implementation-sources.json)。本文为本站原创教学整理，未复制论文全文。\n\n<!-- BEGIN TEACHING CODE -->\n\n## 教学代码：可以单独下载，也可展开复制\n\n### 机构层级分析 · R\n\n[下载脚本](scripts/implementation_science_demo.R)\n\n```r\n# Original teaching simulation: same clinical service, two implementation strategies.\nset.seed(20261025)\nd <- data.frame(site_id=1:40, strategy=sample(rep(0:1,each=20)))\nd$eligible <- sample(50:100, 40, replace=TRUE)\nd$adopted <- rbinom(40, 1, plogis(-0.1 + 0.6*d$strategy))\nd$reached <- ifelse(d$adopted==1,\n                    rbinom(40, d$eligible, plogis(-0.3 + 0.3*d$strategy)), 0)\nd$completed <- rbinom(40, d$reached, 0.8)\nsafe_ratio <- function(num,den) ifelse(den>0,num/den,NA_real_)\nd$reach <- safe_ratio(d$reached,d$eligible)\nd$fidelity <- safe_ratio(d$completed,d$reached)\nd$implementation_cost <- 500 + 15*d$reached\nsummary_by_arm <- do.call(rbind,lapply(split(d,d$strategy), function(x)\n data.frame(strategy=x$strategy[1], sites=nrow(x),\n adoption=mean(x$adopted), reach_person_weighted=sum(x$reached)/sum(x$eligible),\n reach_site_weighted=mean(x$reach), fidelity_among_reached=safe_ratio(sum(x$completed),sum(x$reached)),\n cost_per_reached=safe_ratio(sum(x$implementation_cost),sum(x$reached)))))\nprint(summary_by_arm)\n# Primary example: strategy effect on equal-site reach, at one prespecified time.\nfit <- t.test(d$reach[d$strategy==1],d$reach[d$strategy==0])\nprint(data.frame(reach_difference=unname(fit$estimate[1]-fit$estimate[2]),\n                 lower=fit$conf.int[1],upper=fit$conf.int[2]))\n# Fidelity conditions on reach. Its between-arm contrast is not automatically\n# a causal strategy effect because reaching the service is post-allocation.\nstopifnot(all(d$completed<=d$reached),all(d$reached<=d$eligible),\n          is.na(safe_ratio(0,0)),all(is.na(d$fidelity[d$reached==0])),\n          all(is.finite(fit$conf.int)))\ncat('PASS: denominators, missing zero-denominator ratios, 40 randomized sites, finite interval\\n')\n```\n\n### 机构层级分析 · STATA\n\n[下载脚本](scripts/implementation_science_demo.do)\n\n```stata\n* Teaching template. Not run in Stata in this release.\nclear all\nset seed 20261025\nset obs 40\ngen site_id = _n\ngen allocation_order = runiform()\nsort allocation_order\ngen strategy = (_n > 20)\ngen eligible = 50 + floor(51*runiform())\ngen adopted = runiform() < invlogit(-.1+.6*strategy)\ngen reached = rbinomial(eligible, invlogit(-.3+.3*strategy)) if adopted==1\nreplace reached = 0 if adopted==0\ngen completed = rbinomial(reached,.8)\ngen reach = reached/eligible if eligible>0\ngen fidelity = completed/reached if reached>0\ngen implementation_cost = 500+15*reached\nassert completed<=reached & reached<=eligible\nassert missing(fidelity) if reached==0\ntabstat adopted reach fidelity, by(strategy) stat(mean n)\n* Site-weighted reach contrast. Zero reach remains in the primary analysis.\nregress reach i.strategy, vce(robust)\nlincom 1.strategy\n* Person-weighted summaries use pooled numerators AND denominators.\npreserve\ncollapse (sum) reached eligible completed implementation_cost, by(strategy)\ngen pooled_reach = reached/eligible\ngen pooled_fidelity = completed/reached if reached>0\ngen cost_per_reached = implementation_cost/reached if reached>0\nlist, noobs\nrestore\n* These are different estimands; do not equate a conditional fidelity contrast\n* with a randomized strategy effect on everyone originally eligible.\n```\n",
    "source": "guides/implementation-science-skill.html"
  }
]
