In recent years, there has been a growing recognition of the importance of Environmental, Social and Governance (ESG) factors in the business world. As corporations face increasing pressure to address issues related to sustainability, social responsibility and ethical governance.Understanding the impact of ESG policies on financial stability necessitates an exploration of multifaceted ways in which factors influence corporate behavior and performance. Hence this report will address the question that How do firms’ Environmental, Social and Governance (ESG) policies affecr their capacity to remain financially stable?
Data
The data for ESG scores and the financial factors of companies was taken from FTSE Russell finance data publically posted on Github. These ratings offer perceptions on how a business handles and is exposed to environmental, social, and governance (ESG) concerns in a number of ways. Despite the fact that we may not consistently have the opportunity to view all the information we want, we can still learn a lot about how well firms are performing in terms of environmental sustainability by making use of the data that is already available, such as FTSE Russell’s ESG Scores.
Research Questions
Several important questions will be addressed by the data analysis:
1. How do businesses across various industries do when it comes to their ESG scores?
2. What are the general advancements and trends in the ESG performance of various sectors and geographical areas?
3. Does the financial performance criteria of profitability, management of risks, and return on investment correlate with high ESG scores?
Audience
The target audience for this analysis is Investors or Stakeholders of these companies. Nowaday, investors are increasingly considering environmental, social and governance aspects before making any investment.This report will hep investors to make more sustainable and educated investments. This report will delve into the relationship between farious financial key performer indicators and ESG practice by each company.
Sector Analysis
This analysis will focus on analyzing companies across various sectors, including:
* Financial Services
* Utilities
* Food
* Healthcare
* Real Estate
* Technology
*Transportation and Telecommunications
These industries were selected because of their importance to the world economy and because they may have an effect on long-term financial viability. We can uncover patterns, best practices, and opportunities for development by analyzing ESG performance in various industries, which will eventually help investors make more environmentally friendly choices.
Data cleaning Plan
Data Assessment:
First, I will open both datasets, ESG_data and Finance_data, to understand their contents. I’ll take note of the variables present in each dataset and their respective data types. Then, I’ll identify any common identifiers that can be used to merge the datasets, such as company names or ticker symbols.
Data Reading and Merging:
After understanding the structure of the datasets, I’ll load them into R Studio data analysis environment. Using appropriate functions or methods, I’ll merge the datasets based on the common identifiers in both the datasets.
Handling Missing Data:
I’ll check for missing values in the merged dataset and decide how to handle them. Depending on the extent of missing data, I’ll implement strategies like imputation or deletion to address them.
Duplicate Observations Removal:
Next, I’ll search for any duplicate entries representing the same company within the dataset. I’ll come up with a plan to remove duplicates while ensuring that relevant information is retained.
Selecting Industries of Interest:
As to measure the sustainable finance, I had chosen important industries from the data. Hence in the tidying process I will filter the above mentioned industries from the data to save in the new dataset.
ESG Rating Calculation:
To assess each company’s ESG performance, I’ll create a new variable to store the calculated ESG rating. This rating will be computed by averaging the environmental, social, and governance ratings provided in the dataset.
Final Dataset Preparation:
Finally, I’ll verify the formatting of variables to ensure consistency and accuracy. If necessary, I’ll rename variables and adjust labels for clarity. Once the dataset is cleaned and prepared, it will be ready for further analysis.
Data Tidying
Step 1: Data Reading
In this step, I first load all the necessary libraries that I will be using in this analysis. After that I load the ESG_data and Finance_data files using the readxl package.
In this step first i look for the common identifies that I can use to merge both the datasets. Using name function I examined the variable names in both datasets. I found that there are there are four common variables in both the datasets including - Company Name, Industry, country and Ticker Symbol. I merged the ESG_data and Finance_data datasets using “Ticker symbols” as it is a unique identifier and correct variable to merge these datasets.
# Check the name of the varibles in the datasetnames(ESG_data)
# Merge the datasetsFS_data <-merge(ESG_data, Finance_data)
Step 3: Handling Missing Data
Next, in this step I looked for any missing values in the data. I found that the total of 66 observations are missing in total of 12 columns. As the information we have for these missing values is the company name and Industry, it is difficult to impute the missing values in the datasets. The no of observations missing is less than 1% of the sample size, I removed the observation with missing value from my dataset using na.omit function.
# Check for missing values in the entire datasetmissing_values <-sum(is.na(FS_data))# Check for missing values in each columnmissing_values_per_column <-colSums(is.na(FS_data))# Print the total number of missing valuesprint(paste("Total missing values:", missing_values))
[1] "Total missing values: 66"
# Print the number of missing values per columnprint("Missing values per column:")
[1] "Missing values per column:"
print(missing_values_per_column)
Company Name Industry Country
0 0 5
Ticker Symbol Enviornmental Social
6 5 5
Governance EPS Profit_Margin
5 5 5
Tobins_Q ROA ROE
5 5 5
Debt_To_Market_Cap_Ratio Total_Asset_Turnover Price_to_Sales_Ratio
5 5 5
# Remove missing values from the dataFS_data1 <-na.omit(FS_data)
Step 4: Removing Duplicate Data
In this step I have examined if there are any duplicate company data we have in the dataset. For this I used duplictaed function to check for any duplicate company names in the dataset. I found that about 18 companies has duplicated data present in my dataset. Now after identifying these duplicates observations, I removed these duplicate entries using duplicated function.
# Check for duplicated rows in the entire datasetduplicated_rows <- FS_data[duplicated(FS_data$`Company Name`), ]# Print the duplicated rowsprint("Duplicated rows:")
[1] "Duplicated rows:"
print(duplicated_rows$`Company Name`)
[1] "AP Moller - Maersk A/S" "Atlas Copco AB"
[3] "Bayerische Motoren Werke AG" "CNP Assurances"
[5] "FUCHS PETROLUB SE" "Henkel AG & Co KGaA"
[7] "Liberty Global PLC" "Liberty Media Corp-Liberty SiriusXM"
[9] "News Corp" "Roche Holding AG"
[11] "Royal Dutch Shell PLC" "RWE AG"
[13] "Schibsted ASA" "Schindler Holding AG"
[15] "Skandinaviska Enskilda Banken AB" "Svenska Handelsbanken AB"
[17] "Twenty-First Century Fox Inc" "Volkswagen AG"
# Count the number of duplicated rowsnum_duplicated <-sum(duplicated(FS_data$`Company Name`))print(paste("Total duplicated rows:", num_duplicated))
[1] "Total duplicated rows: 18"
# Remove duplicate values from the dataFS_subset <- FS_data1[!duplicated(FS_data1[c('Company Name')]), ]
Step 5: Selecting Industries of Interest
Based on my research objectives, I filtered the dataset to include only companies belonging to Financial Services, Utilities, Food, Healthcare, Real Estate, Technology, Transportation and Telecommunications specific industries.
# Filtering data using specific industries for further analysisFinal_data <- FS_subset[FS_subset$Industry %in%c('Financial Services', 'Utilities', 'Food', 'Healthcare', 'Real Estate', 'Technology', 'Transportation and Telecommunication'), ]
Step 6: Calculating ESG Rating
Now the important variable for this analysis and the dependent variable of the study is ESG score for each company. I calculated the ESG score by Taking average of environmental, social, and governance ratings of companies in the data. I used mutate function from dplyr package to create a new variable by taking average of the existing variables.
library(dplyr)# Taking average to create ESG score variableFinal_data <- Final_data %>%rowwise() %>%mutate(ESG =mean(c(Enviornmental,Social,Governance)))
Step 7: Exploratory data analysis
The process for tidying the dataset has been completed using the above all steps. Now before saving the data as our final data, I did some exploratory data analysis to make sure my dataset is properly cleaned to use for analysis. The ESG variable follows normal distribution but the independent variables follows non-normal distribution. This can be because of difference in company size, turnover etc. Thus in order to use these variable in the analysis, I took logarithm of some of the independent variables.
# Histogram for ESGhist(Final_data$ESG, main ="Histogram of ESG", xlab ="ESG")
# Histograms for independent variablespar(mfrow =c(2, 4)) # Arrange plots in a 2x4 gridhist(Final_data$Profit_Margin, main ="Histogram of Profit Margin", xlab ="Profit Margin")hist(Final_data$Tobins_Q, main ="Histogram of Tobin's Q", xlab ="Tobin's Q")hist(Final_data$ROA, main ="Histogram of ROA", xlab ="ROA")hist(Final_data$ROE, main ="Histogram of ROE", xlab ="ROE")hist(Final_data$Debt_To_Market_Cap_Ratio, main ="Histogram of Debt To Market Cap Ratio", xlab ="Debt To Market Cap Ratio")hist(Final_data$Total_Asset_Turnover, main ="Histogram of Total Asset Turnover", xlab ="Total Asset Turnover")hist(Final_data$Price_to_Sales_Ratio, main ="Histogram of Price to Sales Ratio", xlab ="Price to Sales Ratio")Final_data$logProfit_Margin <-log(Final_data$Profit_Margin)
Warning in log(Final_data$Profit_Margin): NaNs produced
In this step I conducted the descriptive statistics to know more about the data. the descrpitive statistics shows that the average profit margin is 11.258, tobins_q is 1.9395, average ROA is 5.068, average ROE is 11.35 and average debt to market capital ratio is 0.9328. Moreover, average total turnover asset is 0.5350, average price to sales ratio is 4.8010 and most importantly average ESG score is 2.68. I had further categorized ESG as poor when 0 to 2, fair when 2 to 4 and good when more than 4. I further calculated average score of all the financial variable in comparison to different category of ESG. I found that the companies with good ESG ahs average profit margin very low i.e 13.76, low tobin’s Q and ROA. However, good ESG score companies has high average ROE and Price to sale ratio.
I had further explored the ESG score for different industries. The transportation and telecommunication industry has highest average ESG score of 2.80, with standard deviation of 1.02, minimum of 0.6 and maximum of 5. The lowest ESG score of 2.24 is for real estate with standard deviation of 0.92, minimum of 0.03 and maximum of 4.6. the three industries with highest average ESG scores are telecommunication and transportation , utilities industry and finnacial services industry.
Company Name Industry Country Ticker Symbol
Length:989 Length:989 Length:989 Length:989
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
Enviornmental Social Governance EPS
Min. :0.000 Min. :0.000 Min. :0.000 Min. :-1466.00
1st Qu.:1.000 1st Qu.:1.300 1st Qu.:2.700 1st Qu.: 0.32
Median :2.500 Median :2.300 Median :3.300 Median : 1.06
Mean :2.518 Mean :2.264 Mean :3.261 Mean : 172.81
3rd Qu.:3.800 3rd Qu.:3.200 3rd Qu.:4.000 3rd Qu.: 12.35
Max. :5.000 Max. :5.000 Max. :5.000 Max. :55299.23
Profit_Margin Tobins_Q ROA ROE
Min. : -165.394 Min. : 0.5761 Min. :-29.338 Min. :-84.34
1st Qu.: 4.489 1st Qu.: 1.0295 1st Qu.: 1.139 1st Qu.: 7.10
Median : 11.258 Median : 1.3566 Median : 3.919 Median : 11.35
Mean : 39.945 Mean : 1.9395 Mean : 5.068 Mean : 15.10
3rd Qu.: 22.799 3rd Qu.: 2.0684 3rd Qu.: 7.421 3rd Qu.: 17.93
Max. :19779.900 Max. :41.8726 Max. : 58.013 Max. :470.25
Debt_To_Market_Cap_Ratio Total_Asset_Turnover Price_to_Sales_Ratio
Min. : 0.0000 Min. :0.001528 Min. : 0.0737
1st Qu.: 0.1106 1st Qu.:0.120541 1st Qu.: 1.1719
Median : 0.3118 Median :0.403958 Median : 2.3291
Mean : 0.9328 Mean :0.535022 Mean : 4.8010
3rd Qu.: 0.7857 3rd Qu.:0.722121 3rd Qu.: 4.4441
Max. :30.7604 Max. :4.414300 Max. :922.2709
ESG logProfit_Margin logTobins_Q
Min. :0.03333 Min. :-3.534 Min. :-0.55142
1st Qu.:1.90000 1st Qu.: 1.735 1st Qu.: 0.02904
Median :2.66667 Median : 2.533 Median : 0.30499
Mean :2.68119 Mean : 2.479 Mean : 0.45928
3rd Qu.:3.53333 3rd Qu.: 3.194 3rd Qu.: 0.72676
Max. :5.00000 Max. : 9.892 Max. : 3.73463
NA's :74
logDebt_To_Market_Cap_Ratio logTotal_Asset_Turnover logPrice_to_Sales_Ratio
Min. : -Inf Min. :-6.4840 Min. :-2.6078
1st Qu.:-2.2018 1st Qu.:-2.1158 1st Qu.: 0.1586
Median :-1.1654 Median :-0.9064 Median : 0.8455
Mean : -Inf Mean :-1.2573 Mean : 0.8257
3rd Qu.:-0.2412 3rd Qu.:-0.3256 3rd Qu.: 1.4916
Max. : 3.4262 Max. : 1.4848 Max. : 6.8268
ESG_cat
Poor:304
Fair:570
Good:115
# Creating a subset of datasubset_df <- Final_data %>%select("ESG","Profit_Margin", "Tobins_Q", "ROA", "ROE", "Debt_To_Market_Cap_Ratio", "Total_Asset_Turnover", "Price_to_Sales_Ratio")# Creating a scatter plot matrix using subset dataggpairs(subset_df)
The elaborate scatter plot matrix not only shows correlation between ESG and independent financial variable bust also among the independent factors. It is important to know the relationship among independent variables, as it helps to avoid potential multicollinearity in the regression model. The plot shows the ESG is positively correlated with debt to market ratio (0.083) and return on equity (ROE) (0.068). However, the correlation coefficient was very small, which means the correlation was very weak. Also there was a negative correlation between ESG and price to sales ration, but with very small magnitude (-0.080). It can also be notices that there was a good correlation between some if the independent variable like return on assets and tobin’s Q(0.448). Similarly between ROA and ROE (0.467). Hence we will be not be using these three variables all togther in the regression model as it will result in multicollinearity which is a strict assumption for regression model. Thus in further analysis based on the impact of these variables on ESG, the important variable will be chosen among these three to avoid any multicollinearity.
Step 9 Saving the data
Now the data is cleaned and ready to use for further analysis and I stored the data using csv format in the specified folder.
# Save data in csv filewrite_csv(Final_data,"Desktop/Rstudio Project/03_data_processed/Final_data.csv")