Macro-I

Author

HM

Published

June 2, 2025

library(tidyverse);library(vars);library(lmtest);library(nortest);library(tseries);library(psych);library(apaTables);library(dLagM);library(car);library(moments);library(gtools);library(ggpubr);library(rcompanion);options(scipen=999);options(warn = -1)
setwd("E:/PhD_R");
df=read.csv("E:/PhD_R/1_IMPACT/M_SFFET_Apr95.csv")

Time Series Data

 df1=df [-1 ];dfd=sapply(df1,FUN=diff);dfd=data.frame(dfd) ;names(dfd)
[1] "SX"  "FDI" "FII" "USD" "NBT"

Testing Stationarity

adf.test(dfd$SX) ;  adf.test(dfd$FDI) ;  adf.test(dfd$FII) ;  adf.test(dfd$USD) ;  adf.test(dfd$NBT);

    Augmented Dickey-Fuller Test

data:  dfd$SX
Dickey-Fuller = -6.1342, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

    Augmented Dickey-Fuller Test

data:  dfd$FDI
Dickey-Fuller = -13.051, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

    Augmented Dickey-Fuller Test

data:  dfd$FII
Dickey-Fuller = -11.098, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

    Augmented Dickey-Fuller Test

data:  dfd$USD
Dickey-Fuller = -6.1917, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

    Augmented Dickey-Fuller Test

data:  dfd$NBT
Dickey-Fuller = -9.3048, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary

#Ploting Time Series Graphs

plot.ts(df$SX) ;  plot.ts(df$FDI) ;  plot.ts(df$FII) ;  plot.ts(df$USD) ;   plot.ts(df$NBT);

#Ploting Density Curves:

plot(density(dfd$SX)) ;  plot(density(dfd$FDI)) ;   plot(density(dfd$FII)) ;  plot(density(dfd$USD)) ;  plot(density(dfd$NBT)) ;

Ploting Line chart Sensex & FDI:

plot(dfd $ SX, type="o",col="green",xlab="Time",ylab="Indices",lwd=2.0) ; lines(dfd $ FDI,type="o",col="red")  

Ploting Line chart Sensex & FII:

plot(dfd $ SX, type="o",col="green",xlab="Time",ylab="Indices",lwd=1.5) ; lines(dfd $ FII,type="o",col="red")

Ploting Line chart Sensex & USD:

plot(dfd $ SX, type="o",col="green",xlab="Time",ylab="Indices",lwd=1.5) ; lines(dfd $ USD,type="o",col="red")

Ploting Line chart Sensex & NBT:

plot(dfd $ SX, type="o",col="green",xlab="Time",ylab="Indices",lwd=1.5) ; lines(dfd $ NBT,type="o",col="red")

Correlation between Macro-economic Variables with Sensex:

lowerCor(dfd, method = "pearson")
    SX    FDI   FII   USD   NBT  
SX   1.00                        
FDI  0.10  1.00                  
FII  0.50  0.06  1.00            
USD -0.35 -0.04 -0.13  1.00      
NBT -0.05 -0.11  0.04  0.11  1.00

#ARDL Bound Test for Sensex & FDI:

ABT_1=ardlBound(dfd, formula=SX~FDI, case=3,max.p=8,max.q=1)
  
Orders being calculated with max.p = 8 and max.q = 1 ...

Autoregressive order: 2 and p-orders: 9 
------------------------------------------------------ 

 Breusch-Godfrey Test for the autocorrelation in residuals:

    Breusch-Godfrey test for serial correlation of order up to 1

data:  modelFull$model
LM test = 0.51131, df1 = 1, df2 = 297, p-value = 0.4751

------------------------------------------------------ 

 Ljung-Box Test for the autocorrelation in residuals:

    Box-Ljung test

data:  res
X-squared = 0.0041594, df = 1, p-value = 0.9486

------------------------------------------------------ 

 Breusch-Pagan Test for the homoskedasticity of residuals:

    studentized Breusch-Pagan test

data:  modelFull$model
BP = 26.519, df = 12, p-value = 0.009058

The p-value of Breusch-Pagan test for the homoskedasticity of residuals:  0.009057683 < 0.05!
------------------------------------------------------ 

 Shapiro-Wilk test of normality of residuals:

    Shapiro-Wilk normality test

data:  modelFull$model$residual
W = 0.871, p-value = 0.000000000000001822

The p-value of Shapiro-Wilk test normality of residuals:  0.000000000000001822055 < 0.05!
------------------------------------------------------ 

 PESARAN, SHIN AND SMITH (2001) COINTEGRATION TEST 

 Observations: 319 
 Number of Regressors (k): 1 
 Case: 3 

 ------------------------------------------------------ 
 -                       F-test                       - 
 ------------------------------------------------------ 
                 <------- I(0) ------------ I(1) -----> 
 10% critical value       4.04            4.78 
 5% critical value        4.94            5.73 
 1% critical value        6.84            7.84 
 

 F-statistic = 19.2780520391696 
  
 ------------------------------------------------------ 
 F-statistic note: Asymptotic critical values used. 
 
------------------------------------------------------ 

 Ramsey's RESET Test for model specification:

    RESET test

data:  modelECM$model
RESET = 5.511, df1 = 2, df2 = 297, p-value = 0.004466

the p-value of RESET test:  0.004466275 < 0.05!
------------------------------------------------------ 
------------------------------------------------------ 
Error Correction Model Output: 

Time series regression with "ts" data:
Start = 9, End = 319

Call:
dynlm(formula = as.formula(model.text), data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-9249.4  -436.7   -51.2   479.5  3668.7 

Coefficients:
             Estimate Std. Error t value             Pr(>|t|)    
(Intercept) 182.33167   67.40644   2.705             0.007223 ** 
ec.1         -0.97544    0.08076 -12.079 < 0.0000000000000002 ***
dFDI.t        0.01625    0.04130   0.393             0.694277    
dFDI.1        0.61449    0.08928   6.883      0.0000000000345 ***
dFDI.2        0.43601    0.10126   4.306      0.0000225601632 ***
dFDI.3        0.34424    0.10526   3.270             0.001200 ** 
dFDI.4        0.35976    0.10595   3.396             0.000777 ***
dFDI.5        0.32719    0.10031   3.262             0.001236 ** 
dFDI.6        0.29812    0.08831   3.376             0.000833 ***
dFDI.7        0.21536    0.07016   3.069             0.002341 ** 
dFDI.8        0.07336    0.04409   1.664             0.097156 .  
dSX.1        -0.03983    0.05736  -0.694             0.487987    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1158 on 299 degrees of freedom
Multiple R-squared:  0.5318,    Adjusted R-squared:  0.5146 
F-statistic: 30.88 on 11 and 299 DF,  p-value: < 0.00000000000000022

------------------------------------------------------ 
Long-run coefficients: 
      SX.1      FDI.1 
-0.9754370 -0.7070564 
  

ARDL Bound Test for Sensex & FII:

ABT_2=ardlBound(dfd, formula=SX~FII, case=3,max.p=7,max.q=1)
  
Orders being calculated with max.p = 7 and max.q = 1 ...

Autoregressive order: 2 and p-orders: 8 
------------------------------------------------------ 

 Breusch-Godfrey Test for the autocorrelation in residuals:

    Breusch-Godfrey test for serial correlation of order up to 1

data:  modelFull$model
LM test = 12.962, df1 = 1, df2 = 299, p-value = 0.0003721

The p-value of Breusch-Godfrey test for the autocorrelation in residuals:  0.0003720704 < 0.05!
------------------------------------------------------ 

 Ljung-Box Test for the autocorrelation in residuals:

    Box-Ljung test

data:  res
X-squared = 0.094533, df = 1, p-value = 0.7585

------------------------------------------------------ 

 Breusch-Pagan Test for the homoskedasticity of residuals:

    studentized Breusch-Pagan test

data:  modelFull$model
BP = 31.645, df = 11, p-value = 0.0008695

The p-value of Breusch-Pagan test for the homoskedasticity of residuals:  0.0008695241 < 0.05!
------------------------------------------------------ 

 Shapiro-Wilk test of normality of residuals:

    Shapiro-Wilk normality test

data:  modelFull$model$residual
W = 0.90211, p-value = 0.0000000000002494

The p-value of Shapiro-Wilk test normality of residuals:  0.0000000000002493522 < 0.05!
------------------------------------------------------ 

 PESARAN, SHIN AND SMITH (2001) COINTEGRATION TEST 

 Observations: 319 
 Number of Regressors (k): 1 
 Case: 3 

 ------------------------------------------------------ 
 -                       F-test                       - 
 ------------------------------------------------------ 
                 <------- I(0) ------------ I(1) -----> 
 10% critical value       4.04            4.78 
 5% critical value        4.94            5.73 
 1% critical value        6.84            7.84 
 

 F-statistic = 21.2764116165807 
  
 ------------------------------------------------------ 
 F-statistic note: Asymptotic critical values used. 
 
------------------------------------------------------ 

 Ramsey's RESET Test for model specification:

    RESET test

data:  modelECM$model
RESET = 8.3385, df1 = 2, df2 = 299, p-value = 0.0002992

the p-value of RESET test:  0.0002992348 < 0.05!
------------------------------------------------------ 
------------------------------------------------------ 
Error Correction Model Output: 

Time series regression with "ts" data:
Start = 8, End = 319

Call:
dynlm(formula = as.formula(model.text), data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-5166.6  -387.7   -59.3   372.1  5559.0 

Coefficients:
              Estimate Std. Error t value             Pr(>|t|)    
(Intercept) 163.113018  56.238055   2.900             0.004001 ** 
ec.1         -0.903201   0.080096 -11.276 < 0.0000000000000002 ***
dFII.t        0.075021   0.005270  14.237 < 0.0000000000000002 ***
dFII.1       -0.104330   0.019204  -5.433          0.000000115 ***
dFII.2       -0.076390   0.016279  -4.692          0.000004103 ***
dFII.3       -0.051306   0.014679  -3.495             0.000545 ***
dFII.4       -0.038185   0.013238  -2.884             0.004204 ** 
dFII.5       -0.030226   0.011527  -2.622             0.009180 ** 
dFII.6       -0.015037   0.008935  -1.683             0.093440 .  
dFII.7       -0.001618   0.005435  -0.298             0.766066    
dSX.1        -0.084274   0.057192  -1.474             0.141656    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 960.4 on 301 degrees of freedom
Multiple R-squared:  0.676, Adjusted R-squared:  0.6652 
F-statistic:  62.8 on 10 and 301 DF,  p-value: < 0.00000000000000022

------------------------------------------------------ 
Long-run coefficients: 
      SX.1      FII.1 
-0.9032014  0.2236396 
  

#ARDL Bound Test for Sensex & USD:

ABT_3=ardlBound(dfd, formula=SX~USD, case=3,max.p=1,max.q=1)
  
Orders being calculated with max.p = 1 and max.q = 1 ...

Autoregressive order: 2 and p-orders: 2 
------------------------------------------------------ 

 Breusch-Godfrey Test for the autocorrelation in residuals:

    Breusch-Godfrey test for serial correlation of order up to 1

data:  modelFull$model
LM test = 0.80382, df1 = 1, df2 = 311, p-value = 0.3706

------------------------------------------------------ 

 Ljung-Box Test for the autocorrelation in residuals:

    Box-Ljung test

data:  res
X-squared = 0.0012342, df = 1, p-value = 0.972

------------------------------------------------------ 

 Breusch-Pagan Test for the homoskedasticity of residuals:

    studentized Breusch-Pagan test

data:  modelFull$model
BP = 13.068, df = 5, p-value = 0.02275

The p-value of Breusch-Pagan test for the homoskedasticity of residuals:  0.0227501 < 0.05!
------------------------------------------------------ 

 Shapiro-Wilk test of normality of residuals:

    Shapiro-Wilk normality test

data:  modelFull$model$residual
W = 0.87944, p-value = 0.000000000000004169

The p-value of Shapiro-Wilk test normality of residuals:  0.000000000000004169366 < 0.05!
------------------------------------------------------ 

 PESARAN, SHIN AND SMITH (2001) COINTEGRATION TEST 

 Observations: 319 
 Number of Regressors (k): 1 
 Case: 3 

 ------------------------------------------------------ 
 -                       F-test                       - 
 ------------------------------------------------------ 
                 <------- I(0) ------------ I(1) -----> 
 10% critical value       4.04            4.78 
 5% critical value        4.94            5.73 
 1% critical value        6.84            7.84 
 

 F-statistic = 78.5565883916374 
  
 ------------------------------------------------------ 
 F-statistic note: Asymptotic critical values used. 
 
------------------------------------------------------ 

 Ramsey's RESET Test for model specification:

    RESET test

data:  modelECM$model
RESET = 10.921, df1 = 2, df2 = 311, p-value = 0.00002607

the p-value of RESET test:  0.00002606975 < 0.05!
------------------------------------------------------ 
------------------------------------------------------ 
Error Correction Model Output: 

Time series regression with "ts" data:
Start = 2, End = 319

Call:
dynlm(formula = as.formula(model.text), data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-7738.2  -434.8   -30.6   414.9  4849.6 

Coefficients:
              Estimate Std. Error t value             Pr(>|t|)    
(Intercept)  243.17620   63.99348   3.800             0.000174 ***
ec.1          -1.04994    0.08363 -12.555 < 0.0000000000000002 ***
dUSD.t      -536.16642   63.42052  -8.454  0.00000000000000108 ***
dUSD.1         0.64641   65.55613   0.010             0.992139    
dSX.1         -0.03376    0.05832  -0.579             0.563102    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1088 on 313 degrees of freedom
Multiple R-squared:  0.5678,    Adjusted R-squared:  0.5623 
F-statistic: 102.8 on 4 and 313 DF,  p-value: < 0.00000000000000022

------------------------------------------------------ 
Long-run coefficients: 
       SX.1       USD.1 
  -1.049936 -446.758500 
  

#ARDL Bound Test for Sensex & NBT:

ABT_4=ardlBound(dfd, formula=SX~NBT, case=3,max.p=5,max.q=1)
  
Orders being calculated with max.p = 5 and max.q = 1 ...

Autoregressive order: 2 and p-orders: 6 
------------------------------------------------------ 

 Breusch-Godfrey Test for the autocorrelation in residuals:

    Breusch-Godfrey test for serial correlation of order up to 1

data:  modelFull$model
LM test = 1.7509, df1 = 1, df2 = 303, p-value = 0.1868

------------------------------------------------------ 

 Ljung-Box Test for the autocorrelation in residuals:

    Box-Ljung test

data:  res
X-squared = 0.0054593, df = 1, p-value = 0.9411

------------------------------------------------------ 

 Breusch-Pagan Test for the homoskedasticity of residuals:

    studentized Breusch-Pagan test

data:  modelFull$model
BP = 12.604, df = 9, p-value = 0.1813

------------------------------------------------------ 

 Shapiro-Wilk test of normality of residuals:

    Shapiro-Wilk normality test

data:  modelFull$model$residual
W = 0.86865, p-value = 0.000000000000001071

The p-value of Shapiro-Wilk test normality of residuals:  0.000000000000001070651 < 0.05!
------------------------------------------------------ 

 PESARAN, SHIN AND SMITH (2001) COINTEGRATION TEST 

 Observations: 319 
 Number of Regressors (k): 1 
 Case: 3 

 ------------------------------------------------------ 
 -                       F-test                       - 
 ------------------------------------------------------ 
                 <------- I(0) ------------ I(1) -----> 
 10% critical value       4.04            4.78 
 5% critical value        4.94            5.73 
 1% critical value        6.84            7.84 
 

 F-statistic = 26.6154952419049 
  
 ------------------------------------------------------ 
 F-statistic note: Asymptotic critical values used. 
 
------------------------------------------------------ 

 Ramsey's RESET Test for model specification:

    RESET test

data:  modelECM$model
RESET = 6.0737, df1 = 2, df2 = 303, p-value = 0.002592

the p-value of RESET test:  0.002592472 < 0.05!
------------------------------------------------------ 
------------------------------------------------------ 
Error Correction Model Output: 

Time series regression with "ts" data:
Start = 6, End = 319

Call:
dynlm(formula = as.formula(model.text), data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-9040.2  -431.0   -46.8   410.1  4671.4 

Coefficients:
                Estimate   Std. Error t value             Pr(>|t|)    
(Intercept)   180.849807    68.049235   2.658              0.00828 ** 
ec.1           -1.017521     0.081099 -12.547 < 0.0000000000000002 ***
dNBT.t       -562.299579  1259.963626  -0.446              0.65571    
dNBT.1      -9496.040723  2044.543444  -4.645           0.00000507 ***
dNBT.2      -6829.178152  2319.140424  -2.945              0.00348 ** 
dNBT.3      -4718.497481  2257.067923  -2.091              0.03740 *  
dNBT.4      -2617.348496  1887.129526  -1.387              0.16647    
dNBT.5      -1367.030441  1259.134066  -1.086              0.27847    
dSX.1           0.009591     0.057624   0.166              0.86792    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1179 on 305 degrees of freedom
Multiple R-squared:  0.5057,    Adjusted R-squared:  0.4928 
F-statistic: 39.01 on 8 and 305 DF,  p-value: < 0.00000000000000022

------------------------------------------------------ 
Long-run coefficients: 
       SX.1       NBT.1 
  -1.017521 9859.045866 
  

#Granger Casuality Test between Sensex & FDI:

grangertest(dfd $ SX ~ dfd $ FDI, order=8,data=dfd) ;grangertest(dfd $ FDI ~ dfd $ SX, order=8,data=dfd)
Granger causality test

Model 1: dfd$SX ~ Lags(dfd$SX, 1:8) + Lags(dfd$FDI, 1:8)
Model 2: dfd$SX ~ Lags(dfd$SX, 1:8)
  Res.Df Df      F  Pr(>F)  
1    295                    
2    303 -8 2.3948 0.01626 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Granger causality test

Model 1: dfd$FDI ~ Lags(dfd$FDI, 1:8) + Lags(dfd$SX, 1:8)
Model 2: dfd$FDI ~ Lags(dfd$FDI, 1:8)
  Res.Df Df      F     Pr(>F)    
1    295                         
2    303 -8 4.3212 0.00006113 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#Granger Casuality Test between Sensex & FII:

grangertest(dfd $ SX ~ dfd $ FII, order=3,data=dfd) ;  grangertest(dfd $ FII ~ dfd $ SX, order=3,data=dfd)
Granger causality test

Model 1: dfd$SX ~ Lags(dfd$SX, 1:3) + Lags(dfd$FII, 1:3)
Model 2: dfd$SX ~ Lags(dfd$SX, 1:3)
  Res.Df Df      F Pr(>F)
1    310                 
2    313 -3 0.1875 0.9049
Granger causality test

Model 1: dfd$FII ~ Lags(dfd$FII, 1:3) + Lags(dfd$SX, 1:3)
Model 2: dfd$FII ~ Lags(dfd$FII, 1:3)
  Res.Df Df      F    Pr(>F)    
1    310                        
2    313 -3 7.1987 0.0001099 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#Granger Casuality Test between Sensex & USD:

grangertest(dfd $ SX ~ dfd $ USD, order=1,data=dfd) ;  grangertest(dfd $ USD ~ dfd $ SX, order=1,data=dfd)
Granger causality test

Model 1: dfd$SX ~ Lags(dfd$SX, 1:1) + Lags(dfd$USD, 1:1)
Model 2: dfd$SX ~ Lags(dfd$SX, 1:1)
  Res.Df Df      F Pr(>F)
1    316                 
2    317 -1 0.0468 0.8289
Granger causality test

Model 1: dfd$USD ~ Lags(dfd$USD, 1:1) + Lags(dfd$SX, 1:1)
Model 2: dfd$USD ~ Lags(dfd$USD, 1:1)
  Res.Df Df      F    Pr(>F)    
1    316                        
2    317 -1 13.866 0.0002324 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#Granger Casuality Test between Sensex & NBT:

grangertest(dfd $ SX ~ dfd $ NBT, order=2,data=dfd) ;  grangertest(dfd $ NBT ~ dfd $ SX, order=2,data=dfd)
Granger causality test

Model 1: dfd$SX ~ Lags(dfd$SX, 1:2) + Lags(dfd$NBT, 1:2)
Model 2: dfd$SX ~ Lags(dfd$SX, 1:2)
  Res.Df Df      F Pr(>F)
1    313                 
2    315 -2 0.6825 0.5061
Granger causality test

Model 1: dfd$NBT ~ Lags(dfd$NBT, 1:2) + Lags(dfd$SX, 1:2)
Model 2: dfd$NBT ~ Lags(dfd$NBT, 1:2)
  Res.Df Df      F Pr(>F)  
1    313                   
2    315 -2 2.4131 0.0912 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1