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

练习

习题1: 均匀分布

问题

  1. 使用公平硬币模拟10次抛掷(1表示正面,2表示反面),绘制直方图
  1. 模拟1,000,000次抛掷,绘制直方图

Python答题框架

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: 二项分布

问题

  1. 绘制n=20,p=0.25的二项分布百万样本直方图
  1. 找出出现次数最多的值
  1. 使用阶乘函数计算该值的理论概率

Python答题框架

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):
    # 在此处编写阶乘函数

# 生成分布
# 在此处编写代码

# 寻找最高频值
# 在此处编写代码

# 计算理论概率
# 在此处编写代码

习题3: 正态分布

a. 概率密度函数绘图

问题

绘制μ=0,σ=5的正态分布PDF曲线

Python答题框架

mu = 0
sigma = 5
x = np.linspace(-30, 30, 200)
# 在此处编写PDF公式
plt.plot(x, y)

b. 置信区间

问题

计算并绘制1/2/3倍σ置信区间

Python答题框架

# 计算置信区间范围
first_ci = (...)
# 绘制垂直线
plt.axvline(...)

习题4: 金融应用

问题

  1. 使用yfinance获取SPY 2016-01至2016-05日收益率
  1. 拟合正态分布并绘制置信区间
  1. 使用Jarque-Bera检验正态性

Python答题框架

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直接获取实时历史数据


注意事项

  1. 安装必需库:pip install yfinance statsmodels matplotlib
  1. 实际运行时需保持网络连接以下载数据
  1. 正态分布PDF公式:
f(x)=1σ2πe(xμ)22σ2f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}