【实例】R语言如何做银行财务数据分析?

搜集银行业上市公司的财务数据分析股票价格的财务影响因素,观测流动比率、净资产负债比率、资产固定资产比率、每股收益、净利润、增长率、股价和公布时间等数据。首先描述性分析对银行业上市公司的财务数据进行基础性描述,以便对整个行业形成直观的印象,然后利用因子分析提取对银行业上市公司股价影响较为明显的因素,分析银行业上市公司股价的决定因素,最后利用回归分析方法确定这些因素对股票价格的影响方向和强弱。

统计方法

  • 描述性分析
  • 因子分析
  • 回归分析

具体分析

本案例为了研究的准确性和普遍性,一共搜集了23家上市的金融银行类股票一定是可的股票价格。同时为了准确反映上市公司财务报表呈现的财务信息与股票价格的关系,我们搜集了流动比率、净资产负债比率、资产固定资产比率、每股收益、净利润、增长率等财务指标。

(源数据在文件夹内)

dataf <- read.csv("bank.csv") # 导入数据dataf
##    流动比率 净资产负债比率 资产固定资产比率 每股收益 净利润 增长率  股价
## 1    1.0716       0.020515            27.04   0.1925  17.77 -3.942 18.56
## 2    1.0181       0.009379           113.22   0.1300  14.77 46.914 18.86
## 3    1.0469       0.013588            85.34   0.2230  14.30 25.433 13.65
summary(dataf)
##     流动比率     净资产负债比率    资产固定资产比率    每股收益     
##  Min.   :0.774   Min.   :0.00699   Min.   : 27      Min.   :0.0915  
##  1st Qu.:0.866   1st Qu.:0.00944   1st Qu.: 98      1st Qu.:0.1510  
##  Median :0.893   Median :0.01076   Median :105      Median :0.2230  
##  Mean   :0.919   Mean   :0.01109   Mean   :111      Mean   :0.2251  
##  3rd Qu.:0.956   3rd Qu.:0.01178   3rd Qu.:117      3rd Qu.:0.2943  
##  Max.   :1.072   Max.   :0.02051   Max.   :236      Max.   :0.3900  
##  NA's   :1                                                          
##      净利润         增长率           股价      
##  Min.   :10.3   Min.   :-3.94   Min.   : 5.67  
##  1st Qu.:11.5   1st Qu.:20.16   1st Qu.: 6.66  
##  Median :12.8   Median :25.43   Median :10.24  
##  Mean   :13.0   Mean   :27.43   Mean   :10.34  
##  3rd Qu.:14.4   3rd Qu.:32.96   3rd Qu.:13.04  
##  Max.   :17.8   Max.   :64.61   Max.   :18.86  
## 
样本描述

由R语言自带的summary我们能知道数据的最小值、25%分位数、中位数、均值、75%分位数、最大值以及缺失值数目。但是我们知道,仅仅通过这7个统计值我们不能很好的了解到数据的概貌,因此本章通过利用R语言的其他函数,制作一个样本描述表。

d1 = c(dataf[, 1])d2 = c(dataf[, 2])d3 = c(dataf[, 3])d4 = c(dataf[, 4])d5 = c(dataf[, 5])d6 = c(dataf[, 6])d7 = c(dataf[, 7])#包括7个项目,分别为最小值,25%分位数,中位数,均值,75%分位数,最大值以及缺失值数目sum1 = summary(d1)sum2 = summary(d2)sum3 = summary(d3)sum4 = summary(d4)sum5 = summary(d5)sum6 = summary(d6)sum7 = summary(d7)#样本数N1 = length(d1)-sum1[7]N2 = length(d2)N3 = length(d3)N4 = length(d4)N5 = length(d5)N6 = length(d6)N7 = length(d7)head = c("变量名","流动比率","净资产负债比率","资产固定资产比率","每股收益","净利润","增长率","股价")row1 = c("样本数",N1,N2,N3,N4,N5,N6,N7)row2 = c("全距",sum1[6]-sum1[1],sum2[6]-sum2[1],sum3[6]-sum3[1],sum4[6]-sum4[1],sum5[6]-sum5[1],sum6[6]-sum6[1],sum7[6]-sum7[1])row3 = c("最小值",sum1[1],sum2[1],sum3[1],sum4[1],sum5[1],sum6[1],sum7[1])row4 = c("最大值",sum1[6],sum2[6],sum3[6],sum4[6],sum5[6],sum6[6],sum7[6])row5 = c("均值",sum1[4],sum2[4],sum3[4],sum4[4],sum5[4],sum6[4],sum7[4])row6 = c("中位数",sum1[3],sum2[3],sum3[3],sum4[3],sum5[3],sum6[3],sum7[3])row7 = c("标准差",sd(d1,na.rm=T),sd(d2),sd(d3),sd(d4),sd(d5),sd(d6),sd(d7))result = matrix(c(head, row1, row2, row3, row4, row5, row6, row7),ncol=8,byrow = T)print(t(result))
##      [,1]               [,2]     [,3]      [,4]      [,5]     [,6]    
## [1,] "变量名"           "样本数" "全距"    "最小值"  "最大值" "均值"  
## [2,] "流动比率"         "22"     "0.296"   "0.774"   "1.07"   "0.919" 
## [3,] "净资产负债比率"   "23"     "0.01351" "0.00699" "0.0205" "0.0111"
## [4,] "资产固定资产比率" "23"     "209"     "27"      "236"    "111"   
## [5,] "每股收益"         "23"     "0.2985"  "0.0915"  "0.39"   "0.225" 
## [6,] "净利润"           "23"     "7.5"     "10.3"    "17.8"   "13"    
## [7,] "增长率"           "23"     "68.54"   "-3.94"   "64.6"   "27.4"  
## [8,] "股价"             "23"     "13.23"   "5.67"    "18.9"   "10.3"  
##      [,7]     [,8]                 
## [1,] "中位数" "标准差"             
## [2,] "0.893"  "0.0768336436285581" 
## [3,] "0.0108" "0.00271362995517017"
## [4,] "105"    "35.8888061503178"   
## [5,] "0.223"  "0.0901580500060493" 
## [6,] "12.8"   "1.9540104480683"    
## [7,] "25.4"   "14.8509587755514"   
## [8,] "10.2"   "3.97134479070255"

由上表可知,在从2001到2008年各个季度中,我国银行业上市公司的平均值为10.3439,最大值与最小值之间的全距为13.19元,标准差为3.97元,可见我国银行业上市公司的股价在样本期间波动幅度较大。另外,就净利润指标看,我国银行业公司净利润均值为13亿元,可见在样本期间我国银行业经营状况良好。

因子分析

由于因子分析对缺失值非常的敏感,在进行因子分析之前我们先对数据进行缺失值的检查。

is.na(dataf)
##       流动比率 净资产负债比率 资产固定资产比率 每股收益 净利润 增长率
##  [1,]    FALSE          FALSE            FALSE    FALSE  FALSE  FALSE
##  [2,]    FALSE          FALSE            FALSE    FALSE  FALSE  FALSE
##  [3,]    FALSE          FALSE            FALSE    FALSE  FALSE  FALSE
##  [4,]    FALSE          FALSE            FALSE    FALSE  FALSE  FALSE

##        股价
##  [1,] FALSE
##  [2,] FALSE
##  [3,] FALSE

这时我们发现流动比率变量第23个数据缺失,因此在进行因子分析的时候,我们对缺失值进行整行删除处理,即在因子分析时排除第23行整行的7个数据。

然后,我们对剩余的流动比率、净资产负债比率、资产固定资产比率、每股收益、净利润和增长率这些公司财务变量进行KMO检验,检验选取的财务变量是否适合进行因子分析。

library(psych)         # 导入psych程序包KMO(dataf[-23,-7])     # 排除股价变量和第23行数据
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = dataf[-23, -7])
## Overall MSA =  0.75
## MSA for each item = 
##         流动比率   净资产负债比率 资产固定资产比率         每股收益 
##             0.79             0.74             0.87             0.47 
##           净利润           增长率 
##             0.73             0.74

KMO检验值为0.75,这说明这些财务变量适合做因子分析。

fa.parallel(dataf[-23,-7])   # 绘制碎石图寻找合适因子个数
## Parallel analysis suggests that the number of factors =  2  and the number of components =  1

由碎石图看出,对于因子分析,合适的因子个数为2。因此我们利用psych程序包中的fa函数对所选取的变量做因子分析,利用极大似然法(ml)提取公因子,运用最大方差旋转法(varimax),找出其中2个因子。

fa(dataf[-23,-7], nfactors=2, fm="ml", rotate="varimax",score=T)
## Loading required package: GPArotation
## Factor Analysis using method =  ml
## Call: fa(r = dataf[-23, -7], nfactors = 2, rotate = "varimax", scores = T, 
##     fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                    ML1   ML2   h2    u2 com
## 流动比率          0.60  0.56 0.67 0.331 2.0
## 净资产负债比率    0.98  0.21 1.00 0.005 1.1
## 资产固定资产比率 -0.65 -0.17 0.45 0.547 1.1
## 每股收益          0.05 -0.48 0.23 0.772 1.0
## 净利润            0.53  0.84 1.00 0.005 1.7
## 增长率           -0.63  0.02 0.39 0.609 1.0
## 
##                        ML1  ML2
## SS loadings           2.41 1.32
## Proportion Var        0.40 0.22
## Cumulative Var        0.40 0.62
## Proportion Explained  0.65 0.35
## Cumulative Proportion 0.65 1.00
## 
## Mean item complexity =  1.3
## Test of the hypothesis that 2 factors are sufficient.
## 
## The degrees of freedom for the null model are  15  and the objective function was  3.13 with Chi Square of  56.79
## The degrees of freedom for the model are 4  and the objective function was  0.02 
## 
## The root mean square of the residuals (RMSR) is  0.02 
## The df corrected root mean square of the residuals is  0.04 
## 
## The harmonic number of observations is  22 with the empirical chi square  0.22  with prob <  0.99 
## The total number of observations was  22  with MLE Chi Square =  0.38  with prob <  0.98 
## 
## Tucker Lewis Index of factoring reliability =  1.361
## RMSEA index =  0  and the 90 % confidence intervals are  NA NA
## BIC =  -11.98
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                 ML1  ML2
## Correlation of scores with factors             1.00 0.99
## Multiple R square of scores with factors       0.99 0.99
## Minimum correlation of possible factor scores  0.99 0.98

结果说明:

  1. 从表格可知,两个因子的累计贡献方差(Cumulative Var)为62%,说明得到的两个因子能解释所有变量62%的信息。
  2. 各变量与两个因子的关系如下:
  • 流动比率 = 0.60 × 因子A + 0.56 × 因子B
  • 净资产负债比率 = 0.98 × 因子A + 0.21 × 因子B
  • 资产固定资产比率 = -0.65 × 因子A - 0.17 × 因子B
  • 每股收益 = 0.05 × 因子A - 0.48 × 因子B
  • 净利润 = 0.53 × 因子A + 0.84 × 因子B
  • 增长率 = -0.63 × 因子A - 0.02 × 因子B

因子A主要影响流动比率、净资产负债比率、资产固定资产比率和增长率。其中因子A对流动比率和净资产负债比率有正向影响而对资产固定资产比率和增长率有负向影响。我们将它称为资产因子。

因子B主要影响每股收益、净利润。其中因子B对净利润有正向作用而对每股收益则为负向作用。我们将它称为收益因子。

回归分析

现在利用所选取的财务变量,通过回归分析进一步发掘我国银行业股价与其主要财务指标的关系。

lm <- lm(股价~., data=dataf)lm.aic <- step(lm, trace=FALSE)    # AIC准则lm.bic <- step(lm, k=log(length(dataf[,1])), trace=FALSE)  # BIC准则summary(lm.aic)
## 
## Call:
## lm(formula = 股价 ~ 流动比率 + 净利润 + 增长率, data = dataf)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.670 -0.890 -0.365  0.808  2.953 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -27.4868     4.4273   -6.21  7.4e-06 ***
## 流动比率     22.8340     6.7784    3.37  0.00342 ** 
## 净利润        1.1980     0.2636    4.54  0.00025 ***
## 增长率        0.0522     0.0238    2.19  0.04187 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.46 on 18 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.884,	Adjusted R-squared:  0.865 
## F-statistic: 45.8 on 3 and 18 DF,  p-value: 1.26e-08
summary(lm.bic)
## 
## Call:
## lm(formula = 股价 ~ 流动比率 + 净利润 + 增长率, data = dataf)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.670 -0.890 -0.365  0.808  2.953 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -27.4868     4.4273   -6.21  7.4e-06 ***
## 流动比率     22.8340     6.7784    3.37  0.00342 ** 
## 净利润        1.1980     0.2636    4.54  0.00025 ***
## 增长率        0.0522     0.0238    2.19  0.04187 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.46 on 18 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.884,	Adjusted R-squared:  0.865 
## F-statistic: 45.8 on 3 and 18 DF,  p-value: 1.26e-08

通过AIC和BIC准则的检验,我们能得到所选取的财务变量中,流动比率、净利润和增长率对股价有显著的影响。为了保证线性模型的准确率,我们还需要考察该模型中是否存在自相关关系。以下通过lmtest程序包中的dwtest函数,对模型进行Durbin-Watson检验。

#install.packages("lmtest")#install.packages("zoo")library(lmtest)   # 导入程序包lmtestdwtest(lm.aic)
## 
## 	Durbin-Watson test
## 
## data:  lm.aic
## DW = 2.202, p-value = 0.5286
## alternative hypothesis: true autocorrelation is greater than 0

由检验得到,DW统计量为2,202,p值为0.5286,说明模型中不存在自相关关系。

则股价与流动比率、净利润和增长率的关系为: 股价 = -27.4868 + 22.8340 × 流动比率 + 1.1980 × 净利润 + 0.0522 × 增长率

其中三个变量的系数均在0.01的显著性水平下显著。

研究结论

根据以上所做的分析,我们可以比较有把握地得出以下结论:

(1)通过银行业上市公司股价及财务指标的描述统计分析发现,一般而言,我国银行业上市公司的股价在样本期间波动幅度较大,但相对其他行业较小。另外,就净利润指标看,我国银行业上市公司净利润均值为13亿元,可见我国银行业经营状况良好。

(2)通过银行业上市的各个财务指标的因子分析发现: 在银行业数据中,可以用两个主因子(收益因子、资产因子)来代替解释所有六个财务指标提供的62%的信息。

(3)通过对银行业股票价格与财务指标的回归分析发现: 银行业股价高度受流动比率、净利润和增长率这三个指标影响。其中流动比率1个单位的增加会带动银行业上市公司股价21个单位的增长。

总结:

  • 银行业股票价格总体波动性相对较小,盈利水平较高
  • 银行业财务信息中主要的变量是流动性比率、净利润和增长率
  • 影响银行业股价的最主要因素是银行资产的流动性水平

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【Nature重磅】扩散型忆阻器带来类脑计算大突破,或成神经计算机时代“晶体管”

【新智元导读】马萨诸塞大学阿默斯特分校研究人员研发出一种新型忆阻器,能够忠实模拟生物神经元突触的功能,相关论文日前在《自然-材料》发表。实验证明,与传统的漂移型...

3587
来自专栏企鹅号快讯

断点回归设计的前沿研究现状,RDD

和其他因果分析方法相比, 学术界普遍认为运用断点回归设计更接近准自然实验, 估计的结果更加准确, 因此近年来越来越多的实证文献依赖断点回归设计进行政策效应评估。...

2617
来自专栏大数据挖掘DT机器学习

Slope one:简单高效的推荐算法

推荐系统最早在亚马逊的网站上应用,根据以往用户的购买行为,推荐出购买某种产品同时可能购买的其他产品,国内做的不错的当当网,有时候买书,它总能给我推荐出我感兴趣的...

2666
来自专栏AI科技评论

发现|能自主学习的人工神经突触出现 离人造“大脑”又近一步

AI科技评论按:在人工智能的研究中有一个流派,倾向于认为对大脑的恰当模拟会是制造出人工智能的关键,但事实上,直到今天我们对人脑的工作原理的了解仍然十分粗浅,更谈...

2897
来自专栏云时之间

学术初行:了解下期刊

有时候我们看一些论文期刊,经常会发现一些期刊有国家级期刊、省级期刊、核心期刊这样的标志,那国家级期刊、省级期刊、核心期刊有什么区别?”是时候了解一下了

1554
来自专栏龙行天下CSIEM

科学瞎想系列之六十一 说说噪声

上节课老师说了振动,振动和噪声是不可分割的孪生兄弟,振动在介质中传播就形成声波,声波传到宝宝们的耳朵里就形成了噪声(也有说噪音的)。今天老师就给宝宝们说说噪...

2824
来自专栏机器之心

学界 | 阿里人工智能新研究:在星际争霸中实现多兵种协同作战

选自arXiv 作者:Peng Peng等 机器之心编译 参与:李泽南 在围棋和德州扑克后,RTS 游戏《星际争霸》已经成为人工智能研究者们征服的下一个目标。近...

35811
来自专栏计算机视觉战队

基于图像的场景三维建模

三月已过半旬,已是春暖花开的季节,也是我们科研爱好者最繁忙的一段时间。春天的到来,意味着新一届的学子即将离开学校,走向自己人生的第二段道路,也意味着您年伊始,所...

3129
来自专栏AI科技评论

CCAI | 人工智能的将来,是否就埋藏在大脑那些神经元突触间美妙的电信号中?

前言 我们曾经说过,在人工智能的研究中有一个流派,倾向于认为对大脑的恰当模拟会是制造出人工智能的关键,但事实上,直到今天我们对人脑的工作原理的了解仍然十分粗浅,...

2747
来自专栏AI科技评论

业界 | 心力衰竭患者的福音,IBM 利用 AI 技术帮助病人提前确诊

近几十年,心脏病是导致美国人死亡的主要因素,所以患有心脏衰竭 (Heart Failure) 的美国人越来越多一点也不奇怪。预计到2030年,确诊患有心脏衰竭的...

2616

扫描关注云+社区