习题1: 均匀分布#
问题
-
使用公平硬币模拟10次抛掷(1表示正面,2表示反面),绘制直方图
-
模拟1,000,000次抛掷,绘制直方图
Python答题框架
code
import numpy as np
import matplotlib.pyplot as plt
class DiscreteRandomVariable:
def __init__(self, a=0, b=1):
self.low = a
self.high = b
def draw(self, num_samples):
return np.random.randint(self.low, self.high, num_samples)
# 10次抛掷
# 在此处编写代码
# 1,000,000次抛掷
# 在此处编写代码完整数据
硬币取值范围 [1,3),生成整数1或2
习题2: 二项分布#
问题
-
绘制n=20,p=0.25的二项分布百万样本直方图
-
找出出现次数最多的值
-
使用阶乘函数计算该值的理论概率
Python答题框架
code
class BinomialRandomVariable(DiscreteRandomVariable):
def __init__(self, n=10, p=0.5):
self.n = n
self.p = p
def draw(self, num_samples):
return np.random.binomial(self.n, self.p, num_samples)
def factorial(n):
# 在此处编写阶乘函数
raise NotImplementedError
# 生成分布
# 在此处编写代码
# 寻找最高频值
# 在此处编写代码
# 计算理论概率
# 在此处编写代码习题3: 正态分布#
a. 概率密度函数绘图
问题
绘制μ=0,σ=5的正态分布PDF曲线
Python答题框架
code
mu = 0
sigma = 5
x = np.linspace(-30, 30, 200)
# 在此处编写PDF公式
plt.plot(x, y)b. 置信区间
问题
计算并绘制1/2/3倍σ置信区间
Python答题框架
code
# 计算置信区间范围
first_ci = (...)
# 绘制垂直线
plt.axvline(...)习题4: 金融应用#
问题
-
使用yfinance获取SPY 2016-01至2016-05日收益率
-
拟合正态分布并绘制置信区间
-
使用Jarque-Bera检验正态性
Python答题框架
code
import yfinance as yf
# 数据获取
data = yf.download('SPY', start='2016-01-01', end='2016-05-01')
prices = data['Close']
returns = prices.pct_change().dropna()
# 参数计算
mu = (...)
sigma = (...)
# 绘制分布与置信区间
# 在此处编写代码
# JB检验
from statsmodels.stats import stattools
_, pvalue, skew, kurt = stattools.jarque_bera(returns)完整数据
使用yfinance直接获取实时历史数据
注意事项
-
安装必需库:
pip install yfinance statsmodels matplotlib -
实际运行时需保持网络连接以下载数据
-
正态分布PDF公式: