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

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

信用风险建模是金融领域的重要课题,通过建立合理的信用风险模型,可以帮助金融机构更好地评估借款人的信用状况,而有效降低信贷风险点击文末“阅读原文”获取完整代码数据

相关视频

image.png

本文使用了 R 语言中的逻辑回归(logistic)模型,利用国泰安数据库中的103个上市公司的数据进行信用风险建模,其中包括51个正常公司和52个ST公司。在这个数据集中,我们选取了经营活动产生的现金流量净额、净资产收益率、每股收益和每股净资产等指标来分析其对公司是否为ST股票的影响。

研究目的

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

数据介绍

某年度随机抽取的 102个股票。因变量是否为ST股票(0=非ST,1=ST)。为了能够预测是否为ST,我们采集了下面这些来自当年的指标:经营活动产生的现金流量净额、净资产收益率、每股收益、每股净资产。

我们做完整的逻辑回归分析,包括参数估计、假设检验,以及预测评估和模型评价;

数据分析与模型建立

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

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

6e539f751f5bc0f7949d585cb696e921.png

 head(data)

8b88e1e61722ef60e991f55067b8f52a.png

因变量(是否为ST)

STindex

绘制变量之间的散点图

ea59e03cf77cca757d8d9b0b3fea1dee.png

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

相关系数

197e2e5becd9a5935eefaf341e50f136.png 93f8a1cd774770b1dd8c02f8800936ea.png

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

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

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

逻辑回归

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

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

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

7afc75d01b8e4eab4a8b726ccfe283c1.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际上是的平均值)的置信区间;预测区间是实际值的置信区间,在这里称为预测区间。

可视化混淆矩阵

7ad2a6c92dd43b082a46f942f0c35408.png

22cd791b2f79ad7e56b223553529cb0e.png

点击标题查阅往期内容


数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化

e53454e051d666498ae3912710245cb9.png

可视化ROC曲线

fc9d39f9f4c05737c759c6de4886c1f8.png

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

d1561908026d10dbe15a357b51482ea4.png

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

残差分析

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

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

c2d17bc83fadbbe3776b87555a3319b7.png

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

异常点检测

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

e393e91867a3f585db3c665ddca97227.png

混淆矩阵可视化

5eed3998573a67f5d2b653951d1d3648.png

f61e45c008474d3eb17730bbccbc72f3.png

roc曲线


14a1fe172322783ab29421879da6668e.png

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

799b5c2c81b1975a2b328917e240345a.png

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

结论

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

相关文章
|
4月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
4月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
4月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
7月前
|
数据可视化
【R语言实战】——金融时序ARIMA建模
【R语言实战】——金融时序ARIMA建模
|
7月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3