library(readxl)
corporate_governance_data <- read_excel("C:/Users/Fakudze/Desktop/Pamela/corporate_governance_data.xlsx")
View(corporate_governance_data)
library(tidyverse)
str(corporate_governance_data)
## tibble [15 × 9] (S3: tbl_df/tbl/data.frame)
## $ Company : chr [1:15] "RES" "RES" "RES" "RES" ...
## $ Year : num [1:15] 2024 2023 2022 2021 2020 ...
## $ Board Size : num [1:15] 12 12 12 12 12 12 12 12 12 12 ...
## $ Indep (%) : num [1:15] 16.7 16.7 16.7 18.2 18.2 16.7 15.4 15.4 16.7 16.7 ...
## $ Meetings : num [1:15] 4 4 4 4 4 4 4 4 4 4 ...
## $ Net Profit (E'm) : num [1:15] 64801 178533 302622 507564 299561 ...
## $ Total Assets (E'm): num [1:15] 5279493 4617014 4193764 3962256 3492365 ...
## $ ROA (%) : num [1:15] 19.2 6.8 12.3 21.5 14.7 11.6 16.7 24.1 17.7 15.5 ...
## $ ROE (%) : num [1:15] 20.7 6.5 11.6 20.4 13.1 10.6 15.2 20.8 15.6 14.4 ...
library(dplyr)
company_data <- corporate_governance_data %>%
rename(BoardSize = `Board Size`,
Indep = `Indep (%)`,
NetProfit = `Net Profit (E'm)`,
TotalAssets = `Total Assets (E'm)`,
ROA = `ROA (%)`,
ROE = `ROE (%)`)
library(summarytools)
company_data %>%
select(-Company, -Year) %>%
descr(order = "preserve",
stats = c("mean", "sd", "min", "q1", "med",
"q3", "max"),
round.digits = 2)
## Descriptive Statistics
## company_data
## N: 15
##
## BoardSize Indep Meetings NetProfit TotalAssets ROA ROE
## ------------- ----------- ------- ---------- ------------- ------------- -------- --------
## Mean 9.67 24.49 4.07 -60992.20 23294043.29 9.55 8.70
## Std.Dev 3.42 11.37 0.26 1713243.72 28900176.74 10.93 10.60
## Min 5.00 15.40 4.00 -3988015.00 2537118.00 -11.94 -13.50
## Q1 5.00 16.70 4.00 -646767.00 2940061.00 -1.04 -1.05
## Median 12.00 16.70 4.00 234214.00 4193764.00 12.30 11.60
## Q3 12.00 40.00 4.00 302622.00 62758645.00 17.70 15.60
## Max 12.00 40.00 5.00 4190130.00 64920000.00 24.10 20.80
numeric_variables <- company_data %>%
select(-Company, - Year)
library(nortest)
lapply(numeric_variables, shapiro.test)
## $BoardSize
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.60343, p-value = 2.738e-05
##
##
## $Indep
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.65113, p-value = 7.816e-05
##
##
## $Meetings
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.28413, p-value = 9.834e-08
##
##
## $NetProfit
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.7913, p-value = 0.002849
##
##
## $TotalAssets
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.63753, p-value = 5.752e-05
##
##
## $ROA
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.92924, p-value = 0.2658
##
##
## $ROE
##
## Shapiro-Wilk normality test
##
## data: X[[i]]
## W = 0.91167, p-value = 0.1436
BoardSize W = 0.60343, p-value = 2.738e-05, Indep W = 0.65113, p-value = 7.816e-05, Meetings W = 0.28413, p-value = 9.834e-08, NetProfit W = 0.7913, p-value = 0.002849, TotalAssets W = 0.63753, p-value = 5.752e-05, ROA W = 0.92924, p-value = 0.2658, ROE W = 0.91167, p-value = 0.1436. The results from the normality test show that from our dataset, only ROA and ROE are normaly distributed (p > 0.05) while all the other variables, BoardSize, Indep, Meetings, NetProfit and TotalAssets are not normaly distributed (p < 0.05).
library(psych)
psych::describe(numeric_variables)
## vars n mean sd median trimmed mad
## BoardSize 1 15 9.67 3.42 12.0 9.85 0.00
## Indep 2 15 24.49 11.37 16.7 24.00 1.93
## Meetings 3 15 4.07 0.26 4.0 4.00 0.00
## NetProfit 4 15 -60992.20 1713243.72 234214.0 -85922.92 236164.84
## TotalAssets 5 15 23294043.29 28900176.74 4193764.0 21688733.18 1860333.86
## ROA 6 15 9.55 10.93 12.3 10.08 8.45
## ROE 7 15 8.70 10.60 11.6 9.47 7.56
## min max range skew kurtosis se
## BoardSize 5.00 12.0 7.00 -0.64 -1.69 0.88
## Indep 15.40 40.0 24.60 0.63 -1.69 2.94
## Meetings 4.00 5.0 1.00 3.13 8.39 0.07
## NetProfit -3988015.00 4190130.0 8178145.00 0.05 1.59 442357.63
## TotalAssets 2537118.00 64920000.0 62382882.00 0.64 -1.68 7461993.55
## ROA -11.94 24.1 36.04 -0.55 -1.08 2.82
## ROE -13.50 20.8 34.30 -0.65 -0.89 2.74
Board Size, skew = -0.64, kurtosis = -1.69, moderate left skew Indep, skew = 0.63, kurtosis = -1.69, moderate right skew Meetings, skew = 3.13, kurtosis = 8.39 highly right skewed Net Profit, skew = 0.05, kurtosis = 1.59, approximately symmetric Total Assets, skew = 0.64, kurtosis = -1.68, moderate right skewed ROA, skew = -0.55, kurtosis = -1.08, moderate left skew ROE, skew = -0.65, kurtosis = -0.89, moderate left skew
sapply(numeric_variables, function(x){
Q1 <- quantile(x, 0.25)
Q3 <- quantile(x, 0.75)
IQR <- Q3 - Q1
sum(x < (Q1 - 1.5 * IQR) | x > (Q3 + 1.5 * IQR))
})
## BoardSize Indep Meetings NetProfit TotalAssets ROA
## 0 0 1 3 0 0
## ROE
## 0
Meetings and the Net Profit variables has outliers, 1 and 3 consecutively.
cor(numeric_variables, use = "complete.obs") %>%
round(2)
## BoardSize Indep Meetings NetProfit TotalAssets ROA ROE
## BoardSize 1.00 -1.00 -0.38 0.29 -1.00 0.87 0.86
## Indep -1.00 1.00 0.38 -0.29 1.00 -0.87 -0.85
## Meetings -0.38 0.38 1.00 0.69 0.39 -0.07 -0.05
## NetProfit 0.29 -0.29 0.69 1.00 -0.27 0.50 0.50
## TotalAssets -1.00 1.00 0.39 -0.27 1.00 -0.87 -0.85
## ROA 0.87 -0.87 -0.07 0.50 -0.87 1.00 0.99
## ROE 0.86 -0.85 -0.05 0.50 -0.85 0.99 1.00
Board Size vs Indep has a correlation of -1.00, they have a perfect negative collinearity. Board Size vs Total Assets also has a correlation of -1.00, they have a perfect negative collinearity. Indep vs Total Assets has a correlation of 1.00, they have a perfect positive collinearity. ROA vs ROE has a correlation of 0.99, they have a near perfect collinearity.
library(car)
library(broom)
cor.test(company_data$Indep, company_data$ROA, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$Indep and company_data$ROA
## S = 981, p-value = 0.001228
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.7517871
cor.test(company_data$Indep, company_data$ROE, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$Indep and company_data$ROE
## S = 973.61, p-value = 0.001661
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.7385979
cor.test(company_data$Indep, company_data$NetProfit, method = "kendal")
##
## Kendall's rank correlation tau
##
## data: company_data$Indep and company_data$NetProfit
## z = -1.5782, p-value = 0.1145
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.3314968
From the correlation tests Indep vs ROA: rho = -0.75, p = 0.001, strong negative significant Indep vs ROE: rho = -0.74, p = 0.002, styrong negative significant Indep vs NetProfit: tau = -0.33, p = 0.11, week negative, not significant This means that the Board Independence has a strong negative relationship with financial perfomance ratios but not with Profit. As Board Independence go up, ROA and ROE go down.
m1_ROA <- lm(ROA ~ Indep, data = company_data)
m1_ROE <- lm(ROE ~ Indep, data = company_data)
m1_NetProfit <- lm(NetProfit ~ Indep, data = company_data)
summary(m1_ROA)
##
## Call:
## lm(formula = ROA ~ Indep, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.2373 -3.5577 -0.3881 2.7423 9.9619
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 29.9414 3.5672 8.393 1.32e-06 ***
## Indep -0.8326 0.1329 -6.266 2.90e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.655 on 13 degrees of freedom
## Multiple R-squared: 0.7512, Adjusted R-squared: 0.7321
## F-statistic: 39.26 on 1 and 13 DF, p-value: 2.899e-05
summary(m1_ROE)
##
## Call:
## lm(formula = ROE ~ Indep, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.8403 -3.2280 -0.5057 3.7341 10.3397
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.2122 3.6032 7.830 2.83e-06 ***
## Indep -0.7968 0.1342 -5.936 4.93e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.712 on 13 degrees of freedom
## Multiple R-squared: 0.7305, Adjusted R-squared: 0.7098
## F-statistic: 35.24 on 1 and 13 DF, p-value: 4.932e-05
summary(m1_NetProfit)
##
## Call:
## lm(formula = NetProfit ~ Indep, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3255051 -120615 -31840 73320 4923094
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1000412 1074054 0.931 0.369
## Indep -43334 40009 -1.083 0.298
##
## Residual standard error: 1703000 on 13 degrees of freedom
## Multiple R-squared: 0.08277, Adjusted R-squared: 0.01222
## F-statistic: 1.173 on 1 and 13 DF, p-value: 0.2984
From the regression models, the coeficient of indep = -0.83 from m1_ROA model means that for every 1% increase in Board Independence ROA drops by 0.83%. The coeficient of indep = -0.7968 from m1_ROE model means that for every 1% increase in Board Independence ROE drops by 0.80%. The coeficient of indep = -43334 from m1_NetProfit model means that for every 1% increase in Board Independence ROA drops by 43334.
cor.test(company_data$Meetings, company_data$ROA, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$Meetings and company_data$ROA
## S = 663.92, p-value = 0.5079
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.1855769
cor.test(company_data$Meetings, company_data$ROE, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$Meetings and company_data$ROE
## S = 629.28, p-value = 0.6605
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.1237179
cor.test(company_data$Meetings, company_data$NetProfit, method = "kendal")
##
## Kendall's rank correlation tau
##
## data: company_data$Meetings and company_data$NetProfit
## z = 1.6202, p-value = 0.1052
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.3651484
From the correlation tests Meetings vs ROA: rho = -0.18, p = 0.001, weak negative significant Meetings vs ROE: rho = -0.12, p = 0.002, weak negative significant Meetings vs NetProfit: tau = 0.37, p = 0.11, weak positive, not significant This means that the Meetings has a weak negative relationship with financial perfomance ratios but not with Profit. As Meetings go up, ROA and ROE go down.
m2_ROA <- lm(ROA ~ Meetings, data = company_data)
m2_ROE <- lm(ROE ~ Meetings, data = company_data)
m2_NetProfit <- lm(NetProfit ~ Meetings, data = company_data)
summary(m2_ROA)
##
## Call:
## lm(formula = ROA ~ Meetings, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -21.699 -6.879 2.541 7.441 14.341
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.396 47.685 0.47 0.646
## Meetings -3.159 11.704 -0.27 0.791
##
## Residual standard error: 11.31 on 13 degrees of freedom
## Multiple R-squared: 0.005574, Adjusted R-squared: -0.07092
## F-statistic: 0.07286 on 1 and 13 DF, p-value: 0.7914
summary(m2_ROE)
##
## Call:
## lm(formula = ROE ~ Meetings, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.340 -6.115 2.760 6.560 11.960
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 17.48 46.34 0.377 0.712
## Meetings -2.16 11.38 -0.190 0.852
##
## Residual standard error: 10.99 on 13 degrees of freedom
## Multiple R-squared: 0.002766, Adjusted R-squared: -0.07394
## F-statistic: 0.03606 on 1 and 13 DF, p-value: 0.8523
summary(m2_NetProfit)
##
## Call:
## lm(formula = NetProfit ~ Meetings, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3623371 -141062 582447 665035 872208
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -18583739 5452472 -3.408 0.00467 **
## Meetings 4554774 1338257 3.404 0.00471 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1293000 on 13 degrees of freedom
## Multiple R-squared: 0.4712, Adjusted R-squared: 0.4305
## F-statistic: 11.58 on 1 and 13 DF, p-value: 0.00471
From the regression models, the coefficient of Meetings = -3.159 from m2_ROA model means that for every extra meeting, ROA drops by 3.16%. The coefficient of Meetings = -2.16 from m2_ROE model means for every extra meeting, ROE drops by 2.16%. The coefficient of Meetings = 4554774 from m2_NetProfit model means that for every extra Meeting, Net Profit increase by by 43334.
cor.test(company_data$BoardSize, company_data$ROA, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$BoardSize and company_data$ROA
## S = 101.74, p-value = 0.0001922
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.8183171
cor.test(company_data$BoardSize, company_data$ROE, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$BoardSize and company_data$ROE
## S = 120.07, p-value = 0.0005183
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.7855844
cor.test(company_data$BoardSize, company_data$NetProfit, method = "kendal")
##
## Kendall's rank correlation tau
##
## data: company_data$BoardSize and company_data$NetProfit
## z = 1.8371, p-value = 0.06619
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.4140393
From the correlation tests Board Size vs ROA: rho = 0.82, p = 0.0002, strong positive significant Board Size vs ROE: rho = 0.76, p = 0.0005, strong positive significant Board Size vs Net Profit: tau = 0.41, p = 0.066, moderate positive, not significant This means that the Board Size has a strong positive relationship with financial performance ratios. As Board Size go up, ROA,ROE and Net Profit also go up.
mo3_ROA <- lm(ROA ~ BoardSize, data = company_data)
mo3_ROE <- lm(ROE ~ BoardSize, data = company_data)
mo3_NetProfit <- lm(NetProfit ~ BoardSize, data = company_data)
summary(mo3_ROA)
##
## Call:
## lm(formula = ROA ~ BoardSize, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.210 -3.538 -0.376 2.762 9.974
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.2197 4.5368 -3.796 0.00223 **
## BoardSize 2.7691 0.4442 6.235 3.05e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.676 on 13 degrees of freedom
## Multiple R-squared: 0.7494, Adjusted R-squared: 0.7301
## F-statistic: 38.87 on 1 and 13 DF, p-value: 3.046e-05
summary(mo3_ROE)
##
## Call:
## lm(formula = ROE ~ BoardSize, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.808 -3.204 -0.088 4.076 10.372
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16.9649 4.5601 -3.720 0.00257 **
## BoardSize 2.6546 0.4464 5.946 4.85e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.706 on 13 degrees of freedom
## Multiple R-squared: 0.7312, Adjusted R-squared: 0.7105
## F-statistic: 35.36 on 1 and 13 DF, p-value: 4.855e-05
summary(mo3_NetProfit)
##
## Call:
## lm(formula = NetProfit ~ BoardSize, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3250430 -118593 -4086 58068 4927715
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1462506 1360316 -1.075 0.302
## BoardSize 144984 133177 1.089 0.296
##
## Residual standard error: 1702000 on 13 degrees of freedom
## Multiple R-squared: 0.08355, Adjusted R-squared: 0.01305
## F-statistic: 1.185 on 1 and 13 DF, p-value: 0.2961
From the regression models, the coefficient of Board Size = 2.7691 from mo3_ROA model means that for every additional Board member in Board Size, ROA increase by 2.77%. The coefficient of Board Size = 2.65 from mo3_ROE model means for every additional Board member, ROE drops by 2.65%. The coefficient of 144984 in mo3_NetProfit means that each extra Board member adds about 144984 thousand Net Profit.
cor.test(company_data$TotalAssets, company_data$ROA, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$TotalAssets and company_data$ROA
## S = 968, p-value = 0.002927
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.7285714
cor.test(company_data$TotalAssets, company_data$ROE, method = "spearman")
##
## Spearman's rank correlation rho
##
## data: company_data$TotalAssets and company_data$ROE
## S = 952, p-value = 0.004876
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.7
cor.test(company_data$TotalAssets, company_data$NetProfit, method = "kendal")
##
## Kendall's rank correlation tau
##
## data: company_data$TotalAssets and company_data$NetProfit
## T = 37, p-value = 0.1395
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.2952381
From the correlation tests Total Assets vs ROA: rho = -0.73, p = 0.003, strong negative significant Total Assets vs ROE: rho = -0.7, p = 0.005, strong negative significant Total Assets vs Net Profit: tau = -0.30, p = 0.1395, moderate negative, not significant This means that the Total Assets has a strong negative relationship with financial performance ratios. For an extra additional Asset, ROA,ROE and Net Profit also go up
mo4_ROA <- lm(ROA ~ TotalAssets, data = company_data)
mo4_ROE <- lm(ROE ~ TotalAssets, data = company_data)
mo4_NetProfit <- lm(NetProfit ~ TotalAssets, data = company_data)
summary(mo4_ROA)
##
## Call:
## lm(formula = ROA ~ TotalAssets, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.8629 -4.0256 -0.2654 3.0424 10.2973
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.717e+01 1.907e+00 9.005 5.98e-07 ***
## TotalAssets -3.274e-07 5.245e-08 -6.241 3.01e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.672 on 13 degrees of freedom
## Multiple R-squared: 0.7498, Adjusted R-squared: 0.7305
## F-statistic: 38.95 on 1 and 13 DF, p-value: 3.013e-05
summary(mo4_ROE)
##
## Call:
## lm(formula = ROE ~ TotalAssets, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.1498 -3.6781 0.0017 4.1340 10.6654
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.600e+01 1.924e+00 8.315 1.46e-06 ***
## TotalAssets -3.134e-07 5.291e-08 -5.923 5.04e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.722 on 13 degrees of freedom
## Multiple R-squared: 0.7297, Adjusted R-squared: 0.7089
## F-statistic: 35.09 on 1 and 13 DF, p-value: 5.039e-05
summary(mo4_NetProfit)
##
## Call:
## lm(formula = NetProfit ~ TotalAssets, data = company_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3361014 -106518 8110 54882 4890167
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.069e+05 5.762e+05 0.533 0.603
## TotalAssets -1.579e-02 1.585e-02 -0.997 0.337
##
## Residual standard error: 1714000 on 13 degrees of freedom
## Multiple R-squared: 0.07098, Adjusted R-squared: -0.0004846
## F-statistic: 0.9932 on 1 and 13 DF, p-value: 0.3371
From the regression models, the coefficient of Total Assets = -3.274e07, p = 0.00003 from mo4_ROA model means that for every 1000000 increase in Total Assets, ROA drops by 0.327%. The coefficient of Total Assets = -3.134e-07 from mo4_ROE model means that for every 1000000 increase in Total Assets, ROE drops by 0.313%. The coefficient of -0.0158 and the p value of 0.337 indicate not significant relationship between Total Assets and Net Profit. Mo4_NetProfit estimates that Net Profit drops by 0.016 for every increase in Assets.