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:
Return on Average Assets (ROAA): This metric measures profitability relative to total assets, reflecting the efficiency with which a bank utilises its assets.
Return on Average Equity (ROAE): This indicator evaluates profitability from the perspective of shareholders, demonstrating the bank’s capability to generate returns on invested equity.
Net Interest Margin (NIM): This metric assesses the efficiency of a bank’s interest-earning assets in relation to its funding costs.
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)
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.
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)
For more information about the dataset, please request me to see the details (email).
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.
Following this previous step, I merge all datasets to create a comprehensive and unified dataset for analysis.
Recognise missing values and denote to NA
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.
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`
)
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 ...
sum(duplicated(data))
## [1] 0
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
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.
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
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)]
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
Geography | Number_of_Banks |
---|---|
Africa | 3 |
Asia-Pacific | 3 |
Europe | 6 |
Latin America and Caribbean | 1 |
Middle East | 2 |
United States and Canada | 2 |
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
)
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
pdata = pdata.frame(data,index = c("Bank","Year"))
ols_ROA = plm(ROAA ~ CAR +
NPL +
LLPr +
CIR + REV + NIIr +
LIQr + LDR + ETA +
Size +
Group, data = pdata,
model = 'pooling',
effect = 'twoways')
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_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')
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
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
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
# 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")
ols_ROE = plm(ROAE ~ CAR +
NPL +
LLPr +
CIR + REV + NIIr +
LIQr + LDR + ETA +
Size +
Group,
data = pdata,
model = "pooling",
effect = "twoways")
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_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")
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
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
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
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")
ols_NIM = plm(NIM ~ CAR +
NPL +
LLPr +
CIR + REV + NIIr +
LIQr + LDR + ETA + Size + Group,
data = pdata,
model = "pooling",
effect = "twoways")
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_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")
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
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
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
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")
##
## 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
##
## 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
##
## 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