参数检验

Python 推断基础

Paul Savala

Assistant Professor or Mathematics

ANOVA 方差分析

  • ANOVA:比较各因子的平均响应
  • 响应:数值型测量值
  • 因子:定义分组的类别变量

一个表格,显示多家公司在不同市场的风险投资金额。

Python 推断基础

ANOVA 方差分析

investments_df.groupby('market')['funding_total_usd'].mean()
Market        Average funding
===========   ===============
Advertising      13806610
Analytics        14762930
Biotechnology    20838670
...              ...
  • 响应:融资额
  • 因子:市场
  • ANOVA:比较各市场的平均融资额
Python 推断基础

ANOVA 的假设

  • 各因子的响应近似正态分布
    • 各市场的融资额近似正态
  • 各因子的总体方差相等
    • 各市场的融资波动方差相等
Python 推断基础

响应的正态性

health_df = investments_df[investments_df['market'] == 'Health and Wellness']
health_df['funding_total_usd'].plot(kind='hist')

直方图:x 轴为公司总融资额,y 轴为频数,靠近零处一根很高的柱,后面有几根更小的柱。

Python 推断基础

对数变换与正态性

health_log = np.log(health_df['funding_total_usd'])

health_log.plot(kind='hist')

直方图:x 轴为公司总融资额,y 轴为频数,靠近零处一根很高的柱,后面有几根更小的柱。

Python 推断基础

方差相等

investments_df['log_funding'] = np.log(investments_df['funding_total_usd'])

investments_df.groupby('market')['log_funding'].std()
Advertising            2.254390
Analytics              2.152852
Biotechnology          1.946059
...                    ...

Levene 等方差检验

$H_0:$ 各总体方差相等

$H_a:$ 至少有一组总体方差不同

Python 推断基础

方差相等

from scipy import stats

health_df = investments_df[investments_df['market'] == 'Health and Wellness']
analytics_df = investments_df[investments_df['market'] == 'Analytics']

s, p_value = stats.levene(health_df['log_funding'], analytics_df['log_funding'])
print(p_value < 0.05)
False

结论: 不能拒绝原假设。两个市场的融资方差相等。

Python 推断基础

SciPy 中的 ANOVA

s, p_value = stats.f_oneway(health_df['log_funding'], 
                            analytics_df['log_funding'])

print(p_value < 0.05)
True

结论: 两个市场的融资均值差异具有统计显著性。

Python 推断基础

基于 ANOVA 的推断

  • $H_0:$ 所有均值相同
  • $H_a:$ 至少有一个均值不同
  • 不能据此判断是哪一个,需要后续分析。
Python 推断基础

Passons à la pratique !

Python 推断基础

Preparing Video For Download...