跳到主内容
研究主线统计估计与回归基础 · 第6–13讲6/8 · 配套练习模块导览 →
练习

第11讲:随机变量 (Random Variables) · 练习

模拟均匀、二项和正态变量并核对理论概率,计算股票收益分布统计,再执行正态性检验。

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

习题1: 均匀分布#

问题

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

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

问题

  1. 绘制n=20,p=0.25的二项分布百万样本直方图

  2. 找出出现次数最多的值

  3. 使用阶乘函数计算该值的理论概率

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: 金融应用#

问题

  1. 使用yfinance获取SPY 2016-01至2016-05日收益率

  2. 拟合正态分布并绘制置信区间

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


注意事项

  1. 安装必需库:pip install yfinance statsmodels matplotlib

  2. 实际运行时需保持网络连接以下载数据

  3. 正态分布PDF公式:

f(x)=1σ2πe(xμ)22σ2f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}

完成练习后,自评一次

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