Introduction

This dataset offers an overview of the financial and operational metrics of 17 development banks globally, covering the period from 2016 to 2024. It includes key indicators that provide insights into the financial stability, operational efficiency, and sectoral trends within the development banking sector.

The principal financial metrics included in the dataset are as follows:

Library

library(readxl)
library(tidyr)
library(tidyverse)
library(dplyr)
library(knitr)
library(purrr)
library(psych)
library(ggplot2)
library(cowplot)
library(mice)
library(VIM)
library(corrplot)
library(plm)
library(AER)
library(stargazer)
library(lmtest)
library(sandwich)

Preprocessing

Import data

To begin the analysis effectively, the first and most critical step involves organising the dataset to ensure consistency and usability. Below is a detailed guide for entering all the data and unifying the table format.

Development banks

bank_names = c(
  "African Development Bank",
  "African Export-Import Bank (MUSE:AEIB.N0004)",
  "Asian Development Bank",
  "Asian Infrastructure Investment Bank",
  "Caribbean Development Bank",
  "Council of Europe Development Bank",
  "East African Development Bank",
  "ECOWAS Bank for Investment and Development",
  "Eurasian Development Bank",
  "European Bank for Reconstruction and Development",
  "European Investment Bank",
  "Inter-American Development Bank",
  "International Investment Bank",
  "Islamic Development Bank",
  "New Development Bank",
  "Nordic Investment Bank",
  "North American Development Bank"
  )

year_names = as.character(2024:2000)

Load excel files

For more information about the dataset, please request me to see the details (email).

Reformat dataset

All the data are currently in a wide format, and I am transforming it into a longitudinal format, also referred to as panel data, for analytical purposes.

Merging

Following this previous step, I merge all datasets to create a comprehensive and unified dataset for analysis.

Recognise missing values and denote to NA

Overview of the Dataset

As a new step in the preprocessing phase, I will conduct an overview of the dataset to assess its structure, completeness, and relevance. This step ensures that the dataset is well-understood before proceeding with further analysis.

  • Column names
data = data %>% 
  rename(
    CAR  = CAR,
    CCE  = `Cash and cash equivalent`,
    CIR  = `Cost to income`,
    LLP  = `Loan loss provision`,
    NCL  = `Net customer loan`,
    NFI  = `Net fee and commission income`,
    NIT  = `Net income be4 tax`,
    NII  = `Net interest income`,
    NIM  = NIM,
    NPL  = NPL,
    PLP  = `Provision to loan problem`,
    ROAA = ROAA,
    ROAE = ROAE,
    T1   = `Tier 1 ratio`,
    TA   = `Total asset`,
    DEB  = `Total debt`,
    TD   = `Total deposit`,
    TE   = `Total equity`,
    REV  = `Total revenue`
  )
  • Data types
str(data)
## tibble [425 × 22] (S3: tbl_df/tbl/data.frame)
##  $ Bank : chr [1:425] "African Development Bank" "African Development Bank" "African Development Bank" "African Development Bank" ...
##  $ Group: chr [1:425] "Africa" "Africa" "Africa" "Africa" ...
##  $ Year : chr [1:425] "2024" "2023" "2022" "2021" ...
##  $ CAR  : num [1:425] NA NA NA NA NA NA NA NA NA NA ...
##  $ CCE  : num [1:425] NA NA NA NA NA NA NA NA NA NA ...
##  $ CIR  : num [1:425] 41.2 27.5 42.1 63.8 43 ...
##  $ LLP  : num [1:425] -7332 26299 128656 35796 83046 ...
##  $ NCL  : num [1:425] 30895718 29544660 27541515 28134162 30022718 ...
##  $ NFI  : num [1:425] 53233 29198 19097 30114 26182 ...
##  $ NIT  : num [1:425] 470426 541660 320188 137505 276433 ...
##  $ NII  : num [1:425] 570661 468144 465221 594630 537512 ...
##  $ NIM  : num [1:425] 1.1 0.944 0.967 1.193 1.116 ...
##  $ NPL  : num [1:425] 2 3.02 3.29 3.29 2.75 ...
##  $ PLP  : num [1:425] 103.7 106 103.9 82.4 84.6 ...
##  $ ROAA : num [1:425] 0.606 0.927 0.47 0.114 0.395 ...
##  $ ROAE : num [1:425] 2.16 3.48 1.89 0.51 1.84 ...
##  $ T1   : num [1:425] NA NA NA NA NA NA NA NA NA NA ...
##  $ TA   : num [1:425] 55389477 52953841 50865124 50838700 50910130 ...
##  $ DEB  : num [1:425] 34462151 33263258 32296179 35163588 36155231 ...
##  $ TD   : num [1:425] 0 0 0 0 0 0 0 0 0 0 ...
##  $ TE   : num [1:425] 15957478 14508954 13152028 12184309 11220245 ...
##  $ REV  : num [1:425] 787914 782623 770984 479500 635169 ...
  • Duplicates
sum(duplicated(data))
## [1] 0
  • Missing values
sapply(data, function(x) sum(is.na(x)))
##  Bank Group  Year   CAR   CCE   CIR   LLP   NCL   NFI   NIT   NII   NIM   NPL 
##     0     0     0   302   114   176    91    94   229    85    95   175   200 
##   PLP  ROAA  ROAE    T1    TA   DEB    TD    TE   REV 
##   232   110   110   367    84    84   169    84    85

Dealing with missing values

To ensure a balanced panel and avoid arbitrary deletion of banks or years, we align all series to the first year in which every metric is observed for all banks. Thus, the range from 2016 to 2024.

Imputing missing values

  • Report NAs
aggr_plot = aggr(data, col=c('lightblue', 'lightcoral'), 
                 numbers=TRUE, sortVars=TRUE, 
                 labels=names(data), cex.axis=0.7, gap=3, 
                 ylab=c("Missing data","Pattern"))

## 
##  Variables sorted by number of missings: 
##  Variable      Count
##       CAR 0.54248366
##       PLP 0.30718954
##       NFI 0.22222222
##       NPL 0.16993464
##       CCE 0.13071895
##        TD 0.07189542
##       CIR 0.03921569
##       NIM 0.02614379
##      ROAA 0.02614379
##      ROAE 0.02614379
##       LLP 0.01307190
##       NCL 0.01307190
##       NIT 0.01307190
##       NII 0.01307190
##        TA 0.01307190
##       DEB 0.01307190
##        TE 0.01307190
##       REV 0.01307190
##      Bank 0.00000000
##     Group 0.00000000
##      Year 0.00000000
  • Apply Hotdeck
set.seed(2610)
data_imputed = data %>%
  mutate(across(all_of(metric_cols), ~ na_if(.x, 0))) %>%
  as.data.frame() %>%
  hotdeck(
    variable   = metric_cols,
    domain_var = c("Group", "Year")
  ) %>%
  as_tibble()

data = data_imputed[,c(1:21)]

data = hotdeck(data)
data = data[,c(1:21)]

Descriptive statistics

Descriptive tables

describe(data)
##        vars   n        mean           sd      median     trimmed         mad
## Bank*     1 153        9.00         4.92        9.00        9.00        5.93
## Group*    2 153        3.12         1.57        3.00        3.02        1.48
## Year*     3 153        5.00         2.59        5.00        5.00        2.97
## CAR       4 153       57.64        48.56       36.68       47.23       15.59
## CCE       5 153 14598271.55  41637599.57  1918434.00  4026059.62  2716612.46
## CIR       6 153       44.22        34.11       38.77       40.03       20.42
## LLP       7 153    49125.85    164844.89     7000.00    24321.14    21828.19
## NCL       8 153 44213037.87  90920169.75 13265953.60 20573624.15 18182249.98
## NFI       9 153    48555.06     82320.96    10316.00    30608.56    15398.28
## NIT      10 153   732348.82   2747074.97   165859.00   297573.49   234240.42
## NII      11 153   638131.70    901792.23   231005.14   446984.33   307713.84
## NIM      12 153        1.70         1.16        1.36        1.52        1.01
## NPL      13 153        2.79         2.66        2.40        2.41        2.78
## PLP      14 153      143.74       149.64       92.47      111.25       64.72
## ROAA     15 153        0.95         1.92        0.62        0.86        0.53
## ROAE     16 153        3.40         7.10        2.61        2.88        1.90
## TA       17 153 81096792.78 162566301.36 28576225.98 37583111.99 39231987.41
## DEB      18 153 55217561.53 124478207.51 14781000.00 23420206.54 20988594.24
## TD       19 153  1899195.45   2592266.52   307507.00  1347959.91   443869.40
## TE       20 153 15443658.49  22369829.76  4807749.53 10291257.61  6714399.67
## REV      21 153  1085108.87   2917448.35   305630.28   578674.43   424962.51
##                min          max        range skew kurtosis          se
## Bank*         1.00        17.00        16.00 0.00    -1.23        0.40
## Group*        1.00         6.00         5.00 0.44    -0.80        0.13
## Year*         1.00         9.00         8.00 0.00    -1.25        0.21
## CAR          22.52       232.90       210.38 1.86     2.43        3.93
## CCE        8087.68 205086244.65 205078156.97 3.69    12.19  3366200.41
## CIR           1.83       358.43       356.60 5.39    44.98        2.76
## LLP     -344877.17   1492823.01   1837700.19 5.11    38.30    13326.92
## NCL        9553.00 422487713.76 422478160.76 2.96     8.07  7350460.07
## NFI       -5143.84    480339.22    485483.06 2.82     9.77     6655.26
## NIT    -1176770.15  31522000.00  32698770.15 9.49   101.04   222087.85
## NII        5315.46   3782562.86   3777247.40 1.89     3.00    72905.58
## NIM           0.15         5.64         5.49 1.24     0.96        0.09
## NPL           0.04        15.36        15.32 1.34     2.38        0.22
## PLP          12.31       729.21       716.90 2.14     4.32       12.10
## ROAA         -7.24        18.50        25.75 4.28    46.46        0.16
## ROAE        -28.04        69.40        97.44 4.50    49.45        0.57
## TA       366832.00 767027011.62 766660179.62 3.00     8.24 13142706.50
## DEB       75795.00 593298162.69 593222367.69 3.33    10.26 10063466.62
## TD         4422.82  10178933.00  10174510.18 1.62     1.76   209572.33
## TE       251167.00  98393339.23  98142172.23 2.08     3.85  1808493.55
## REV      -68306.00  32149000.00  32217306.00 8.28    82.21   235861.72

Visualisation

  • Numbers of banks by Geography
Number of Development Banks by Geography
Geography Number_of_Banks
Africa 3
Asia-Pacific 3
Europe 6
Latin America and Caribbean 1
Middle East 2
United States and Canada 2

  • Targets: ROA, ROE, NIM by Geography

Histogram

Transformed data

data = data %>%
  mutate(
    # Capital structure
    CAR   = CAR,
    
    # Asset quality
    NPL   = NPL,
    
    # Provision
    LLPr  = LLP / NCL,
    
    # Efficiency
    CIR   = CIR,
    REV   = (REV - mean(REV))/sd(REV),
    NIIr  = NII / TA,
    
    # Liquidity
    LIQr  = CCE / TA,
    LDR   = NCL / TD,
    ETA   = TE  / TA,
    
    # Size
    Size  = log(TA),
    
    # Dependents
    ROAA  = ROAA,
    ROAE  = ROAE,
    NIM   = NIM
  ) %>%
  select(
    Bank, Group, Year,      
    CAR,
    NPL,
    LLPr,
    CIR,  REV,  NIIr,
    LIQr, LDR,  ETA, 
    Size,
    ROAA, ROAE, NIM
  )

Descriptive statistics

describe(data)
##        vars   n   mean     sd median trimmed   mad    min     max   range  skew
## Bank*     1 153   9.00   4.92   9.00    9.00  5.93   1.00   17.00   16.00  0.00
## Group*    2 153   3.12   1.57   3.00    3.02  1.48   1.00    6.00    5.00  0.44
## Year*     3 153   5.00   2.59   5.00    5.00  2.97   1.00    9.00    8.00  0.00
## CAR       4 153  57.64  48.56  36.68   47.23 15.59  22.52  232.90  210.38  1.86
## NPL       5 153   2.79   2.66   2.40    2.41  2.78   0.04   15.36   15.32  1.34
## LLPr      6 153   0.00   0.01   0.00    0.00  0.00  -0.04    0.05    0.09  2.04
## CIR       7 153  44.22  34.11  38.77   40.03 20.42   1.83  358.43  356.60  5.39
## REV       8 153   0.00   1.00  -0.27   -0.17  0.15  -0.40   10.65   11.04  8.28
## NIIr      9 153   0.02   0.01   0.01    0.01  0.01   0.00    0.05    0.05  1.20
## LIQr     10 153   0.20   0.16   0.17    0.18  0.16   0.00    0.67    0.67  0.74
## LDR      11 153 268.51 898.31  15.57   55.41 22.71   0.00 5918.56 5918.55  4.63
## ETA      12 153   0.34   0.21   0.29    0.31  0.16   0.10    1.00    0.90  1.36
## Size     13 153  16.62   2.03  17.17   16.62  2.20  12.81   20.46    7.65 -0.14
## ROAA     14 153   0.95   1.92   0.62    0.86  0.53  -7.24   18.50   25.75  4.28
## ROAE     15 153   3.40   7.10   2.61    2.88  1.90 -28.04   69.40   97.44  4.50
## NIM      16 153   1.70   1.16   1.36    1.52  1.01   0.15    5.64    5.49  1.24
##        kurtosis    se
## Bank*     -1.23  0.40
## Group*    -0.80  0.13
## Year*     -1.25  0.21
## CAR        2.43  3.93
## NPL        2.38  0.22
## LLPr       7.68  0.00
## CIR       44.98  2.76
## REV       82.21  0.08
## NIIr       0.79  0.00
## LIQr      -0.09  0.01
## LDR       21.61 72.62
## ETA        1.64  0.02
## Size      -0.89  0.16
## ROAA      46.46  0.16
## ROAE      49.45  0.57
## NIM        0.96  0.09

Correlation matrix

Model evaluation

Set up Panel data

pdata = pdata.frame(data,index = c("Bank","Year"))

ROAA

Pool OLS

ols_ROA = plm(ROAA ~ CAR + 
                     NPL +  
                     LLPr +
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA +
                     Size +
                     Group, data = pdata,
                     model = 'pooling', 
                     effect = 'twoways')

FEM

fem_ROA = plm(ROAA ~ CAR + 
                     NPL +  
                     LLPr +
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA +
                     Size +
                     Group, data = pdata, 
                     index = c('Bank', 'Year'), 
                     model = 'within',
                     effect = 'twoways')

REM

rem_ROA = plm(ROAA ~ CAR + 
                     NPL +  
                     LLPr +
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA +
                     Size +
                     Group, data = pdata, 
                     index = c('Bank', 'Year'),  
                     model = 'random',
                     effect = 'twoways',
                     random.method = 'walhus')

Hausman test

phtest(fem_ROA, rem_ROA)
## 
##  Hausman Test
## 
## data:  ROAA ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## chisq = 33.914, df = 10, p-value = 0.000191
## alternative hypothesis: one model is inconsistent

Two stages least square

tsls_ROA = ivreg(ROAA ~ CAR + 
                        NPL +  
                        LLPr +
                        CIR + REV +
                        LIQr + LDR +
                        Size +
                        Group | CAR + NPL + LLPr + CIR + REV + NIIr +
                        LDR + ETA +
                        Size + Group, data = pdata)

summary(tsls_ROA, diagnostics = TRUE, 
                  vcov. = vcovHC(tsls_ROA, type = "HC1"))
## 
## Call:
## ivreg(formula = ROAA ~ CAR + NPL + LLPr + CIR + REV + LIQr + 
##     LDR + Size + Group | CAR + NPL + LLPr + CIR + REV + NIIr + 
##     LDR + ETA + Size + Group, data = pdata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -6.64287 -0.37462  0.06205  0.52256  1.88263 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       5.234e+00  2.122e+00   2.466  0.01486 *  
## CAR                               6.014e-03  2.409e-03   2.497  0.01371 *  
## NPL                               1.255e-01  4.995e-02   2.513  0.01312 *  
## LLPr                             -4.502e+01  1.552e+01  -2.901  0.00432 ** 
## CIR                              -1.532e-02  3.333e-03  -4.596 9.57e-06 ***
## REV                               1.462e+00  1.839e-01   7.949 5.81e-13 ***
## LIQr                              3.014e+00  1.282e+00   2.352  0.02007 *  
## LDR                               8.430e-05  4.810e-05   1.752  0.08190 .  
## Size                             -3.019e-01  1.050e-01  -2.876  0.00467 ** 
## GroupAsia-Pacific                 7.649e-01  3.171e-01   2.412  0.01715 *  
## GroupEurope                      -1.764e-01  3.171e-01  -0.556  0.57902    
## GroupLatin America and Caribbean -5.678e-01  5.034e-01  -1.128  0.26129    
## GroupMiddle East                  1.457e+00  3.027e-01   4.813 3.82e-06 ***
## GroupUnited States and Canada     7.853e-01  2.666e-01   2.945  0.00379 ** 
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   2 138    34.446 7.33e-13 ***
## Wu-Hausman         1 138     6.823     0.01 ** 
## Sargan             1  NA    17.279 3.23e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.004 on 139 degrees of freedom
## Multiple R-Squared: 0.7493,  Adjusted R-squared: 0.7259 
## Wald test: 19.73 on 13 and 139 DF,  p-value: < 2.2e-16

First stage

fs_2sls = lm(LIQr ~ CAR + 
                    NPL + 
                    LLPr + 
                    CIR + REV +
                    NIIr + LDR + ETA +
                    Size + 
                    Group, data = pdata)

summary(fs_2sls)
## 
## Call:
## lm(formula = LIQr ~ CAR + NPL + LLPr + CIR + REV + NIIr + LDR + 
##     ETA + Size + Group, data = pdata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.30034 -0.05453 -0.01157  0.03880  0.25166 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -1.051e-01  1.606e-01  -0.654  0.51418    
## CAR                              -4.570e-04  2.132e-04  -2.143  0.03383 *  
## NPL                              -7.845e-03  4.147e-03  -1.891  0.06066 .  
## LLPr                             -6.169e-01  9.191e-01  -0.671  0.50325    
## CIR                              -9.229e-05  2.952e-04  -0.313  0.75503    
## REV                              -6.807e-03  1.000e-02  -0.681  0.49729    
## NIIr                              3.173e+00  1.157e+00   2.744  0.00688 ** 
## LDR                              -8.043e-06  1.082e-05  -0.743  0.45863    
## ETA                               5.301e-01  6.671e-02   7.946 6.11e-13 ***
## Size                              5.385e-03  8.254e-03   0.652  0.51524    
## GroupAsia-Pacific                -2.649e-02  4.174e-02  -0.635  0.52672    
## GroupEurope                       1.841e-01  3.101e-02   5.937 2.24e-08 ***
## GroupLatin America and Caribbean -1.025e-01  4.769e-02  -2.149  0.03338 *  
## GroupMiddle East                  2.092e-02  3.909e-02   0.535  0.59332    
## GroupUnited States and Canada    -1.139e-01  3.657e-02  -3.114  0.00225 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1099 on 138 degrees of freedom
## Multiple R-squared:  0.5843, Adjusted R-squared:  0.5421 
## F-statistic: 13.85 on 14 and 138 DF,  p-value: < 2.2e-16
vif(rem_ROA)
##           GVIF Df GVIF^(1/(2*Df))
## CAR   1.242231  1        1.114554
## NPL   1.412472  1        1.188475
## LLPr  1.187062  1        1.089524
## CIR   1.196050  1        1.093641
## REV   1.167311  1        1.080422
## NIIr  1.717628  1        1.310583
## LIQr  2.089654  1        1.445564
## LDR   1.120205  1        1.058397
## ETA   3.062559  1        1.750017
## Size  2.997367  1        1.731291
## Group 6.031235  5        1.196852
bptest(rem_ROA)
## 
##  studentized Breusch-Pagan test
## 
## data:  rem_ROA
## BP = 27.466, df = 15, p-value = 0.02516
pdwtest(rem_ROA)
## 
##  Durbin-Watson test for serial correlation in panel models
## 
## data:  ROAA ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## DW = 1.7813, p-value = 0.01895
## alternative hypothesis: serial correlation in idiosyncratic errors

Control function (Report fisrt stage only)

# Mean of time varying
tvp_means = data %>%
  group_by(Bank) %>%
  summarise(
    m_CAR  = mean(CAR,  na.rm=TRUE),
    m_NPL  = mean(NPL, na.rm=TRUE),
    m_LLPr = mean(LLPr, na.rm=TRUE),
    m_CIR  = mean(CIR,  na.rm=TRUE),
    m_REV  = mean(REV,  na.rm=TRUE),
    m_NIIr = mean(NIIr, na.rm=TRUE),
    m_LIQr = mean(LIQr, na.rm=TRUE),
    m_LDR  = mean(LDR,  na.rm=TRUE),
    m_ETA  = mean(ETA,  na.rm=TRUE),
    m_Size = mean(Size, na.rm=TRUE),
    .groups = "drop"
  )

data_cre = data %>%
  left_join(tvp_means, by = "Bank")

# Set up panel
pdata_cre = pdata.frame(data_cre, index = c("Bank","Year"))

# Stage 1: CRE with LIQr is endogeneity
stage1_cre = plm(LIQr ~ CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV + 
                        LDR + 
                        Size +
                        # instruments
                        NIIr + ETA +
                        # TVP means
                        m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + 
                        m_NIIr + m_ETA + m_LDR + m_Size +
                        # geography
                        Group,
                        data          = pdata_cre,
                        model         = "random",
                        effect        = "twoways",
                        random.method = 'walhus')
# F-test for mean of time varying
fs1_H_null = c(
  "m_CAR = 0",
  "m_NPL = 0",
  "m_LLPr = 0",
  "m_CIR = 0",
  "m_REV = 0",
  "m_NIIr = 0",
  "m_LDR = 0",
  "m_ETA = 0",
  "m_Size = 0"
)

vc = vcovHC(stage1_cre, type = "HC1", cluster = "group")

linearHypothesis(
  stage1_cre,
  fs1_H_null,
  vcov. = vc,
  test  = "F"
)
## 
## Linear hypothesis test:
## m_CAR = 0
## m_NPL = 0
## m_LLPr = 0
## m_CIR = 0
## m_REV = 0
## m_NIIr = 0
## m_LDR = 0
## m_ETA = 0
## m_Size = 0
## 
## Model 1: restricted model
## Model 2: LIQr ~ CAR + NPL + LLPr + CIR + REV + LDR + Size + NIIr + ETA + 
##     m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + m_NIIr + m_ETA + 
##     m_LDR + m_Size + Group
## 
## Note: Coefficient covariance matrix supplied.
## 
##   Res.Df Df     F    Pr(>F)    
## 1    138                       
## 2    129  9 11.88 1.716e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Stage 1: CRE with LIQr is endogeneity
stage1_cre = plm(LIQr ~ CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV + 
                        LDR + 
                        Size +
                        # instruments
                        NIIr + ETA +
                        # TVP means
                        m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + 
                        m_NIIr + m_ETA + m_LDR + m_Size +
                        # geography
                        Group,
                        data          = pdata_cre,
                        model         = "within",
                        effect        = "twoways")
summary(
  stage1_cre, 
  vcov = function(x) vcovHC(x, type="HC1", cluster="group"),
  doFit = TRUE
)
## Twoways effects Within Model
## 
## Note: Coefficient variance-covariance matrix supplied: function(x) vcovHC(x, type = "HC1", cluster = "group")
## 
## Call:
## plm(formula = LIQr ~ CAR + NPL + LLPr + CIR + REV + LDR + Size + 
##     NIIr + ETA + m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + m_NIIr + 
##     m_ETA + m_LDR + m_Size + Group, data = pdata_cre, effect = "twoways", 
##     model = "within")
## 
## Balanced Panel: n = 17, T = 9, N = 153
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -0.1922318 -0.0288232 -0.0027169  0.0230231  0.3339755 
## 
## Coefficients:
##         Estimate  Std. Error t-value  Pr(>|t|)    
## CAR  -5.9942e-05  1.0529e-04 -0.5693   0.57022    
## NPL  -9.4939e-03  4.4590e-03 -2.1291   0.03530 *  
## LLPr  1.0647e+00  4.5901e-01  2.3196   0.02207 *  
## CIR  -8.9736e-05  2.0329e-04 -0.4414   0.65972    
## REV  -5.3413e-03  2.7880e-03 -1.9158   0.05778 .  
## LDR  -6.0738e-06  5.5518e-06 -1.0940   0.27615    
## Size -1.5766e-01  3.5327e-02 -4.4628 1.849e-05 ***
## NIIr  2.5975e+00  1.0877e+00  2.3881   0.01851 *  
## ETA   1.4748e-01  6.2362e-02  2.3649   0.01965 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    1.0209
## Residual Sum of Squares: 0.59716
## R-Squared:      0.41509
## Adj. R-Squared: 0.25288
## F-statistic: 22.1822 on 9 and 16 DF, p-value: 2.1115e-07
# Residuals
pdata_cre$e_hat = residuals(stage1_cre)

# Stage 2: CRE with e_hat
cf_ROA = plm(ROAA ~ e_hat + LIQr + 
                        CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV + 
                        LDR + 
                        Size + 
                        m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + 
                        m_LIQr + m_LDR + m_Size +
                        Group,
                        data          = pdata_cre,
                        model         = "within",
                        effect        = "twoways")

ROAE

Pool OLS

ols_ROE = plm(ROAE ~ CAR + 
                     NPL + 
                     LLPr + 
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA + 
                     Size + 
                     Group, 
                     data   = pdata,
                     model  = "pooling",
                     effect = "twoways")

FEM

fem_ROE = plm(ROAE ~ CAR + 
                     NPL + 
                     LLPr + 
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA + 
                     Size + 
                     Group,
                     data   = pdata,
                     index  = c("Bank","Year"),
                     model  = "within",
                     effect = "twoways")

REM

rem_ROE = plm(ROAE ~ CAR + 
                     NPL + 
                     LLPr + 
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA + 
                     Size + 
                     Group,
                     data          = pdata,
                     index         = c("Bank","Year"),
                     model         = "random",
                     effect        = "twoways",
                     random.method = "walhus")

Hausman test

phtest(fem_ROE, rem_ROE)
## 
##  Hausman Test
## 
## data:  ROAE ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## chisq = 200.43, df = 10, p-value < 2.2e-16
## alternative hypothesis: one model is inconsistent

Two stages least square

tsls_ROE = ivreg(ROAE ~ CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV +
                        LIQr + LDR + 
                        Size + 
                        Group | CAR + NPL + LLPr + CIR + REV + NIIr + 
                        LDR + ETA + Size + Group, data = pdata)

summary(
  tsls_ROE,
  diagnostics = TRUE,
  vcov.       = sandwich::vcovHC(tsls_ROE, type="HC1")
)
## 
## Call:
## ivreg(formula = ROAE ~ CAR + NPL + LLPr + CIR + REV + LIQr + 
##     LDR + Size + Group | CAR + NPL + LLPr + CIR + REV + NIIr + 
##     LDR + ETA + Size + Group, data = pdata)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -27.969  -1.341   0.265   1.422   6.548 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       2.284e+01  8.331e+00   2.741  0.00693 ** 
## CAR                               1.270e-02  7.431e-03   1.709  0.08966 .  
## NPL                               2.234e-01  1.811e-01   1.233  0.21962    
## LLPr                             -1.265e+02  5.289e+01  -2.392  0.01807 *  
## CIR                              -6.862e-02  1.365e-02  -5.026 1.52e-06 ***
## REV                               5.437e+00  5.426e-01  10.021  < 2e-16 ***
## LIQr                             -4.814e+00  4.637e+00  -1.038  0.30103    
## LDR                               2.014e-05  9.879e-05   0.204  0.83874    
## Size                             -1.076e+00  3.984e-01  -2.701  0.00778 ** 
## GroupAsia-Pacific                 1.868e+00  7.549e-01   2.475  0.01452 *  
## GroupEurope                       1.830e+00  1.081e+00   1.694  0.09258 .  
## GroupLatin America and Caribbean -2.524e+00  1.334e+00  -1.892  0.06054 .  
## GroupMiddle East                  6.693e+00  1.080e+00   6.198 6.10e-09 ***
## GroupUnited States and Canada     6.873e-01  7.759e-01   0.886  0.37730    
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   2 138    34.446 7.33e-13 ***
## Wu-Hausman         1 138     0.443    0.507    
## Sargan             1  NA    18.702 1.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.486 on 139 degrees of freedom
## Multiple R-Squared: 0.7797,  Adjusted R-squared: 0.7591 
## Wald test: 23.17 on 13 and 139 DF,  p-value: < 2.2e-16

Diagnostic

vif(rem_ROE)
##           GVIF Df GVIF^(1/(2*Df))
## CAR   1.188815  1        1.090328
## NPL   1.341391  1        1.158184
## LLPr  1.161173  1        1.077578
## CIR   1.171586  1        1.082398
## REV   1.137717  1        1.066638
## NIIr  1.629824  1        1.276646
## LIQr  1.973629  1        1.404859
## LDR   1.099028  1        1.048345
## ETA   2.816445  1        1.678227
## Size  2.795816  1        1.672070
## Group 4.806536  5        1.169993
bptest(rem_ROE)
## 
##  studentized Breusch-Pagan test
## 
## data:  rem_ROE
## BP = 20.245, df = 15, p-value = 0.1627
pdwtest(rem_ROE)
## 
##  Durbin-Watson test for serial correlation in panel models
## 
## data:  ROAE ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## DW = 1.7099, p-value = 0.006183
## alternative hypothesis: serial correlation in idiosyncratic errors

Control function

cf_ROE = plm(ROAE ~ e_hat + LIQr + 
                        CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV + 
                        LDR + 
                        Size + 
                        m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + 
                        m_LIQr + m_LDR + m_Size +
                        Group,
                        data   = pdata_cre,
                        model  = "within",
                        effect = "twoways")

NIM

Pool OLS

ols_NIM = plm(NIM ~ CAR + 
                     NPL + 
                     LLPr + 
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA + Size + Group,
                     data   = pdata,
                     model  = "pooling",
                     effect = "twoways")

FEM

fem_NIM = plm(NIM ~ CAR + 
                     NPL + 
                     LLPr + 
                     CIR + REV + NIIr +
                     LIQr + LDR + ETA + Size + Group,
                     data   = pdata,
                     index  = c("Bank","Year"),
                     model  = "within",
                     effect = "twoways")

REM

rem_NIM = plm(NIM ~ CAR + 
                    NPL + 
                    LLPr + 
                    CIR + REV + NIIr +
                    LIQr + LDR + ETA + 
                    Size + 
                    Group,
                    data          = pdata,
                    index         = c("Bank","Year"),
                    model         = "random",
                    effect        = "twoways",
                    random.method = "walhus")

Hausman test

phtest(fem_NIM, rem_NIM)
## 
##  Hausman Test
## 
## data:  NIM ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## chisq = 10.813, df = 10, p-value = 0.3723
## alternative hypothesis: one model is inconsistent

2SLS

tsls_NIM = ivreg(NIM ~ CAR + 
                       NPL + 
                       LLPr + 
                       CIR + REV +
                       LIQr + LDR + 
                       Size + 
                       Group | CAR + NPL + LLPr + CIR + REV + NIIr + 
                       LDR + ETA + Size + Group, data = pdata)

summary(tsls_NIM,
        diagnostics = TRUE,
        vcov.       = sandwich::vcovHC(tsls_NIM, type="HC1"))
## 
## Call:
## ivreg(formula = NIM ~ CAR + NPL + LLPr + CIR + REV + LIQr + LDR + 
##     Size + Group | CAR + NPL + LLPr + CIR + REV + NIIr + LDR + 
##     ETA + Size + Group, data = pdata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.61654 -0.52909 -0.04966  0.46146  3.33077 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       5.022e+00  9.467e-01   5.305 4.34e-07 ***
## CAR                               1.350e-03  1.355e-03   0.996   0.3209    
## NPL                               2.840e-02  3.351e-02   0.848   0.3981    
## LLPr                              8.104e+00  1.157e+01   0.700   0.4849    
## CIR                              -5.178e-03  3.524e-03  -1.469   0.1440    
## REV                               1.081e-01  5.946e-02   1.819   0.0711 .  
## LIQr                              4.211e+00  9.538e-01   4.415 2.02e-05 ***
## LDR                               7.893e-05  4.278e-05   1.845   0.0672 .  
## Size                             -2.256e-01  4.560e-02  -4.947 2.14e-06 ***
## GroupAsia-Pacific                -7.302e-01  2.998e-01  -2.435   0.0161 *  
## GroupEurope                      -1.018e+00  2.391e-01  -4.257 3.79e-05 ***
## GroupLatin America and Caribbean -5.631e-02  2.185e-01  -0.258   0.7970    
## GroupMiddle East                  4.516e-01  3.743e-01   1.207   0.2297    
## GroupUnited States and Canada     2.531e-01  2.218e-01   1.141   0.2558    
## 
## Diagnostic tests:
##                  df1 df2 statistic  p-value    
## Weak instruments   2 138     34.45 7.33e-13 ***
## Wu-Hausman         1 138     15.00 0.000165 ***
## Sargan             1  NA    110.69  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.902 on 139 degrees of freedom
## Multiple R-Squared: 0.4475,  Adjusted R-squared: 0.3958 
## Wald test: 26.66 on 13 and 139 DF,  p-value: < 2.2e-16

Diagnostic

vif(rem_NIM)
##           GVIF Df GVIF^(1/(2*Df))
## CAR   1.252586  1        1.119190
## NPL   1.423935  1        1.193288
## LLPr  1.193289  1        1.092378
## CIR   1.201340  1        1.096057
## REV   1.173612  1        1.083334
## NIIr  1.739428  1        1.318874
## LIQr  2.114512  1        1.454136
## LDR   1.125064  1        1.060690
## ETA   3.107449  1        1.762796
## Size  3.037294  1        1.742783
## Group 6.290773  5        1.201906
bptest(rem_NIM)  
## 
##  studentized Breusch-Pagan test
## 
## data:  rem_NIM
## BP = 34.875, df = 15, p-value = 0.002562
pdwtest(rem_NIM)
## 
##  Durbin-Watson test for serial correlation in panel models
## 
## data:  NIM ~ CAR + NPL + LLPr + CIR + REV + NIIr + LIQr + LDR + ETA +  ...
## DW = 1.4707, p-value = 2.8e-05
## alternative hypothesis: serial correlation in idiosyncratic errors

Control function

cf_NIM = plm(NIM ~ e_hat + LIQr + 
                        CAR + 
                        NPL + 
                        LLPr + 
                        CIR + REV + 
                        LDR + 
                        Size + 
                        m_CAR + m_NPL + m_LLPr + m_CIR + m_REV + 
                        m_LIQr + m_LDR + m_Size +
                        Group,
                        data   = pdata_cre,
                        model  = "within",
                        effect = "twoways")

Reporting

ROAA

## 
## Estimators for ROAA
## ======================================================================================
##                                                   Dependent variable:                 
##                                  -----------------------------------------------------
##                                                          ROAA                         
##                                              panel              instrumental   panel  
##                                              linear             variable   linear  
##                                  Pooled OLS    FE        RE         2SLS        CF    
##                                     (1)        (2)       (3)        (4)         (5)   
## --------------------------------------------------------------------------------------
## e_hat                                                                        -19.61***
##                                                                               (5.25)  
##                                                                                       
## CAR                               0.004***   0.003**   0.004**     0.01**    0.004*** 
##                                   (0.002)    (0.001)   (0.002)    (0.002)     (0.001) 
##                                                                                       
## NPL                                0.10**     0.09*     0.09*      0.13**     0.29*** 
##                                    (0.05)    (0.05)    (0.05)      (0.05)     (0.09)  
##                                                                                       
## LLPr                             -48.66***  -45.28*** -48.63***  -45.02***   -68.01***
##                                    (8.16)    (7.95)    (8.40)     (15.52)     (10.20) 
##                                                                                       
## CIR                               -0.01***  -0.01***  -0.01***    -0.02***    -0.01** 
##                                   (0.003)    (0.003)   (0.002)    (0.003)     (0.003) 
##                                                                                       
## REV                               1.40***    1.58***   1.46***    1.46***     1.69*** 
##                                    (0.24)    (0.12)    (0.20)      (0.18)     (0.11)  
##                                                                                       
## NIIr                              49.95***  61.33***  53.84***                        
##                                   (10.25)    (11.81)   (9.68)                         
##                                                                                       
## LIQr                               -0.28     1.24**     -0.18      3.01**    20.85*** 
##                                    (0.74)    (0.49)    (0.67)      (1.28)     (5.34)  
##                                                                                       
## LDR                                0.0000    -0.0000   0.0000     0.0001*    0.0001***
##                                   (0.0000)  (0.0000)  (0.0000)    (0.0000)   (0.0000) 
##                                                                                       
## ETA                                 1.05      1.93*     1.18                          
##                                    (0.74)    (1.07)    (0.74)                         
##                                                                                       
## Size                               -0.20*     0.63      -0.18     -0.30***    3.93*** 
##                                    (0.12)    (0.54)    (0.12)      (0.10)     (1.27)  
##                                                                                       
## GroupAsia-Pacific                  1.05*                1.00*      0.76**             
##                                    (0.54)              (0.54)      (0.32)             
##                                                                                       
## GroupEurope                        0.54*                0.54*      -0.18              
##                                    (0.27)              (0.29)      (0.32)             
##                                                                                       
## GroupLatin America and Caribbean  -0.72***            -0.70***     -0.57              
##                                    (0.26)              (0.27)      (0.50)             
##                                                                                       
## GroupMiddle East                  1.33***              1.29***    1.46***             
##                                    (0.35)              (0.37)      (0.30)             
##                                                                                       
## GroupUnited States and Canada       0.47                0.47      0.79***             
##                                    (0.34)              (0.36)      (0.27)             
##                                                                                       
## Constant                            2.90                2.46       5.23**             
##                                    (2.19)              (2.20)      (2.12)             
##                                                                                       
## --------------------------------------------------------------------------------------
## Observations                        153        153       153        153         153   
## R2                                  0.81      0.82      0.81        0.75       0.82   
## ======================================================================================
## Note:                                                      *p<0.1; **p<0.05; ***p<0.01
##                                                              HC1 SEs clustered by Bank

ROAE

## 
## Estimators for ROAE
## =========================================================================================
##                                                    Dependent variable:                   
##                                  --------------------------------------------------------
##                                                            ROAE                          
##                                               panel               instrumental   panel   
##                                               linear               variable    linear  
##                                  Pooled OLS     FE         RE         2SLS         CF    
##                                     (1)        (2)        (3)         (4)         (5)    
## -----------------------------------------------------------------------------------------
## e_hat                                                                            -33.88  
##                                                                                 (21.46)  
##                                                                                          
## CAR                               0.01***    0.01***    0.01***      0.01*      0.01***  
##                                   (0.004)    (0.002)    (0.004)      (0.01)     (0.002)  
##                                                                                          
## NPL                                 0.24       0.24       0.20        0.22       0.57*   
##                                    (0.17)     (0.16)     (0.16)      (0.18)      (0.34)  
##                                                                                          
## LLPr                             -130.43*** -126.87*** -130.82***  -126.55**   -167.47***
##                                   (44.44)    (32.77)    (41.90)     (52.89)     (47.25)  
##                                                                                          
## CIR                               -0.06***   -0.03***   -0.05***    -0.07***    -0.03*** 
##                                    (0.01)     (0.01)     (0.01)      (0.01)      (0.01)  
##                                                                                          
## REV                               5.33***    6.03***    5.67***     5.44***     6.22***  
##                                    (0.75)     (0.29)     (0.57)      (0.54)      (0.28)  
##                                                                                          
## NIIr                              132.81**   113.36**  130.67***                         
##                                   (53.67)    (45.46)    (46.67)                          
##                                                                                          
## LIQr                               -1.70       3.52      -1.52       -4.81       37.40*  
##                                    (3.00)     (2.28)     (2.78)      (4.64)     (21.09)  
##                                                                                          
## LDR                               -0.0000    -0.0001    -0.0001      0.0000      0.0002  
##                                   (0.0002)   (0.0001)   (0.0001)    (0.0001)    (0.0002) 
##                                                                                          
## ETA                                -4.17       2.63      -2.42                           
##                                    (3.79)     (4.17)     (3.75)                          
##                                                                                          
## Size                               -0.78*      2.84      -0.70      -1.08***     8.69*   
##                                    (0.46)     (2.03)     (0.49)      (0.40)      (4.98)  
##                                                                                          
## GroupAsia-Pacific                  3.28*                  2.81       1.87**              
##                                    (1.77)                (1.73)      (0.75)              
##                                                                                          
## GroupEurope                        1.64*                 1.75*       1.83*               
##                                    (0.85)                (0.99)      (1.08)              
##                                                                                          
## GroupLatin America and Caribbean   -1.55*                -1.60*      -2.52*              
##                                    (0.93)                (0.88)      (1.33)              
##                                                                                          
## GroupMiddle East                  5.92***               5.93***     6.69***              
##                                    (1.77)                (2.09)      (1.08)              
##                                                                                          
## GroupUnited States and Canada       1.24                  1.18        0.69               
##                                    (0.96)                (0.98)      (0.78)              
##                                                                                          
## Constant                           15.97*                13.81      22.84***             
##                                    (9.26)                (9.39)      (8.33)              
##                                                                                          
## -----------------------------------------------------------------------------------------
## Observations                        153        153        153         153         153    
## R2                                  0.81       0.84       0.81        0.78        0.83   
## =========================================================================================
## Note:                                                         *p<0.1; **p<0.05; ***p<0.01
##                                                                 HC1 SEs clustered by Bank

NIM

## 
## Estimators for NIM
## ======================================================================================
##                                                   Dependent variable:                 
##                                  -----------------------------------------------------
##                                                           NIM                         
##                                              panel              instrumental   panel  
##                                              linear             variable   linear  
##                                  Pooled OLS    FE        RE         2SLS        CF    
##                                     (1)        (2)       (3)        (4)         (5)   
## --------------------------------------------------------------------------------------
## e_hat                                                                        -27.51***
##                                                                               (2.87)  
##                                                                                       
## CAR                                -0.001    -0.0005   -0.001      0.001      0.0004  
##                                   (0.0004)  (0.0003)  (0.0004)    (0.001)    (0.0004) 
##                                                                                       
## NPL                                -0.01      0.001     -0.01       0.03      0.28*** 
##                                    (0.01)    (0.01)    (0.01)      (0.03)     (0.02)  
##                                                                                       
## LLPr                                1.93      1.11      1.64        8.10     -33.77***
##                                    (1.32)    (1.89)    (1.41)     (11.57)     (4.89)  
##                                                                                       
## CIR                               -0.001**  -0.0005** -0.001***    -0.01     0.003*** 
##                                   (0.0003)  (0.0002)  (0.0002)    (0.004)     (0.001) 
##                                                                                       
## REV                               -0.0002     -0.01    -0.001      0.11*      0.15*** 
##                                    (0.01)    (0.01)    (0.005)     (0.06)     (0.01)  
##                                                                                       
## NIIr                             102.77***  102.81*** 102.56***                       
##                                    (2.78)    (3.91)    (3.08)                         
##                                                                                       
## LIQr                                0.13      0.32      0.14      4.21***    27.83*** 
##                                    (0.11)    (0.26)    (0.13)      (0.95)     (3.05)  
##                                                                                       
## LDR                               -0.0000    -0.0000   -0.0000    0.0001*    0.0002***
##                                   (0.0000)  (0.0000)  (0.0000)    (0.0000)   (0.0000) 
##                                                                                       
## ETA                               0.58***    1.13***   0.67***                        
##                                    (0.18)    (0.20)    (0.19)                         
##                                                                                       
## Size                               -0.01     0.16***   -0.0004    -0.23***    5.12*** 
##                                    (0.01)    (0.05)    (0.01)      (0.05)     (0.57)  
##                                                                                       
## GroupAsia-Pacific                  -0.002               -0.02     -0.73**             
##                                    (0.05)              (0.06)      (0.30)             
##                                                                                       
## GroupEurope                        -0.02                -0.01     -1.02***            
##                                    (0.06)              (0.07)      (0.24)             
##                                                                                       
## GroupLatin America and Caribbean   -0.06                -0.07      -0.06              
##                                    (0.04)              (0.05)      (0.22)             
##                                                                                       
## GroupMiddle East                    0.09                0.10        0.45              
##                                    (0.07)              (0.08)      (0.37)             
##                                                                                       
## GroupUnited States and Canada     -0.09**              -0.08**      0.25              
##                                    (0.03)              (0.04)      (0.22)             
##                                                                                       
## Constant                            0.07                -0.05     5.02***             
##                                    (0.17)              (0.19)      (0.95)             
##                                                                                       
## --------------------------------------------------------------------------------------
## Observations                        153        153       153        153         153   
## R2                                  0.98      0.94      0.98        0.45       0.69   
## ======================================================================================
## Note:                                                      *p<0.1; **p<0.05; ***p<0.01
##                                                              HC1 SEs clustered by Bank