ESG PERFORMANCE GROWTH OF INDIAN COMPANIES

ESG Performance Growth Of 

Indian Companies




Author

Sidhika

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 coercion
df$Energy <- as.numeric(df$Energy)
Warning: NAs introduced by coercion
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
df_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.4496



Interpretation 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.5709
model_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.4496

Interpretation 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 line

library(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

Popular Posts