Python-统计学应用-方差分析

方差分析-ANOVA

方差分析一般步骤:

  1. 根据感兴趣的因素或因子的不同取值或水平将反应变量分成M组
  2. 提出原假设H0:因子对于反应变量没有影响;备择假设H1:因子对于观测变量有影响
  3. 求出样本数据中每组的岩本平均值与全样本均值,算出组内均方差MSF和组间均方差MSE
  4. 构建φ统计量并计算φ值:φ=MSF/MSE~F(M-1,N-M)
  5. 由显著性水平α(1%,5%,10%)查表比对F判断拒绝还是接受原假设。

离差平方和

方差分析原假设为:
不同因子水平下反应变量的均值是相同的。

  • ESS(Error Sum of Square)
    误差平方和,也称为组内偏差平方和。自由度为N-M,即全样本数量减去组数。
  • FSS(Factor Sum of Square)
    因子平方和,也称为组间差异平方和。自由度为M-1。
  • TSS(Total Sum of Square)
    总离差平方和。自由度为N-1。

TSS=ESS+FSS

managers = pd.read_csv('managers.csv', index_col='Date')
MANA = managers[['HAM1', 'HAM3', 'HAM4']]
print(MANA)
ess1 = ((MANA.HAM1 - MANA.HAM1.mean()) ** 2).sum()
ess3 = ((MANA.HAM3 - MANA.HAM3.mean()) ** 2).sum()
ess4 = ((MANA.HAM4 - MANA.HAM4.mean()) ** 2).sum()
ess = ess1 + ess3 + ess4
t_mean = MANA.mean().mean()
fss = 132 * (((MANA.HAM1.mean() - t_mean) ** 2) + ((MANA.HAM3.mean() - t_mean) ** 2) +
             ((MANA.HAM4.mean() - t_mean) ** 2))
tss = fss + ess

显著性检验

φ=MSF / MSE=(FSS / (M-1)) / (ESS / (N-M))~F(M-1,N-M)

方差分析-Python操作

import pandas as pd
import statsmodels.stats.anova as anova
from statsmodels.formula.api import ols

单因素方差分析

returns = pd.DataFrame(pd.concat([MANA.HAM1, MANA.HAM3, MANA.HAM4]))
returns['Class'] = ['HAM1' for i in range(132)] + ['HAM3' for t in range(132)] + ['HAM4' for w in range(132)]
returns.columns = ['Return', 'Class']
print(returns)
model = ols('Return~C(Class)', data=returns).fit()
table1 = anova.anova_lm(model)
print(table1)

多因素方差分析

model = ols('Return~C(Class)+C(Year)', data=returns).fit()
table2 = anova.anova_lm(model)
print(table2)

析因方差分析

model = ols('Return~C(Class)*C(Year)', data=returns).fit()
table3 = anova.anova_lm(model)
print(table3)

你可能感兴趣的:(python,python,统计学)