统计学基础_16方差分析

1. 书籍和文中所提到的数据会在文末提供百度云下载,所有数据都不会有加密,可以放心下载使用
2. 文中计算的结果与书中不同是由于数据使用的时间段不同

目录

1. 单因素方差分析

2. 多因素方差分析

 3. 析因方差分析


 

1. 单因素方差分析

行业对股票收益率是否有影响,直觉上,我们都认为行业对股票收益率有着重要的影响,不同行业的股票的平均收益率是不一样的。我们用方差分析来验证一下这个根据经验形成的直觉。方差分析的假设条件是各组别各反应变量之间是独立同分布的。

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

df = pd.read_csv('2014_industry.csv',encoding='utf-8')
df00 = df.loc[:,['secID','tradeDate','pe','industryName1']]
df00.head()

 

# 进行方差分析
model = ols('pe~C(industryName1)',data=df00.dropna()).fit()
table1 = anova.anova_lm(model)
print(table1)

 上述结果表明,p=2.85e-38, 在0.05显著性水平下,p值远远小于0.05,故我们应该拒绝原假设,认为不同行业股票2014年的年收益率是不一样的。因此,我们的直觉得到了验证,即行业是影响股票收益率的一个重要因素。

2. 多因素方差分析

多因素方差分析,我们只需要在线性回归模型里加入要研究的因素即可。以下以沪深300收益率为例,研究周几和月份对收益率的影响

# 检验 季度 和 月份 是否对 沪深300指数的收益率 有影响
df_hs300 = pd.read_csv('./index_hs300.csv',encoding='utf-8')
df_hs300.rename(columns={'tradeDate':'date','closeIndex':'close'},inplace=True)
df_hs300['date'] = pd.to_datetime(df_hs300['date'])
df_hs300.sort_values(by='date',ascending=True,inplace=True)
df_hs300['pe_hs300'] = (df_hs300['close']-df_hs300['close'].shift(1))/df_hs300['close'].shift(1)
def res_month_num(x):
    month = x['date'].month
    return month
def res_season_num(x):
    month = x['date'].month
    if month in [1,2,3]:
        return 1
    elif month in [4,5,6]:
        return 2
    elif month in [7,8,9]:
        return 3
    else:
        return 4
df_hs300['month'] = df_hs300.apply(res_week_num,axis=1)
df_hs300['season'] = df_hs300.apply(res_season_num,axis=1)
df_hs300.head()

 

# 建立模型
model01 = ols('pe_hs300~C(month)+C(season)',data=df_hs300.dropna()).fit()
table2 = anova.anova_lm(model01)
print(table2)

p值一个远大于0.05,一个小于0.05,没有什么意义,但此处仅仅只是实践下python的多因素方差分析,例子中所谓的月份和季度也是我随意想的 。

假如两者的p值都小于0.05,则说明这两个因素对收益率有影响,如果是都远小于0.05,则是重要影响

 3. 析因方差分析

析因方差分析和多元素方差分析差不多,仅是多了一个因子的乘项。在此仅仅用于实践python的析因方差分析功能,在上面的例子上添加月份和季度的乘项,以检验这两者对收益率的影响是否与另一个因子的水平有关(其实在上面的多因素方差分析已经得出结论月份和季度两者没有相互影响的关系)

model03 = ols('pe_hs300~C(month)*C(season)',data=df_hs300.dropna()).fit()
table3 = anova.anova_lm(model03)
print(table3)

 在此看第三个系数的p值,如果p值大于0.05,说明结果不显著。也就是说两者对收益率的影响并不依赖于另一者的水平

PS:

链接:https://pan.baidu.com/s/1nKxmfCcyvfcQKpNIIwI_Cw 
提取码:36gy

书籍
链接:https://pan.baidu.com/s/1xJD85-LuaA9z-Jy_LU5nOw 
提取码:ihsg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值