编程实战:验证充分性
理论最终要服务于实践。下面我们将使用 Python 模拟数据,通过可视化手段辅助理解因子分解定理的含义:即在给定充分统计量后,样本的条件分布不再依赖于参数。
4.1 R 语言示例
R 语言内置了大量统计功能,非常适合此类验证。
加载库
library(ggplot2)
生成数据:正态分布 N(mu=5, sigma=2)
set.seed(123)
n <- 100
mu_true <- 5
sigma_true <- 2
data <- rnorm(n, mean = mu_true, sd = sigma_true)
计算充分统计量
T_sum <- sum(data)
T_mean <- mean(data)
模拟实验:固定 T_mean,观察数据分布
注意:在实际中,我们无法轻易改变单个数据点而不改变 T_mean,
这里我们通过重采样来近似展示“条件分布”的概念。
cat("样本总数:", n, "
")
cat("充分统计量 (样本均值):", round(T_mean, 4), "
")
cat("真实参数 mu:", mu_true, "
")
cat("结论:样本均值 T_mean 包含了关于 mu 的全部信息。
")
4.2 Python 实现思路
对于更复杂的情况,我们可以编写脚本验证似然函数的形状。
import numpy as np
from scipy.stats import norm
def likelihood(theta, data):
"""
计算给定参数 theta 下的似然函数值
根据因子分解定理,似然函数 L(theta) 只依赖于充分统计量
"""
n = len(data)
t_stat = np.sum(data) # 泊松分布的充分统计量
# 假设是泊松分布 P(lambda)
return (theta t_stat) np.exp(-n theta)
模拟数据
np.random.seed(42)
sample_data = np.random.poisson(lam=3.5, size=50)
t_observed = np.sum(sample_data)
绘制似然曲线
theta_range = np.linspace(0.1, 8, 100)
likelihood_values = [likelihood(t, sample_data) for t in theta_range]
print(f"观测到的充分统计量: {t_observed}")
print("似然函数峰值对应的参数即为 MLE。")
💻 工具推荐
除了 R 和 Python,MATLAB 和 Julia 也是进行数理统计计算的优秀工具。它们都能高效处理矩阵运算,加速似然函数的优化过程。
🛠️ 调试技巧
在验证因子分解定理时,务必检查 是否真的不含参数。很多初学者容易忽略指示函数中的参数依赖(如均匀分布案例)。