本文主要是介绍运用R语言、Tushare对单支股票进行回归分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、数据描述
(一)数据的获取
(二)数据的预处理及分析
二、初步回归分析
(一)模型及变量
(二)参数估计
(三)假设检验
1. 回归显著性检验
2. 回归系数的显著性检验
3. 回归子集的显著性检验
三、变量选择
(一)最优子集选择
(二)逐步回归
(三)最终模型
(四)假设检验
1. 回归显著性检验
2. 回归系数的显著性检验
(六)残差分析
四、多重共线性
(一)诊断
1. 相关系数
2. 方差膨胀因子(VIF)
3. 特征系统分析
(二)主成分回归
1. 主成分分析
2. 主成分回归
(三)岭回归
五、模型效果及结果分析
(一)训练集
(二)测试集
一、数据描述
(一)数据的获取
本文选取2020年6月1日到2021年9月30日之间顺丰控股股票的相关数据作为训练集、2021年10月8日到2021年12月17日的顺丰控股股票的相关数据作为测试集,其中指标为交易日期(trade_date)、股票代码(ts_code)、开盘价(open)、最高价(high)、最低价(low)、收盘价(close)、前一日收盘价(pre_close)、涨跌额(change)、涨跌幅(pct_chg)、成交量(vol)、成交额(amount)及换手率(turnover_rate)。以上均通过tushare网站(个人ID:411335)的数据接口运用python获取:
import tushare as ts
import pandas as pdts.set_token('Your Token') # 输入个人Tushare接口
pro=ts.pro_api()df1 = ts.pro_bar(ts_code='002352.SZ', adj='qfq', start_date='20200601', end_date='20210930',factors=['tor'])
df1 = df1[::-1]
df1.to_csv("data_train.csv")df2 = ts.pro_bar(ts_code='002352.SZ', adj='qfq', start_date='20211008', end_date='20211217',factors=['tor'])
df2 = df2[::-1]
df2.to_csv("data_test.csv")
(二)数据的预处理及分析
首先,本文对原始数据进行筛选,保留了研究所需数据,删除了多余及缺失数据。接着,由于本文所感兴趣的是前一日的数据对后一日股票价格的影响,因此将后一日的开盘价及收盘价添加进了数据集中。最后,由于解释变量的数据数量及差异较大,本文对其进行了标准化处理:
# 训练集
train.org = read.csv("data_train.csv")[,-1]
train.org$trade_date = as.Date(as.character(train.org[,1]),format="%Y%m%d")library(dplyr)
train.need = dplyr::select(train.org, open:close, amount, turnover_rate) # 数据筛选train.Y = train.need$close[-1]
train.X = train.need[-dim(train.need)[1], ]
X.next_open = train.need$open[-1]train.data = cbind(train.X, next_open = X.next_open, next_close = train.Y) # 最终数据
train.scale = data.frame(scale(train.data)) # 标准化数据
head(train.scale)# 测试集
test.org = read.csv("data_test.csv")[,-1]
test.org$trade_date = as.Date(as.character(test.org[,1]),format="%Y%m%d")test.need = dplyr::select(test.org, open:close, amount, turnover_rate)test.Y = test.need$close[-1]
test.X = test.need[-dim(test.need)[1], ]
X.next_open = test.need$open[-1]test.data = cbind(test.X, next_open = X.next_open, next_close = test.Y)
test.scale = data.frame(scale(test.data))
head(test.scale)
对训练集数据做初步描述性统计,以方便后续分析:
library(ggplot2)
library(ggthemes)# 后一日收盘价走势
p1 = ggplot(train.org) + geom_line(aes(x=trade_date, y=close), lwd=1, col="darkblue") + labs(x="Trade Date",y = "Close Price (RMB)") + theme_economist() + theme(axis.title = element_text(face = "bold"))
p1# 每日收益情况
p2 = train.org %>% mutate(bd=ifelse(pct_chg>=0, ">=0", "<0")) %>% ggplot(aes(x=bd)) + geom_bar(fill=c("green4", "red3"), width=0.3) + labs(x="Profit", y="Count")
p2# 每日涨跌额分布情况
p3 = ggplot(train.org) + geom_density(aes(x=change,colour=I("royalblue")), lwd=1)+labs(x="Difference",y = "Density")
p3
输出:
图1 后一日收盘价走势图
图2 每日收益情况
图3 每日涨跌额分布曲线
可以看到,训练集中的数据涨跌次数基本持平,且近似呈现中心分布。
二、初步回归分析
(一)模型及变量
初步模型为:
这篇关于运用R语言、Tushare对单支股票进行回归分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!