数值计算补充了第 28–29 章对样本估计与重复抽样性质的讨论。综合分析资料由一个明确的概率模型生成,每行对应一名独立的模拟参与者;仿真实验则在给定参数下重复抽样,以评价区间覆盖率与多重检验的错误率。前文“每组 200 人、成功 40/70 人”的手算例具有另一组设定,两类资料中的参数与数值分别属于各自的例题。

数值实验资料

文件用途
完整学习包Markdown 笔记、数据、脚本、图与结果,可作为 Obsidian 仓库打开
trial.csv固定种子生成的 1600 行模拟样本
generation.json数据来源、种子、生成顺序与版本记录
generate_data.py重新生成 CSV
analyze.py样本约束、列联表、条件模型与独立测试集预测评价
simulate.py置信区间覆盖率与多重检验仿真
create_figures.py从模型和结果文件重建教学 PNG/SVG 图
requirements.txt本次运行使用的 Python 库版本
analysis.json未四舍五入的分析结果、软件版本与 CSV 校验值
simulation.json仿真与精确枚举结果、Monte Carlo 标准误

计算环境与运行方法

计算使用 Python 3.12。以下命令以解压后的 Probability-Statistics/practice 为当前目录,虚拟环境保存本次数值实验所用的软件依赖。

python -m venv .venv

macOS/Linux 激活环境:

source .venv/bin/activate

Windows PowerShell 激活环境:

.venv\Scripts\Activate.ps1

然后执行:

python -m pip install -r requirements.txt
python scripts/generate_data.py
python scripts/analyze.py
python scripts/simulate.py
python scripts/create_figures.py

脚本内部的数据位置由脚本路径确定;上述相对命令以实践目录为起点。已下载的 CSV 可以直接用于分析,无须再次生成。固定随机种子确定的是给定算法与调用次序下的随机序列,因此相同结果还依赖生成顺序和软件版本。浮点运算库的差异可能反映在计算结果的末位。

以下结果采用 Python 3.12.14、NumPy 2.3.5、Pandas 2.2.3、SciPy 1.17.0、Statsmodels 0.14.6、Scikit-learn 1.8.0、Patsy 1.0.3、Matplotlib 3.10.8 计算。软件版本既关系到随机算法,也关系到具体检验和估计方法的实现。

数据字典与生成机制

字段类型与编码分析角色
id1–1600,不重复识别个体;不进入回归
treatment0 对照、1 干预随机分配的组别
age18–70 整数基线年龄
baseline_visits非负整数干预前访问次数
channelsearch/social/referral基线来源渠道
outcome0 失败、1 成功二元结局

固定种子 20261012,先生成组别、年龄、基线次数、渠道,再生成结局。组别按概率 .5 分配;年龄按 18–70 离散均匀分布生成;次数服从 Poisson(3);渠道概率为 .45/.35/.20。结局生成模型为

其中渠道效应 search=0、social=−.25、referral=.35。给定变量后,每人的结局按 Bernoulli 独立生成。真实的模拟条件 OR 为 ;单次拟合估计与该值有差异,是抽样波动的一部分。

生成模型规定了样本的结构:标识唯一,组别与结局为二元编码,年龄有给定范围,访问次数为非负整数,渠道取自三个类别,并且不存在缺失。analyze.py 以这些约束判断输入资料是否对应所声明的模拟样本;空资料、缺列或不符合约束的记录会使计算停止。这一判断针对模型设定与文件内容的一致性,现实研究中的资料来源、纳入排除、重复观测和缺失机制则属于更进一步的研究设计问题。

综合分析的数值结果

组别人数成功人数样本成功比例
对照83920224.08%
干预76128036.79%

干预减对照的风险差为 12.72 个百分点,95% 大样本 Wald 区间 8.23–17.20 个百分点;RR=1.528(log 区间 1.313–1.779);粗 OR=1.836(log 区间 1.479–2.279)。四个期望频数均超过 200,未作连续性校正的 Pearson ,自由度 1,p=;Fisher 概率排序双侧 p=。

条件模型预先指定为 outcome ~ treatment + age + baseline_visits + C(channel),search 为渠道基准,使用全部 1600 行。模型收敛,干预的调整 OR 为 1.930(95% Wald 区间 1.545–2.410)。这是在该模型条件下比较干预与对照的优势比;粗 OR 与调整 OR 的差别本身不足以认定存在混杂。

经验标准化以样本的基线分布为参照。对同一名对象,保留基线变量,分别计算组别为 0 和 1 时的预测概率;再对各组设定下的预测取平均,得到标准化风险 .23896 和 .37027。它们是条件概率模型在同一基线分布上的平均,因而与直接比较两组观测比例具有不同构造。本次计算未给出这两个量的置信区间,其估计精度尚未由区间量化。相应解释见 二分类研究的综合分析。

独立测试集上的预测表现

个体预测评价采用按结局分层的 70%/30% 样本划分,其中 1120 行用于拟合,480 行用于独立测试。测试集 ROC-AUC=.6149,Average Precision=.4111,阳性率=.3021;模型的 Brier 分数为 .2043,以训练集阳性率作为恒定预测概率时,测试集 Brier 分数为 .2108。前两项数值描述排序关系,Brier 分数描述概率预测的均方误差。

预定阈值 .5 下,测试集真负 312、假正 23、假负 126、真阳性 19,敏感度约 13.1%。干预系数的检验讨论组别与成功概率的关系,个体预测则面对每个对象结局的随机性;因此,前者具有较强统计证据,并不保证后者具有较强区分能力。本例阈值 .5 对应较多假负,其决策含义取决于两类错误的成本。该阈值为预先给定,并未通过测试集反复选择。各指标的定义见 预测评价。

区间覆盖与多重检验的数值评价

二项模型下的区间覆盖事件,是某次抽样所得区间包含给定参数值。20,000 次模拟中这一事件的频率估计覆盖概率;枚举全部 并累加相应二项概率,则直接给出固定参数点的实际覆盖率。后一计算的精确性属于覆盖率的求和过程,Wald 与 Wilson 区间本身仍具有各自的近似性质。

参数点方法仿真覆盖率枚举实际覆盖率仿真标准误
n=20,p=.05Wald.6340.63894.00341
n=20,p=.05Wilson.9255.92452.00186
n=100,p=.30Wald.9500.95018.00154
n=100,p=.30Wilson.9361.93719.00173

在第一参数点,Wald 区间明显欠覆盖;第二参数点中,Wilson 的实际覆盖率同样低于名义水平,且两种方法的相对表现发生变化。因此,一个参数点上的覆盖率只描述该点的性质。对方法的评价还涉及参数范围内的覆盖变化、区间长度以及研究所关注的误差。

多重检验实验采用理想化模型:20 个零假设全部为真,p 值相互独立并服从均匀分布。未校正的族错误率(FWER)仿真值为 .64365,理论值为 .64151;Bonferroni 校正后的仿真值为 .05245,理论值为 .04883。后一仿真值的标准误为 .00158。有限次重复所得频率围绕其理论概率波动,故观测频率高于 .05 与理论错误率控制并不矛盾。推导与实验讨论见 第 29 章。

软件方法参考

实现细节可查 SciPy Fisher 精确检验、Statsmodels GLM、比例置信区间 和 Scikit-learn 模型评估。各实现所采用的区间算法、双侧检验定义和评价指标,分别对应正文讨论的统计方法。

相关章节:综合分析 · 仿真正文 · 课程总览。

此文件夹下有0条笔记。