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

第20讲:假设检验 (Hypothesis Testing)

💡

查看全集:💎Quantopia量化分析56讲

假设检验是统计学中用于根据样本数据对总体参数进行推断的核心方法。在金融投资中,假设检验可以用于:

本教程将循序渐进地讲解假设检验的核心概念、实施步骤和常见检验类型,并结合金融数据分析案例进行演示。

一、基础概念

假设检验(Hypothesis Testing)是统计学中用于判断样本数据是否足以支持某个假设的一种方法。它通过分析样本数据,结合概率论和统计推断,来决定是否接受或拒绝某个预设的假设。假设检验广泛应用于科学研究、商业决策和质量控制等领域。

其基本步骤包括:

  1. 提出假设
    • 原假设(H₀):默认或保守的立场,通常表示“没有差异”或“没有效果”。
    • 备择假设(H₁):与原假设相反的主张,通常是研究者希望证明的结论。
  1. 选择显著性水平(α):通常取值为 0.05 或 0.01,表示错误拒绝原假设的最大容忍概率。
  1. 选择检验统计量:根据数据特性和假设类型选择适当的统计量(如 Z、T、F 等)。
  1. 计算p值:表示在原假设为真时,观察到当前或更极端结果的概率。
  1. 决策
    • 若p值 < α,则拒绝原假设
    • 若p值 ≥ α,则无法拒绝原假设

1.1 零假设与备择假设

零假设 (H₀)

零假设(也称原假设)是假设检验的起点,通常代表当前公认的结论或“无变化”的状态。它是保守的立场,研究者试图通过数据来反驳它。例如:

备择假设 (H₁)

备择假设(也称对立假设)是研究者希望验证的新主张,与原假设相反。例如:

检验类型的区分

根据研究目标,假设检验可分为以下类型:

检验类型H₀(原假设)H₁(备择假设)适用场景
双尾检验μ = μ₀(均值等于某值)μ ≠ μ₀(均值不等于某值)关注是否存在差异,不关心方向
右尾检验μ ≤ μ₀(均值小于或等于某值)μ > μ₀(均值大于某值)关注是否更大
左尾检验μ ≥ μ₀(均值大于或等于某值)μ < μ₀(均值小于某值)关注是否更小

示例:

1.2 检验步骤

假设检验的完整流程包括以下步骤,以下是对每个步骤的详细扩展:

  1. 建立假设对
    • 明确原假设 (H₀) 和备择假设 (H₁)。
    • 根据研究问题选择单尾(左尾或右尾)或双尾检验。
    • 示例:测试新机器的平均生产时间是否少于旧机器。
      • H₀: μ ≥ 10 分钟
      • H₁: μ < 10 分钟(左尾检验)
  1. 选择检验统计量
    • 根据数据类型和样本特性选择合适的统计量:
      • Z 统计量:适用于大样本(n > 30)或总体标准差已知的情况。
      • T 统计量:适用于小样本(n ≤ 30)且总体标准差未知的情况。
      • 卡方统计量:适用于分类数据或拟合优度检验。
      • F 统计量:适用于比较多个组的方差。
    • 示例:若样本量为 25,且总体方差未知,则选择 T 检验。
  1. 确定显著性水平 (α)
    • α 是错误拒绝原假设(即 Type I 错误)的概率,通常设为 0.05(5%)或 0.01(1%)。
    • α 的选择取决于研究的严格程度:
      • α = 0.05:适用于大多数社会科学研究。
      • α = 0.01:适用于需要更高置信度的医学或工程研究。
  1. 计算临界值
    • 根据 α 和检验类型(单尾或双尾),从统计表(如 Z 表、T 表)中查找临界值。
    • 示例:
      • 双尾检验,α = 0.05,Z 临界值为 ±1.96。
      • 右尾检验,α = 0.05,Z 临界值为 1.645。
  1. 计算检验统计量
    • 使用样本数据计算统计量。例如:
      • Z = (样本均值 - 假设均值) / (标准差 / √n)
      • T = (样本均值 - 假设均值) / (样本标准差 / √n)
    • 示例:样本均值 = 9.8,假设均值 = 10,标准差 = 1.2,n = 36,则 Z = (9.8 - 10) / (1.2 / √36) = -1.0。
  1. 比较统计量与临界值
    • 临界值法:
      • 若统计量落在拒绝域(超出临界值),拒绝 H₀。
      • 若统计量在接受域内,无法拒绝 H₀。
    • p 值法(替代方法):
      • 计算统计量的 p 值,与 α 比较:
        • p < α,拒绝 H₀。
        • p ≥ α,保留 H₀。
    • 示例:若 Z = -1.0,p 值 ≈ 0.1587(左尾),α = 0.05,因 0.1587 > 0.05,无法拒绝 H₀。

1.3 扩展补充

错误类型

p 值的常见误解

实际应用示例

二、均值检验

均值检验是统计学中假设检验的重要分支,用于检验样本数据的均值是否满足特定条件。它在金融、科学研究等领域有着广泛应用。常见的均值检验包括单样本 t 检验双样本 t 检验,分别用于检验单个样本的均值是否符合假设值,以及比较两个独立样本均值是否存在显著差异。

注意事项:

2.1 单样本 t 检验

适用场景

单样本 t 检验用于检验一个样本的均值是否等于某个目标值(通常是总体均值或假设值)。它适用于以下情况:

公式

单样本 t 检验的统计量计算公式为:

t=xˉμ0s/nt = \frac{\bar{x} - \mu_0}{s/\sqrt{n}}

其中:

决策规则

案例:检验微软股票日均收益是否大于 0

我们以微软(MSFT)股票为例,使用 Python 实现单样本 t 检验,检验其日均收益是否显著大于 0:

import yfinance as yf
from scipy import stats

# 获取微软股票数据(2020-01-01 至 2023-01-01)
msft = yf.download('MSFT', start='2020-01-01', end='2023-01-01')
# 计算日收益率
returns = msft['Close'].pct_change().dropna()

# 执行单样本 t 检验(右尾检验,检验均值是否大于 0)
t_stat, p_val = stats.ttest_1samp(returns, 0, alternative='greater')
print(f"t 统计量: {t_stat:.4f}, p 值: {p_val:.4f}")

结果解读:

2.2 双样本 t 检验

适用场景

双样本 t 检验用于比较两个独立样本的均值是否存在显著差异。它适用于:

公式

双样本 t 检验(假设方差相等)的统计量计算公式为:

t=xˉ1xˉ2sp2(1n1+1n2)t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{s_p^2(\frac{1}{n_1}+\frac{1}{n_2})}}

其中:

sp2=(n11)s12+(n21)s22n1+n22s_p^2 = \frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}

注意:若两个样本方差不相等,应使用 Welch's t 检验,公式略有调整,不需要假设方差相等。

决策规则

案例:比较苹果股票与标普 500 指数的波动率

我们以苹果(AAPL)股票和标普 500 指数(SPY)为例,使用 Python 实现双样本 t 检验,比较两者日均收益率是否显著不同。

import yfinance as yf
from scipy import stats

# 获取苹果和标普 500 数据(2020-01-01 至 2023-01-01)
data = yf.download(['AAPL', 'SPY'], start='2020-01-01', end='2023-01-01')['Close']
# 计算日收益率
returns = data.pct_change().dropna()

# 执行 Welch's t 检验(不假设方差相等)
t_stat, p_val = stats.ttest_ind(returns['AAPL'], returns['SPY'], equal_var=False)
print(f"t 统计量: {t_stat:.4f}, p 值: {p_val:.4f}")

结果解读:

三、方差检验

方差检验是统计学中用于检验样本数据方差是否符合特定假设的方法。它在金融、质量控制等领域有广泛应用,例如评估风险或波动性。常见的方差检验包括卡方检验(单方差检验)F 检验(方差比较检验),分别用于检验单个样本的方差是否等于某个值,以及比较两个样本的方差是否存在显著差异。

3.1 卡方检验(单方差)

卡方检验用于检验一个样本的方差是否等于某个预设值(总体方差)。它假设数据近似服从正态分布,常用于风险管理等场景。

公式

卡方检验的统计量计算公式为:

χ2=(n1)s2σ02\chi^2 = \frac{(n-1)s^2}{\sigma_0^2}

其中:

决策规则

案例:检验微软收益率方差是否小于 0.0001

我们以微软(MSFT)股票的日收益率为例,检验其方差是否显著小于 0.0001

from scipy.stats import chi2

n = len(returns)
sample_var = returns.var()
test_stat = (n-1)*sample_var / 0.0001
crit_value = chi2.ppf(0.99, n-1)
print(f"检验统计量: {test_stat:.2f}, 临界值: {crit_value:.2f}")

结果解读:

3.2 F检验(方差比较)

F 检验用于比较两个独立样本的方差是否存在显著差异。它假设两个样本独立且数据近似服从正态分布,常用于比较资产波动性。

公式

F 检验的统计量计算公式为:

F=s12s22F = \frac{s_1^2}{s_2^2}

其中:

决策规则

案例:比较苹果与标普 500 波动率差异

我们以苹果(AAPL)股票和标普 500 指数(SPY)的日收益率为例,检验两者方差是否显著不同。

import yfinance as yf
from scipy.stats import f

# 获取苹果和标普 500 数据(2020-01-01 至 2023-01-01)
data = yf.download(['AAPL', 'SPY'], start='2020-01-01', end='2023-01-01')['Close']
# 计算日收益率
returns = data.pct_change().dropna()

# 样本方差
var_aapl = returns['AAPL'].var()
var_spy = returns['SPY'].var()

# F 统计量
f_stat = var_aapl / var_spy
dfn = len(returns['AAPL']) - 1  # 分子自由度
dfd = len(returns['SPY']) - 1  # 分母自由度

# p 值(双尾检验)
p_val = 2 * min(f.cdf(f_stat, dfn, dfd), 1 - f.cdf(f_stat, dfn, dfd))

print(f"F 统计量: {f_stat:.2f}, p 值: {p_val:.4f}")

结果解读:

四、错误类型与解释力

4.1 错误矩阵

在假设检验中,决策可能出现两种错误:

H₀ 真(原假设正确)H₀ 假(原假设错误)
不拒绝 H₀正确(True Negative)第二类错误 (β)(False Negative)
拒绝 H₀第一类错误 (α)(False Positive)正确(True Positive)

4.2 关键指标

在设计检验时,通常需要在 α 和 β 之间权衡:

五、实例:评估投资组合的超额收益

5.1 场景背景

假设您是一位基金经理,管理着一个股票投资组合。您声称该投资组合的年化收益率显著高于市场基准(例如,标普 500 指数的年化收益率)。为了验证这一主张,我们将使用假设检验来分析过去 5 年的收益率数据,并判断您的投资组合是否确实取得了显著高于市场的超额收益。场景背景:

  1. 市场基准(标普 500):过去 5 年的年化收益率平均为 8%
  1. 您的投资组合:过去 5 年的年化收益率平均为 10%

5.2 假设检验评估显著性

我们将通过假设检验来评估这一表现是否显著:

1. 提出假设

在金融投资中,假设检验的原假设 (H₀) 通常是保守的,表示“没有超额收益”,而备择假设 (H₁) 是我们希望证明的结论。

这是一个右尾检验,因为我们关注收益率是否显著高于市场基准。

2. 选择显著性水平 (α)

显著性水平 α 表示愿意接受错误拒绝原假设的概率(即 Type I 错误)。在金融分析中,通常设为 0.05(5%)。

这意味着我们接受 5% 的概率错误地声称投资组合有超额收益。

3. 选择检验统计量

假设我们有 5 年的月度数据(样本量 n = 60),样本量较大,因此选择 Z 检验。如果样本量较小(n ≤ 30),则应使用 T 检验。

4. 计算临界值

对于右尾检验,α = 0.05,Z 检验的临界值为 1.645。如果计算出的 Z 值大于 1.645,我们将拒绝原假设。

5. 计算检验统计量

假设我们有以下数据:

Z 统计量的计算公式为:

Z=xˉμ0σ/nZ = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}

其中:

代入数据:

Z=0.100.080.03/60=0.020.03/7.746=0.020.003875.17Z = \frac{0.10 - 0.08}{0.03 / \sqrt{60}} = \frac{0.02}{0.03 / 7.746} = \frac{0.02}{0.00387} \approx 5.17

6. 比较统计量与临界值

由于 5.17 > 1.645,Z 值落入拒绝域,因此我们可以拒绝原假设。

7. 决策

根据假设检验的结果:

这表明投资组合在过去 5 年中取得了显著的超额收益,投资策略可能是有效的。

8. p 值法(补充)

我们还可以用 p 值法验证结果。p 值表示在原假设为真时,观察到当前或更极端结果的概率。对于 Z = 5.17,p 值极小(远小于 0.05),同样支持拒绝原假设。

通过假设检验,我们科学地评估了投资组合的绩效,结果显示其年化收益率显著高于市场基准 8%。这表明投资策略在过去 5 年中表现优异。然而,假设检验基于历史数据,未来的市场表现可能不同,建议结合其他分析工具和市场洞察来制定投资决策。

练习

  1. 使用t检验验证特斯拉股票近3年日均收益率是否显著大于0.1%
tsla = yf.download('TSLA', start='2020-01-01', end='2023-01-01')
# 在此补全代码
  1. 比较黄金期货(GC=F)与比特币(BTC-USD)的波动率差异
metals = yf.download(['GC=F', 'BTC-USD'], start='2020-01-01')['Close']
# 在此补全代码

要点总结

进阶建议

  1. 学习非参数检验方法(如Mann-Whitney U检验)
  1. 了解多重检验校正方法
  1. 掌握统计功效分析方法

附:练习合集