跳到主内容
研究主线统计检验与研究可信度 · 第20–23讲2/4 · 配套练习模块导览 →
练习

第21讲:置信区间 (Confidence Intervals) · 练习

计算样本均值、标准差和多个置信水平区间,模拟区间覆盖率,并比较独立样本与自相关样本的差异。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

练习 1:计算置信区间#

数据生成:

code
import numpy as np
np.random.seed(11)
POPULATION_MU = 105
POPULATION_SIGMA = 20
sample_size = 50
sample = np.random.normal(POPULATION_MU, POPULATION_SIGMA, sample_size)

a. 计算样本均值#

code
# 在此处填写代码计算样本均值
mean = ...
print("样本均值:", mean)

b. 计算样本标准差#

code
# 在此处填写代码计算样本标准差
std_dev = ...
print("样本标准差:", std_dev)

c. 计算标准误#

code
# 使用样本标准差和样本量计算标准误
standard_error = ...
print("标准误:", standard_error)

d. 计算不同置信水平区间#

code
# 计算95%、90%和80%的置信区间
z_scores = [1.96, 1.64, 1.28]
for z in z_scores:
    lower = ...
    upper = ...
    print(f"{int(z*100)}% 置信区间: ({lower:.2f}, {upper:.2f})")

练习 2:置信区间覆盖率验证#

数据生成:

code
n_simulations = 1000
samples = [np.random.normal(POPULATION_MU, POPULATION_SIGMA, sample_size) for _ in range(n_simulations)]
code
# 验证置信区间覆盖率
contain_count = 0
for sample in samples:
    # 在此填写置信区间计算逻辑
    # 判断总体均值是否在区间内
    ...
print(f"覆盖率: {contain_count/n_simulations:.2%}")

练习 3:中心极限定理验证#

a. 正态分布样本均值分布#

code
import matplotlib.pyplot as plt
from statsmodels.stats.stattools import jarque_bera

n_samples = 500
means = [np.mean(np.random.normal(POPULATION_MU, POPULATION_SIGMA, sample_size)) for _ in range(n_samples)]

# 绘制直方图并执行正态性检验

b. 指数分布样本均值分布#

code
expo_means = [np.mean(np.random.exponential(POPULATION_MU, sample_size)) for _ in range(n_samples)]
# 绘制直方图并执行正态性检验

练习 4:小样本修正#

code
small_size = 5
t_corrected = 0
for _ in range(100):
    small_sample = np.random.normal(POPULATION_MU, POPULATION_SIGMA, small_size)
    # 使用t分布计算置信区间
    # 统计包含总体均值的次数
print(f"t修正后覆盖率: {t_corrected/100:.2%}")

练习 5:自相关数据校正#

自相关数据生成函数:

code
def generate_autocorrelated_data(theta, mu, sigma, N):
    X = np.zeros(N)
    for t in range(1, N):
        X[t] = theta * X[t-1] + np.random.normal(mu, sigma)
    return X

a. 自相关数据置信区间#

code
autocorr_samples = [generate_autocorrelated_data(0.5, 0, 1, 50) + 105 for _ in range(100)]
# 计算未修正的置信区间覆盖率

b. Newey-West修正#

code
from statsmodels.stats.sandwich_covariance import cov_hac

def newey_west_se(data):
    model = sm.OLS(data, sm.add_constant(range(len(data))))
    return model.fit(cov_type='HAC', cov_kwds={'maxlags':1}).bse[0]

# 使用修正后的标准误计算置信区间

数据获取(示例)#

code
import yfinance as yf

# 获取股票数据示例
start = '2020-01-01'
end = '2021-01-01'
data = yf.download(['AAPL', 'MSFT'], start=start, end=end)['Close']

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。