怎么给网站做网站地图重庆seo排名技术
目录
前置:
步骤
1 数据准备
2 数据合并到一个表中
3 方差分析验证
3.1 单因素方差分析
3.2 多因素方差分析
3.3 析因方差分析
数据
前置:
1 知识点来自《量化投资_以Python为工具》书籍,第十六章,页码227
2 使用其他数据过一遍方差分析的知识点:验证因子对一个连续型变量是否有影响
连续型因变量 | A股2024年收益率 | 被影响的变量,可以理解为方程式中的y |
因子 | 股票所属行业 | 可能的影响因素 |
因子 | 股票所属地区 | 可能的影响因素 |
因子 | 2023年净利润同比是否大于0 | 可能的影响因素 |
步骤
1 数据准备
1.1 https://mpbeta.csdn.net/mp_blog/creation/editor/147012294 博文中获取的年数据
遍历每个股票的年数据,计算年收益率
(本文年收益率计算方法=(今年收盘价-去年收盘价)/去年收盘价 *100%)
1.2 通达信A股行情获取的行业和地区
打开通达信-》行情-》A股,按34
1.3 2023年净利润同比数据
akshare 获取 同花顺-财务指标-主要指标
df = ak.stock_financial_abstract_ths(symbol=ticker,indicator='按报告期') df.to_csv(pre_dir+ticker+'.csv',encoding='utf-8')
2 数据合并到一个表中
计算年度收益率,并与行业、地区因子合并
def example_001():'''P245:return:'''year_dir = r'E:/temp007/year/'file_list = os.listdir(year_dir)# 收益率 ((今年-去年)/去年)*100%ticker_dict = {}for file_one in file_list:ticker = file_one[0:6]df00 = pd.read_csv(year_dir + file_one,encoding='utf-8')df00['close_abs'] = df00['closePrice'].abs()df00['ret'] = (df00['closePrice']-df00['closePrice'].shift(1))/df00['close_abs'].shift(1)ticker_dict[ticker] = df00.loc[df00['o_date']=='2024-12-31'].iloc[0]['ret']passdf = pd.DataFrame({'ticker':list(ticker_dict.keys()),'ret':list(ticker_dict.values())})df_industry = pd.read_excel(r'E:/temp007/全部A股20250403.xlsx',engine='openpyxl',dtype={'代码':str})df_ins = df_industry.loc[:,['代码','细分行业','地区']].copy()df_ins.rename(columns={'代码':'ticker','细分行业':'industry','地区':'eara'},inplace=True)df = pd.merge(df,df_ins,on='ticker',how='left')df.to_csv(r'E:/temp007/000.csv',encoding='utf-8')pass
合并2023年净利润同比数据
def example_001_01():pre_dir = r'E:/temp005/'file_list = os.listdir(pre_dir)ticker_dict = {}for file_one in file_list:ticker = file_one[0:6]df = pd.read_csv(pre_dir + file_one,encoding='utf-8')res = df.loc[df['报告期']=='2023-12-31'].iloc[0]['净利润同比增长率']ticker_dict[ticker] = float(res[0:-1]) if res!='FALSE' else Nonepassdf00 = pd.read_csv(r'E:/temp007/000.csv',encoding='utf-8',dtype={'ticker':str})df01 = pd.DataFrame({'ticker':list(ticker_dict.keys()),'tongbi':list(ticker_dict.values())})df00 = pd.merge(df00,df01,on='ticker',how='left')df00.to_csv(r'E:/temp007/111.csv',encoding='utf-8')pass
3 方差分析验证
3.1 单因素方差分析
1)待验证:行业是否是2024年收益率的影响因素
def example_001_10():import statsmodels.stats.anova as anovafrom statsmodels.formula.api import olsyear_return = pd.read_csv(r'E:/temp007/111.csv',encoding='utf-8')model = ols('ret ~ C(industry)',data=year_return.dropna()).fit()# print(model.summary())table1 = anova.anova_lm(model)print(table1)
p值为 1.024e-41,远远小于0.05。所以,行业是影响2024年收益率的一个因素
2)待验证:地区是否是2024年收益率的影响因素
def example_001_10():import statsmodels.stats.anova as anovafrom statsmodels.formula.api import olsyear_return = pd.read_csv(r'E:/temp007/111.csv',encoding='utf-8')model = ols('ret ~ C(eara)',data=year_return.dropna()).fit()# print(model.summary())table1 = anova.anova_lm(model)print(table1)pass
p值 0.049574,与0.05非常接近,可以认为地区不是影响2024年收益率的因素
3) 待验证:2023年净利润同比是否大于0是否是2024年收益率的影响因素
def example_001_10():import statsmodels.stats.anova as anovafrom statsmodels.formula.api import olsyear_return = pd.read_csv(r'E:/temp007/111.csv',encoding='utf-8')year_return['tongbi00'] = 0year_return.loc[year_return['tongbi']>0,'tongbi00'] = 1model = ols('ret ~ C(tongbi00)',data=year_return.dropna()).fit()# print(model.summary())table1 = anova.anova_lm(model)print(table1)pass
p值 6.7878e-14,远远小于0.05。所以2023年净利润同比是否大于0是影响2024年收益率的一个因素。
3.2 多因素方差分析
def example_001_10():import statsmodels.stats.anova as anovafrom statsmodels.formula.api import olsyear_return = pd.read_csv(r'E:/temp007/111.csv',encoding='utf-8')year_return['tongbi00'] = 0year_return.loc[year_return['tongbi']>0,'tongbi00'] = 1model = ols('ret ~ C(tongbi00)+C(industry)+C(eara)',data=year_return.dropna()).fit()# print(model.summary())table1 = anova.anova_lm(model)print(table1)pass
2023年净利润同比是否大于0,与行业,的p值都远远小于0.05,说明两者对2024年收益率有影响。地区的p值大于0.05,说明地区对2024年收益率没有影响。
3.3 析因方差分析
3.2中,2023年净利润同比是否大于0,与行业,两者对2024年收益率有影响。析因方差分析用来检验两者对2024年收益率的影响是否与另一个因子的水平有关。
def example_001_10():import statsmodels.stats.anova as anovafrom statsmodels.formula.api import olsyear_return = pd.read_csv(r'E:/temp007/111.csv',encoding='utf-8')year_return['tongbi00'] = 0year_return.loc[year_return['tongbi']>0,'tongbi00'] = 1model = ols('ret ~ C(tongbi00)*C(industry)',data=year_return.dropna()).fit()# print(model.summary())table1 = anova.anova_lm(model)print(table1)pass
第三个系数的p值 0.9>0.05,即结果并不显著。所以, 2023年净利润同比是否大于0,与行业,两者对2024年收益率的影响并不依赖于另一者的水平。
数据
最后使用的表格数据
通过网盘分享的文件:方差分析.7z
链接: https://pan.baidu.com/s/1X8ktM-BoDx4FqoRiUmsgoQ?pwd=b8kp 提取码: b8kp