R语言逻辑回归logistic对ST股票风险建模分类分析混淆矩阵、ROC曲线可视化

发布时间 2023-12-08 22:20:05作者: 拓端tecdat

全文链接:https://tecdat.cn/?p=34506

原文出处:拓端数据部落公众号

信用风险建模是金融领域的重要课题,通过建立合理的信用风险模型,可以帮助金融机构更好地评估借款人的信用状况,从而有效降低信贷风险。本文使用了 R 语言中的逻辑回归(logistic)模型,利用国泰安数据库中的103个上市公司的数据进行信用风险建模,其中包括51个正常公司和52个ST公司。在这个数据集中,我们选取了经营活动产生的现金流量净额、净资产收益率、每股收益和每股净资产等指标来分析其对公司是否为ST股票的影响。

研究目的

 通过对某股票数据分析,了解经营活动产生的现金流量净额、净资产收益率... 每股收益和每股净资产对股票是否ST的影响。

数据介绍

某年度随机抽取的 102个股票。因变量是否为ST股票(0=非ST,1=ST)。为了能够预测是否为ST,我们采集了下面这些来自当年的指标:经营活动产生的现金流量净额、净资产收益率、每股收益、每股净资产。  
我们做完整的逻辑回归分析,包括参数估计、假设检验,以及预测评估和模型评价;

数据分析与模型建立

首先,我们对数据进行了可视化分析,绘制了变量之间的散点图和计算了它们之间的相关系数。从散点图和相关系数可以看出,每股收益和每股净资产呈正相关关系,并且ST股票和非ST股票的4个变量具有显著差异,非ST股票的各项指标要高于ST股票的变量值。接着,我们进行了完整的逻辑回归分析,包括参数估计、假设检验以及预测评估和模型评价。

读取数据后查看前几行数据

image.png

 
js
 head(data)

image.png

因变量(是否为ST)

 
 
STindex

绘制变量之间的散点图

image.png

从上面的图中,我们可以看到各个变量之间的相关关系,其中每股收益和每股净资产呈正相关关系 。

相关系数

image.png

image.png

可以看到ST股票和非ST股票的4个变量具有显著差异。

非ST股票的各项指标要高于ST股票的变量值。

因此进行逻辑回归模型的分析。

逻辑回归

在逻辑回归分析中,我们将数据集随机抽取2/3作为训练集,然后进行模型拟合和评价。拟合结果显示,经营活动产生的现金流量净额、净资产收益率、每股收益和每股净资产对应的回归系数均达到了统计显著性水平,说明这些指标对股票是否为ST具有显著影响。此外,我们还对模型的预测能力进行了评价,绘制了混淆矩阵和ROC曲线,得到了较高的AUC值,表明模型具有较好的预测效果和识别能力。

随机抽取2/3作为训练集

 
js
split <- sample(1:nrow(data),nrow(data)*(2/3))
summary(fit)

image.png

从输出结果可以看出 ,回归方程为ST=   1.285e+ 1.532e-10经营活动产生的现金流量净额 +3.023e-01 净资产收益率-2.078e+00每股收益-4.586e-01 股净资产 ,变量和的统计量的估计值分别为1.285e+00、1.532e-10、3.023e-01、-2.078e+00和-4.586e-01 ,每股收益和每股净资产对应的值都比显著性水平0.05小,可得2个偏回归系p数在显著性水平0.05下均显著不为零。因此,可以认为每股收益 、每股净资产  具有显著的影响。进一步地剩余方差的估计值,deviance统计量的估计值为96.716 ,说明,回归方程效果较好。

置信区间是给定自变量值后,由回归方程得到的的流失预测值(实0y际上是的平均值)的置信区间;预测区间是实际值的置信区间,在这里称为预测区间。

可视化混淆矩阵

QQ截图20231128144503.png

image.png

可视化ROC曲线

image.png

 
 
performanedict, real ),  "auc" )@y.values[[1]]

image.png

从AUC的值来看,达到了0.8,因此可以认为模型具有较好的预测效果,同时可以看到roc曲线靠近图的左上方,说明模型对客户是否流失具有较好的识别能力,因此该模型可以作为预警系统。然后对模型的残差进行评估。

残差分析

我们进一步对模型进行了残差分析,检验了随机误差项是否独立同分布,并找出了一些离群点。针对发现的异常点,我们进行了剔除处理,并重新建立了模型。重新建立的模型同样进行了混淆矩阵和ROC曲线的评价,结果显示新模型依然具有较好的预测效果和识别能力。

残差分析可以对回归模型的假设条件即随机误差项是否独立同分布进行检验,同时还可以找出离群点。命令语句为plot(lm.1),显示结果如下

image.png

左上图是拟合值与残差的散点图,从图上可以发现,除去第3个离群点外,所有点基本上是随机地分散在纵坐标值为-1和+1的两条平行线之间,这说明随机误差项具有同方差性;左下图是拟合值与残差的标准差的散点图,其意义与上面类似;右上图表明随机误差项是服从正态分布的,其原因是正态Q-Q图近似地可以看成一条直线;右下图的CooK距离图进一步证实第3个观测值是一个离群点,它对回归方程的影响是比较大的,要根据具体问题,讨论出现这一观测值的实际背景。

异常点检测

找到异常点后进行剔除,然后进行建模

 
 
outlier=c(34,45,94 )

image.png

混淆矩阵可视化

image.png

image.png

roc曲线

image.png

 
 
performancedict, real ),  "auc" )@y.values[[1]]

image.png

从AUC的值来看,达到了0.8,因此可以认为模型具有较好的预测效果,同时可以看到roc曲线靠近图的左上方,说明模型对客户是否流失具有较好的识别能力,因此该模型可以作为预警系统。然后对模型的残差进行评估。

结论

通过本文的研究,我们建立了逻辑回归模型来分析公司是否为ST股票与其经营活动产生的现金流量净额、净资产收益率、每股收益和每股净资产之间的关系。我们发现,每股收益对股票是否为ST具有较大影响。然而,需要指出的是,ST股票的形成可能受多种因素影响,本研究只是对其中部分因素进行了分析。未来的研究可以进一步扩大样本量,引入更多潜在因素,不断完善信用风险建模方法,以提高模型的预测精度和鲁棒性。


gettyimages-1379895972-1536x1536.webp

最受欢迎的见解

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言COPULAS和金融时间序列数据VaR分析

5.R语言多元COPULA GARCH 模型时间序列预测

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险