🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

练习 1:计算置信区间

数据生成:

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. 计算样本均值

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

b. 计算样本标准差

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

c. 计算标准误

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

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

# 计算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:置信区间覆盖率验证

数据生成:

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

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

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

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. 指数分布样本均值分布

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

练习 4:小样本修正

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:自相关数据校正

自相关数据生成函数:

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. 自相关数据置信区间

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

b. Newey-West修正

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]

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

数据获取(示例)

import yfinance as yf

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