ESG PERFORMANCE GROWTH OF INDIAN COMPANIES
ESG Performance Growth Of
Indian Companies
Introduction
In today’s business environment, companies are evaluated not only on their financial outcomes but also on their commitment to environmental sustainability. Traditional indicators such as Return on Assets (ROA) and Return on Equity (ROE) capture profitability and operational efficiency, while measures like carbon emissions and energy consumption reflect a firm’s environmental impact. Understanding the interaction between these financial and environmental dimensions has become increasingly important, as regulators, investors, and consumers demand that businesses balance economic performance with sustainable practices.
This study examines ten leading firms across industries including food processing, consumer goods, engineering, banking, and information technology. Using multi-year data on both financial metrics and environmental indicators, we apply linear regression analysis to explore the relationships between carbon emissions, energy use, and financial performance (ROA and ROE). The core objective is to determine whether environmental factors significantly influence profitability, and if so, to identify the direction of this relationship.
The insights generated aim to guide managers, policymakers, and stakeholders in navigating the alignment or possible trade-offs between sustainability initiatives and financial outcomes. Ultimately, the findings contribute to the broader discourse on sustainable business strategies and responsible investment practices.
tibble [53 × 10] (S3: tbl_df/tbl/data.frame) $ Company Name : chr [1:53] "Emami Ltd 25" "Emami Ltd 24" "Emami Ltd 23" "Emami Ltd 22" ... $ Carbon : chr [1:53] "16342" "17910" "18448" "19581.53" ... $ Energy : chr [1:53] "1,23,410" "1,23,382" "1,28,486" "1,39,619" ... $ Employee Turnover Rate (Total): num [1:53] 16.4 17.2 19.8 17.8 13.7 ... $ ROE : num [1:53] 30 29.1 25.3 40.8 27 ... $ ROA : num [1:53] 25.4 24.4 20.8 30.1 20.6 ... $ CEO : chr [1:53] "Harsha V Agarwal" "Harsha V Agarwal" "Harsha V Agarwal" "Harsha V Agarwal" ... $ Gender : chr [1:53] "Male" "Male" "Male" "Male" ... $ Location : chr [1:53] "Kolkata" "Kolkata" "Kolkata" "Kolkata" ... $ Industry : chr [1:53] "FMCG" "FMCG" "FMCG" "FMCG" ...
Company Name Carbon Energy Length:53 Length:53 Length:53 Class :character Class :character Class :character Mode :character Mode :character Mode :character
Employee Turnover Rate (Total) ROE ROA Min. : 2.00 Min. :-0.50 Min. :-75.6500 1st Qu.:12.09 1st Qu.: 7.93 1st Qu.: 0.1597 Median :16.82 Median :14.25 Median : 6.3700 Mean :26.64 Mean :16.31 Mean : 7.0402 3rd Qu.:22.63 3rd Qu.:20.36 3rd Qu.: 12.2500 Max. :96.00 Max. :67.41 Max. : 54.6700 NA's :19 NA's :5 CEO Gender Location Industry Length:53 Length:53 Length:53 Length:53 Class :character Class :character Class :character Class :character Mode :character Mode :character Mode :character Mode :character
df$Carbon <- as.numeric(df$Carbon)Warning: NAs introduced by coerciondf$Energy <- as.numeric(df$Energy)Warning: NAs introduced by coercionlibrary(dplyr)
Attaching package: 'dplyr'The following objects are masked from 'package:stats':
filter, lagThe following objects are masked from 'package:base':
intersect, setdiff, setequal, uniondf_encoded <- df %>%
filter(!is.na(ROA), !is.na(ROE), !is.na(Carbon),!is.na(Energy))# ROA model with categorical controls
model_roa <- lm(ROA ~ Carbon + Energy + Industry + Location + Gender, data = df_encoded)
summary(model_roa)
Call:
lm(formula = ROA ~ Carbon + Energy + Industry + Location + Gender,
data = df_encoded)
Residuals:
Min 1Q Median 3Q Max
-16.3905 -1.6826 0.1012 1.6891 31.5666
Coefficients: (4 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.307e+00 5.355e+00 0.991 0.3341
Carbon -7.352e-05 8.084e-05 -0.909 0.3745
Energy -7.511e-08 2.120e-07 -0.354 0.7270
IndustryHealthcare 1.797e+01 7.623e+00 2.357 0.0293
Industrymedical equipment manufacturing 9.732e+00 8.228e+00 1.183 0.2515
IndustryPublication & Stationery 5.461e+00 7.072e+00 0.772 0.4494
IndustryQuick Service Restaurant (QSR) -8.770e-02 8.883e+00 -0.010 0.9922
IndustrySatellite Communication 3.575e+00 7.074e+00 0.505 0.6191
IndustryTextiles 8.773e+01 9.548e+01 0.919 0.3697
LocationChennai NA NA NA NA
LocationDelhi NA NA NA NA
LocationMumbai NA NA NA NA
GenderMale NA NA NA NA
(Intercept)
Carbon
Energy
IndustryHealthcare *
Industrymedical equipment manufacturing
IndustryPublication & Stationery
IndustryQuick Service Restaurant (QSR)
IndustrySatellite Communication
IndustryTextiles
LocationChennai
LocationDelhi
LocationMumbai
GenderMale
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 9.259 on 19 degrees of freedom
Multiple R-squared: 0.389, Adjusted R-squared: 0.1317
F-statistic: 1.512 on 8 and 19 DF, p-value: 0.2181# ROE model with categorical controls
model_roe <- lm(ROE ~ Carbon + Energy + Industry + Location + Gender, data = df_encoded)
summary(model_roe)Call: lm(formula = ROE ~ Carbon + Energy + Industry + Location + Gender, data = df_encoded) Residuals: Min 1Q Median 3Q Max -20.027 -2.726 0.086 2.531 38.537 Coefficients: (4 not defined because of singularities) Estimate Std. Error t value Pr(>|t|) (Intercept) 6.090e+00 6.895e+00 0.883 0.3881 Carbon -1.262e-04 1.041e-04 -1.213 0.2402 Energy -9.343e-08 2.730e-07 -0.342 0.7359 IndustryHealthcare 2.308e+01 9.815e+00 2.351 0.0297 Industrymedical equipment manufacturing 1.373e+01 1.059e+01 1.296 0.2106 IndustryPublication & Stationery 7.432e+00 9.105e+00 0.816 0.4244 IndustryQuick Service Restaurant (QSR) 9.226e+00 1.144e+01 0.807 0.4299 IndustrySatellite Communication 9.075e+00 9.108e+00 0.996 0.3316 IndustryTextiles 1.565e+02 1.229e+02 1.273 0.2184 LocationChennai NA NA NA NA LocationDelhi NA NA NA NA LocationMumbai NA NA NA NA GenderMale NA NA NA NA (Intercept) Carbon Energy IndustryHealthcare * Industrymedical equipment manufacturing IndustryPublication & Stationery IndustryQuick Service Restaurant (QSR) IndustrySatellite Communication IndustryTextiles LocationChennai LocationDelhi LocationMumbai GenderMale --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 11.92 on 19 degrees of freedom Multiple R-squared: 0.302, Adjusted R-squared: 0.008089 F-statistic: 1.028 on 8 and 19 DF, p-value: 0.4496Interpretation of Results
ROA vs Energy
The relationship between ROA and Energy consumption is highly non-linear. At lower levels of energy use, ROA shows large fluctuations, swinging between positive and negative values. As energy consumption increases toward mid-range values, ROA improves substantially, reaching its peak where firms appear to be operating most efficiently. However, beyond this optimal point, further increases in energy consumption are associated with a decline in ROA, suggesting that excessive energy use might lead to inefficiencies or diminishing returns. This indicates that firms relying on a moderate amount of energy tend to perform better in terms of profitability compared to those with very low or very high energy usage.
ROA vs Carbon
The association between ROA and Carbon emissions follows a U-shaped pattern. Firms with low carbon emissions generally display relatively strong and stable ROA, reflecting a positive link between sustainability and financial performance. As emissions rise to mid-levels, ROA tends to decline, even moving into negative territory, which may suggest that firms in this range face cost pressures or inefficiencies linked to their carbon footprint. Interestingly, at very high levels of emissions, ROA shows some recovery, indicating that larger firms with greater emissions may still maintain profitability, possibly due to economies of scale or stronger market positions. Overall, firms with lower emissions tend to be more profitable, while those in the middle emission range struggle the most.
Overall Insight
The combined insights from the Energy and Carbon analyses highlight that the relationship between operational inputs, environmental impact, and profitability is complex and non-linear. Firms appear to achieve the best financial performance when they operate at a balanced level of energy consumption and maintain relatively lower carbon emissions. Extremely high or low usage of resources tends to reduce profitability, although very large firms with significant emissions or energy use may still sustain positive ROA due to scale advantages. This suggests that efficiency and sustainability play a crucial role in financial outcomes, with firms that optimize their resource use and manage their environmental footprint likely to achieve stronger and more stable returns.
# Fit quadratic regression models model_roa <- lm(ROA ~ Carbon + I(Carbon^2) + Energy + I(Energy^2), data = df_encoded) summary(model_roa)Call: lm(formula = ROA ~ Carbon + I(Carbon^2) + Energy + I(Energy^2), data = df_encoded) Residuals: Min 1Q Median 3Q Max -7.876 -4.544 -1.563 1.767 43.137 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.165e+01 2.699e+00 4.314 0.000257 *** Carbon -1.186e-04 7.586e-05 -1.563 0.131707 I(Carbon^2) 9.196e-11 6.087e-11 1.511 0.144488 Energy 1.072e-06 1.147e-06 0.935 0.359721 I(Energy^2) -2.462e-14 2.793e-14 -0.881 0.387201 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 10.13 on 23 degrees of freedom Multiple R-squared: 0.1148, Adjusted R-squared: -0.03918 F-statistic: 0.7455 on 4 and 23 DF, p-value: 0.5709model_roe <- lm(ROE ~ Carbon + I(Carbon^2) + Energy + I(Energy^2), data = df_encoded) summary(model_roe)Call: lm(formula = ROE ~ Carbon + I(Carbon^2) + Energy + I(Energy^2), data = df_encoded) Residuals: Min 1Q Median 3Q Max -11.151 -6.596 -1.792 3.185 52.312 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.512e+01 3.370e+00 4.486 0.000168 *** Carbon -9.303e-05 9.472e-05 -0.982 0.336209 I(Carbon^2) 7.215e-11 7.601e-11 0.949 0.352380 Energy 1.319e-06 1.432e-06 0.921 0.366490 I(Energy^2) -3.118e-14 3.488e-14 -0.894 0.380571 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 12.65 on 23 degrees of freedom Multiple R-squared: 0.04907, Adjusted R-squared: -0.1163 F-statistic: 0.2967 on 4 and 23 DF, p-value: 0.8771# ROA model with categorical controls model_roa <- lm(ROA ~ Carbon + Energy + Industry + Location , data = df_encoded) summary(model_roa)Call: lm(formula = ROA ~ Carbon + Energy + Industry + Location, data = df_encoded) Residuals: Min 1Q Median 3Q Max -16.3905 -1.6826 0.1012 1.6891 31.5666 Coefficients: (3 not defined because of singularities) Estimate Std. Error t value Pr(>|t|) (Intercept) 5.307e+00 5.355e+00 0.991 0.3341 Carbon -7.352e-05 8.084e-05 -0.909 0.3745 Energy -7.511e-08 2.120e-07 -0.354 0.7270 IndustryHealthcare 1.797e+01 7.623e+00 2.357 0.0293 Industrymedical equipment manufacturing 9.732e+00 8.228e+00 1.183 0.2515 IndustryPublication & Stationery 5.461e+00 7.072e+00 0.772 0.4494 IndustryQuick Service Restaurant (QSR) -8.770e-02 8.883e+00 -0.010 0.9922 IndustrySatellite Communication 3.575e+00 7.074e+00 0.505 0.6191 IndustryTextiles 8.773e+01 9.548e+01 0.919 0.3697 LocationChennai NA NA NA NA LocationDelhi NA NA NA NA LocationMumbai NA NA NA NA (Intercept) Carbon Energy IndustryHealthcare * Industrymedical equipment manufacturing IndustryPublication & Stationery IndustryQuick Service Restaurant (QSR) IndustrySatellite Communication IndustryTextiles LocationChennai LocationDelhi LocationMumbai --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 9.259 on 19 degrees of freedom Multiple R-squared: 0.389, Adjusted R-squared: 0.1317 F-statistic: 1.512 on 8 and 19 DF, p-value: 0.2181# ROE model with categorical controls model_roe <- lm(ROE ~ Carbon + Energy + Industry + Location , data = df_encoded) summary(model_roe)Call: lm(formula = ROE ~ Carbon + Energy + Industry + Location, data = df_encoded) Residuals: Min 1Q Median 3Q Max -20.027 -2.726 0.086 2.531 38.537 Coefficients: (3 not defined because of singularities) Estimate Std. Error t value Pr(>|t|) (Intercept) 6.090e+00 6.895e+00 0.883 0.3881 Carbon -1.262e-04 1.041e-04 -1.213 0.2402 Energy -9.343e-08 2.730e-07 -0.342 0.7359 IndustryHealthcare 2.308e+01 9.815e+00 2.351 0.0297 Industrymedical equipment manufacturing 1.373e+01 1.059e+01 1.296 0.2106 IndustryPublication & Stationery 7.432e+00 9.105e+00 0.816 0.4244 IndustryQuick Service Restaurant (QSR) 9.226e+00 1.144e+01 0.807 0.4299 IndustrySatellite Communication 9.075e+00 9.108e+00 0.996 0.3316 IndustryTextiles 1.565e+02 1.229e+02 1.273 0.2184 LocationChennai NA NA NA NA LocationDelhi NA NA NA NA LocationMumbai NA NA NA NA (Intercept) Carbon Energy IndustryHealthcare * Industrymedical equipment manufacturing IndustryPublication & Stationery IndustryQuick Service Restaurant (QSR) IndustrySatellite Communication IndustryTextiles LocationChennai LocationDelhi LocationMumbai --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 11.92 on 19 degrees of freedom Multiple R-squared: 0.302, Adjusted R-squared: 0.008089 F-statistic: 1.028 on 8 and 19 DF, p-value: 0.4496Interpretation for Actual vs Predicted ROE
1. Quadratic Models (ROA & ROE)
Carbon: In both ROA and ROE quadratic regressions, neither Carbon nor Carbon² is statistically significant (p-values > 0.1). This means the expected nonlinear effect of carbon emissions on profitability does not appear strongly in this dataset. While coefficients suggest a weak concave pattern (profitability declines as carbon increases, then flattens), the evidence is not statistically reliable.
Energy: Similarly, both the linear and squared Energy terms are statistically insignificant (p > 0.3). This implies that energy usage, whether at low or high levels, does not show a consistent measurable impact on ROA or ROE. Unlike the LOESS visualizations earlier, the regression does not confirm strong U-shaped or inverted-U relationships.
Model Fit: The quadratic models perform poorly in explaining profitability outcomes. The R² is only 0.11 for ROA and 0.05 for ROE, with adjusted R² values turning negative. This indicates that Carbon and Energy together explain very little variation in profitability and may not be the main drivers of financial performance in this sample.
2. Models with Industry & Location Controls
Carbon & Energy: Once industry and location factors are included, Carbon and Energy remain statistically insignificant with very small coefficients. Their weak explanatory power suggests that differences in profitability are not directly tied to environmental measures once sector-level differences are accounted for.
Industry: Industry effects appear stronger than Carbon or Energy. Healthcare shows significant positive coefficients for both ROA and ROE (p ≈ 0.03), suggesting firms in this sector tend to achieve higher profitability. Other industries (e.g., medical equipment manufacturing, textiles) show large coefficients but with high standard errors, meaning the results are unstable and possibly influenced by small sample representation.
Location: All location variables (Chennai, Delhi, Mumbai) dropped due to singularities, likely because too few firms from each location prevent meaningful estimation. This means location effects cannot be interpreted with the current sample.
Model Fit: With industry and location controls, R² improves to 0.39 for ROA and 0.30 for ROE, but adjusted R² values remain low (close to zero or negative). This indicates that while industry factors add some explanatory power, overall model fit remains weak, suggesting other unobserved factors play a larger role in profitability.
# Predict ROA values using the model df_encoded$ROA_pred <- predict(model_roa, df_encoded) # Plot Actual vs. Predicted ROA plot(df_encoded$ROA, df_encoded$ROA_pred, xlab = "Actual ROA", ylab = "Predicted ROA", main = "Actual vs Predicted ROA") abline(a = 0, b = 1, col = "violet", lwd = 2) # reference linelibrary(ggplot2) # ROA predictions df_encoded$ROA_pred <- predict(model_roa, newdata = df_encoded) ggplot(df_encoded, aes(x = ROA, y = ROA_pred)) + geom_point(color = "steelblue", alpha = 0.6) + geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "violet") + labs(title = "ROA: Predicted vs Actual", x = "Actual ROA", y = "Predicted ROA") + theme_minimal()# ROE predictions df_encoded$ROE_pred <- predict(model_roe, newdata = df_encoded) ggplot(df_encoded, aes(x = ROE, y = ROE_pred)) + geom_point(color = "brown", alpha = 0.6) + geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "violet") + labs(title = "ROE: Predicted vs Actual", x = "Actual ROE", y = "Predicted ROE") + theme_minimal()Conclusion
This study highlights the complexity of the relationship between financial performance and environmental factors. While visual analyses suggested possible nonlinear patterns between profitability, carbon emissions, and energy consumption, the regression models did not find statistically significant effects of carbon or energy on ROA and ROE. Instead, industry-level differences, particularly within the healthcare sector, emerged as more influential in explaining firm performance. The weak explanatory power of the models indicates that profitability is likely driven by a broader set of operational, strategic, and market-related factors beyond the environmental indicators included here. Nonetheless, the findings emphasize the importance of efficiency and sustainability, as firms balancing resource use and environmental impact may achieve more stable returns. Future research with larger datasets and more granular environmental metrics could provide deeper insights into how sustainability practices align with long-term financial success.
NB: About the author
I’m a student in the MBA Program (2025–2027), currently navigating Trimester I at Amrita School of Business, Amrita Vishwa Vidyapeetham, Coimbatore. This assignment was written as part of our coursework for Introduction to Business Analytics.







Comments
Post a Comment