数据生成:
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)
# 在此处填写代码计算样本均值
mean =
print("样本均值:", mean)
# 在此处填写代码计算样本标准差
std_dev =
print("样本标准差:", std_dev)
# 使用样本标准差和样本量计算标准误
standard_error =
print("标准误:", standard_error)
# 计算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})")
数据生成:
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%}")
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)]
# 绘制直方图并执行正态性检验
expo_means = [np.mean(np.random.exponential(POPULATION_MU, sample_size)) for _ in range(n_samples)]
# 绘制直方图并执行正态性检验
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%}")
自相关数据生成函数:
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
autocorr_samples = [generate_autocorrelated_data(0.5, 0, 1, 50) + 105 for _ in range(100)]
# 计算未修正的置信区间覆盖率
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']