jlivsey / UB-sping24-time-series

3 stars 1 forks source link

Akhila Markunda #31

Open AkhilaMarkunda opened 4 months ago

AkhilaMarkunda commented 4 months ago

amarkund_CDA_HW-1.pdf

The forecast obtained is 334217.17 and the confidence interval is [178899.05 489535.30]

AkhilaMarkunda commented 4 months ago

CDA_HW-2.pdf Hence the multiplicative Holt-Winters Last Forecast Value is 343007.08 and additive Holt-Winters Last Forecast Value is 302394.95

AkhilaMarkunda commented 3 months ago

amarkund-CDA-hw-3 - Jupyter Notebook.pdf The forecast obtained is 144451.4

AkhilaMarkunda commented 2 months ago

HW-4

library(reprex)
#> Warning: package 'reprex' was built under R version 4.3.3
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.3.3
library(vars)
#> Warning: package 'vars' was built under R version 4.3.3
#> Loading required package: MASS
#> Loading required package: strucchange
#> Warning: package 'strucchange' was built under R version 4.3.3
#> Loading required package: zoo
#> 
#> Attaching package: 'zoo'
#> The following objects are masked from 'package:base':
#> 
#>     as.Date, as.Date.numeric
#> Loading required package: sandwich
#> Warning: package 'sandwich' was built under R version 4.3.3
#> Loading required package: urca
#> Warning: package 'urca' was built under R version 4.3.3
#> Loading required package: lmtest
#> Warning: package 'lmtest' was built under R version 4.3.3
library(BigVAR)
#> Warning: package 'BigVAR' was built under R version 4.3.3
#> Loading required package: lattice
#> Warning: package 'lattice' was built under R version 4.3.3

Buss_App <- read.csv("C:/Users/Akhila Markunda/Downloads/Business_Applications.csv", skip = 7)
print(head(Buss_App))
#>     Period Value
#> 1 Jan-2004    NA
#> 2 Feb-2004    NA
#> 3 Mar-2004    NA
#> 4 Apr-2004    NA
#> 5 May-2004    NA
#> 6 Jun-2004    NA

Buss_App$Value <- as.numeric(as.character(Buss_App$Value))
sum(is.na(Buss_App$Value))
#> [1] 15

library(tseries)
#> Warning: package 'tseries' was built under R version 4.3.3
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo
library(lattice)
Buss_App <- Buss_App[!is.na(Buss_App$Value), ]
Buss_App_time_series <- ts(Buss_App$Value, start=c(2004, 1), frequency=12)

Buss_App_plan_wages <- read.csv("C:/Users/Akhila Markunda/Downloads/Business_Applications_with_planned_wages.csv", skip = 7)
print(head(Buss_App_plan_wages))
#>     Period Value
#> 1 Jan-2004    NA
#> 2 Feb-2004    NA
#> 3 Mar-2004    NA
#> 4 Apr-2004    NA
#> 5 May-2004    NA
#> 6 Jun-2004    NA

Buss_App_plan_wages$Value <- as.numeric(as.character(Buss_App_plan_wages$Value))
sum(is.na(Buss_App_plan_wages$Value))
#> [1] 15

library(tseries)
Buss_App_plan_wages <- Buss_App_plan_wages[!is.na(Buss_App_plan_wages$Value), ]
Buss_App_plan_wages_time_series <- ts(Buss_App_plan_wages$Value, start=c(2004, 1), frequency=12)

Buss_form_four_quarters <- read.csv("C:/Users/Akhila Markunda/Downloads/Business_formations_within_four_quarters.csv", skip = 7)
print(head(Buss_form_four_quarters))
#>     Period Value
#> 1 Jan-2004    NA
#> 2 Feb-2004    NA
#> 3 Mar-2004    NA
#> 4 Apr-2004    NA
#> 5 May-2004    NA
#> 6 Jun-2004    NA

Buss_form_four_quarters$Value <- as.numeric(as.character(Buss_form_four_quarters$Value))
sum(is.na(Buss_form_four_quarters$Value))
#> [1] 54

Buss_form_four_quarters <- Buss_form_four_quarters[!is.na(Buss_form_four_quarters$Value), ]
Buss_form_four_quarters_time_series <- ts(Buss_form_four_quarters$Value, start=c(2004, 1), frequency=12)

Buss_Form_eight_quarters <- read.csv("C:/Users/Akhila Markunda/Downloads/Business_Formations_within_eight_quarters.csv", skip = 7)
print(head(Buss_Form_eight_quarters))
#>     Period Value
#> 1 Jan-2004    NA
#> 2 Feb-2004    NA
#> 3 Mar-2004    NA
#> 4 Apr-2004    NA
#> 5 May-2004    NA
#> 6 Jun-2004    NA

Buss_Form_eight_quarters$Value <- as.numeric(as.character(Buss_Form_eight_quarters$Value))
sum(is.na(Buss_Form_eight_quarters$Value))
#> [1] 66

Buss_Form_eight_quarters <- Buss_Form_eight_quarters[!is.na(Buss_Form_eight_quarters$Value), ]
Buss_Form_eight_quarters_time_series <- ts(Buss_Form_eight_quarters$Value, start=c(2004, 1), frequency=12)

plot(Buss_App_time_series, main="Business Applications", xlab="Year", ylab="No of Business applications")


plot(Buss_App_plan_wages_time_series, main="Business appications with planned wages", xlab="Year", ylab="No of Business appications")


plot(Buss_form_four_quarters_time_series, main="Business formations within four quarters", xlab="Year", ylab="No of business formed")


plot(Buss_Form_eight_quarters_time_series, main="Business formations within eight quarters", xlab="Year", ylab="No of business formed")


dc_Buss_App <- stl(Buss_App_time_series, s.window="periodic")
plot(dc_Buss_App)


dc_Buss_App_plan_wages <- stl(Buss_App_plan_wages_time_series, s.window="periodic")
plot(dc_Buss_App_plan_wages)


dc_Buss_form_four_quarters <- stl(Buss_form_four_quarters_time_series, s.window="periodic")
plot(dc_Buss_form_four_quarters)


dc_Buss_Form_eight_quarters <- stl(Buss_Form_eight_quarters_time_series, s.window="periodic")
plot(dc_Buss_Form_eight_quarters)


adf.test(Buss_App_time_series)
#> 
#>  Augmented Dickey-Fuller Test
#> 
#> data:  Buss_App_time_series
#> Dickey-Fuller = -1.5293, Lag order = 6, p-value = 0.7738
#> alternative hypothesis: stationary

adf.test(Buss_App_plan_wages_time_series)
#> 
#>  Augmented Dickey-Fuller Test
#> 
#> data:  Buss_App_plan_wages_time_series
#> Dickey-Fuller = -1.4175, Lag order = 6, p-value = 0.8208
#> alternative hypothesis: stationary

adf.test(Buss_form_four_quarters_time_series)
#> 
#>  Augmented Dickey-Fuller Test
#> 
#> data:  Buss_form_four_quarters_time_series
#> Dickey-Fuller = -1.6219, Lag order = 5, p-value = 0.7344
#> alternative hypothesis: stationary

adf.test(Buss_Form_eight_quarters_time_series)
#> 
#>  Augmented Dickey-Fuller Test
#> 
#> data:  Buss_Form_eight_quarters_time_series
#> Dickey-Fuller = -1.1711, Lag order = 5, p-value = 0.9087
#> alternative hypothesis: stationary

library(forecast)
#> Warning: package 'forecast' was built under R version 4.3.3
fit_Buss_App <- auto.arima(Buss_App_time_series)
summary(fit_Buss_App)
#> Series: Buss_App_time_series 
#> ARIMA(1,1,1)(0,0,2)[12] with drift 
#> 
#> Coefficients:
#>          ar1      ma1     sma1     sma2      drift
#>       0.5020  -0.8008  -0.0899  -0.0952  1139.3624
#> s.e.  0.1019   0.0672   0.0656   0.0621   470.5771
#> 
#> sigma^2 = 471836909:  log likelihood = -2689.37
#> AIC=5390.75   AICc=5391.12   BIC=5411.53
#> 
#> Training set error measures:
#>                   ME     RMSE      MAE        MPE     MAPE      MASE
#> Training set 142.188 21445.09 11532.16 -0.4730759 4.133808 0.4593372
#>                      ACF1
#> Training set -0.006783182

fit_Buss_App_plan_wages <- auto.arima(Buss_App_plan_wages_time_series)
summary(fit_Buss_App_plan_wages)
#> Series: Buss_App_plan_wages_time_series 
#> ARIMA(3,1,3)(2,0,1)[12] 
#> 
#> Coefficients:
#>          ar1      ar2      ar3      ma1     ma2      ma3    sar1     sar2
#>       1.1327  -0.6873  -0.1553  -1.4891  1.0921  -0.1926  0.4632  -0.3088
#> s.e.  0.2425   0.3157   0.1903   0.2419  0.3533   0.1996  0.1670   0.0697
#>          sma1
#>       -0.3858
#> s.e.   0.1697
#> 
#> sigma^2 = 12698298:  log likelihood = -2261.84
#> AIC=4543.67   AICc=4544.65   BIC=4578.31
#> 
#> Training set error measures:
#>                     ME     RMSE      MAE        MPE     MAPE      MASE
#> Training set -176.3733 3487.478 2161.347 -0.6737667 4.300286 0.4500156
#>                     ACF1
#> Training set 0.009434826

fit_Buss_form_four_quarters <- auto.arima(Buss_form_four_quarters_time_series)
summary(fit_Buss_form_four_quarters)
#> Series: Buss_form_four_quarters_time_series 
#> ARIMA(0,1,4)(2,0,1)[12] with drift 
#> 
#> Coefficients:
#>           ma1     ma2      ma3      ma4    sar1     sar2     sma1     drift
#>       -0.4811  0.0131  -0.0870  -0.0867  0.6436  -0.3238  -0.5663  -46.1638
#> s.e.   0.0757  0.0846   0.0839   0.0743  0.1597   0.0875   0.1515   28.4265
#> 
#> sigma^2 = 2550661:  log likelihood = -1730.35
#> AIC=3478.7   AICc=3479.66   BIC=3508.25
#> 
#> Training set error measures:
#>                    ME    RMSE      MAE        MPE     MAPE      MASE       ACF1
#> Training set 12.50206 1560.36 1028.125 -0.2659195 4.059251 0.5346717 0.02252801

fit_Buss_Form_eight_quarters <- auto.arima(Buss_Form_eight_quarters_time_series)
summary(fit_Buss_Form_eight_quarters)
#> Series: Buss_Form_eight_quarters_time_series 
#> ARIMA(2,1,2) 
#> 
#> Coefficients:
#>          ar1     ar2      ma1     ma2
#>       0.7050  0.1345  -1.6178  0.7212
#> s.e.  0.1064  0.1015   0.0789  0.0719
#> 
#> sigma^2 = 2332055:  log likelihood = -1617.4
#> AIC=3244.79   AICc=3245.13   BIC=3260.9
#> 
#> Training set error measures:
#>                     ME     RMSE      MAE        MPE     MAPE      MASE
#> Training set -18.92707 1506.441 1018.508 -0.2047401 3.250815 0.5147627
#>                    ACF1
#> Training set 0.06751004

checkresiduals(fit_Buss_App)

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from ARIMA(1,1,1)(0,0,2)[12] with drift
#> Q* = 33.127, df = 20, p-value = 0.03267
#> 
#> Model df: 4.   Total lags used: 24

checkresiduals(fit_Buss_App_plan_wages)

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from ARIMA(3,1,3)(2,0,1)[12]
#> Q* = 9.4945, df = 15, p-value = 0.8503
#> 
#> Model df: 9.   Total lags used: 24

checkresiduals(fit_Buss_form_four_quarters)

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from ARIMA(0,1,4)(2,0,1)[12] with drift
#> Q* = 14.07, df = 17, p-value = 0.6621
#> 
#> Model df: 7.   Total lags used: 24

checkresiduals(fit_Buss_Form_eight_quarters)

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from ARIMA(2,1,2)
#> Q* = 18.357, df = 20, p-value = 0.5639
#> 
#> Model df: 4.   Total lags used: 24

acf(Buss_App_time_series, main="Business Applications ACF")


acf(Buss_App_plan_wages_time_series, main="Business Applications with planned wages ACF")


acf(Buss_form_four_quarters_time_series, main="Business formations within four quarters ACF")


acf(Buss_Form_eight_quarters_time_series, main="Business formations within eight quarters ACF")


pacf(Buss_App_time_series, main="Business Applications PACF")


pacf(Buss_App_plan_wages_time_series, main="Business Applications with planned wages PACF")


pacf(Buss_form_four_quarters_time_series, main="Business formations within four quarters PACF")


pacf(Buss_Form_eight_quarters_time_series, main="Business formations within eight quarters PACF")


min_length <- min(length(Buss_App_time_series), length(Buss_App_plan_wages_time_series), length(Buss_form_four_quarters_time_series), length(Buss_Form_eight_quarters_time_series))

Buss_App_time_series_trim <- Buss_App_time_series[1:min_length]
Buss_App_plan_wages_time_series_trim <- Buss_App_plan_wages_time_series[1:min_length]
Buss_form_four_quarters_time_series_trim <- Buss_form_four_quarters_time_series[1:min_length]
Buss_Form_eight_quarters_time_series_trim <- Buss_Form_eight_quarters_time_series[1:min_length]

data_merged <- data.frame(Buss_App = Buss_App_time_series_trim,
                            Buss_App_plan_wages = Buss_App_plan_wages_time_series_trim,
                            Buss_form_four_quarters = Buss_form_four_quarters_time_series_trim,
                            Buss_Form_eight_quarters = Buss_Form_eight_quarters_time_series_trim)

merged_time_series <- ts(data_merged, start=c(2004, 1), frequency=12)

Model_var_1 <- VAR(merged_time_series, p=1, type="both")
summary(Model_var_1)
#> 
#> VAR Estimation Results:
#> ========================= 
#> Endogenous variables: Buss_App, Buss_App_plan_wages, Buss_form_four_quarters, Buss_Form_eight_quarters 
#> Deterministic variables: both 
#> Sample size: 185 
#> Log Likelihood: -6271.608 
#> Roots of the characteristic polynomial:
#> 0.9466 0.9466 0.8044 0.4783
#> Call:
#> VAR(y = merged_time_series, p = 1, type = "both")
#> 
#> 
#> Estimation results for equation Buss_App: 
#> ========================================= 
#> Buss_App = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)    
#> Buss_App.l1                  3.553e-01  9.107e-02   3.901 0.000135 ***
#> Buss_App_plan_wages.l1       1.301e+00  3.069e-01   4.240 3.58e-05 ***
#> Buss_form_four_quarters.l1  -5.949e+00  3.642e+00  -1.633 0.104136    
#> Buss_Form_eight_quarters.l1  4.249e+00  3.169e+00   1.341 0.181766    
#> const                        6.855e+04  1.128e+04   6.080 7.08e-09 ***
#> trend                        4.276e+02  9.509e+01   4.497 1.23e-05 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 13170 on 179 degrees of freedom
#> Multiple R-Squared: 0.8197,  Adjusted R-squared: 0.8147 
#> F-statistic: 162.8 on 5 and 179 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_App_plan_wages: 
#> ==================================================== 
#> Buss_App_plan_wages = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)    
#> Buss_App.l1                 -1.328e-01  2.216e-02  -5.995 1.10e-08 ***
#> Buss_App_plan_wages.l1       1.167e+00  7.467e-02  15.633  < 2e-16 ***
#> Buss_form_four_quarters.l1  -1.830e+00  8.861e-01  -2.065  0.04034 *  
#> Buss_Form_eight_quarters.l1  1.553e+00  7.712e-01   2.013  0.04557 *  
#> const                        1.606e+04  2.744e+03   5.853 2.26e-08 ***
#> trend                        6.428e+01  2.314e+01   2.778  0.00605 ** 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 3204 on 179 degrees of freedom
#> Multiple R-Squared: 0.947,   Adjusted R-squared: 0.9455 
#> F-statistic: 639.8 on 5 and 179 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_form_four_quarters: 
#> ======================================================== 
#> Buss_form_four_quarters = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)    
#> Buss_App.l1                   -0.07367    0.01062  -6.939 6.97e-11 ***
#> Buss_App_plan_wages.l1         0.13629    0.03577   3.810 0.000191 ***
#> Buss_form_four_quarters.l1    -0.12598    0.42454  -0.297 0.767011    
#> Buss_Form_eight_quarters.l1    0.86424    0.36948   2.339 0.020437 *  
#> const                       9270.40989 1314.46294   7.053 3.69e-11 ***
#> trend                         38.88801   11.08461   3.508 0.000570 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 1535 on 179 degrees of freedom
#> Multiple R-Squared: 0.8772,  Adjusted R-squared: 0.8737 
#> F-statistic: 255.6 on 5 and 179 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_Form_eight_quarters: 
#> ========================================================= 
#> Buss_Form_eight_quarters = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)    
#> Buss_App.l1                 -8.276e-02  1.220e-02  -6.783 1.65e-10 ***
#> Buss_App_plan_wages.l1       1.545e-01  4.111e-02   3.758 0.000232 ***
#> Buss_form_four_quarters.l1  -1.048e+00  4.879e-01  -2.148 0.033091 *  
#> Buss_Form_eight_quarters.l1  1.778e+00  4.246e-01   4.187 4.43e-05 ***
#> const                        1.028e+04  1.511e+03   6.808 1.44e-10 ***
#> trend                        4.742e+01  1.274e+01   3.723 0.000264 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 1764 on 179 degrees of freedom
#> Multiple R-Squared: 0.8441,  Adjusted R-squared: 0.8397 
#> F-statistic: 193.8 on 5 and 179 DF,  p-value: < 2.2e-16 
#> 
#> 
#> 
#> Covariance matrix of residuals:
#>                           Buss_App Buss_App_plan_wages Buss_form_four_quarters
#> Buss_App                 173357268            35364325                18556387
#> Buss_App_plan_wages       35364325            10264311                 4468707
#> Buss_form_four_quarters   18556387             4468707                 2355903
#> Buss_Form_eight_quarters  21480529             5141675                 2691485
#>                          Buss_Form_eight_quarters
#> Buss_App                                 21480529
#> Buss_App_plan_wages                       5141675
#> Buss_form_four_quarters                   2691485
#> Buss_Form_eight_quarters                  3111122
#> 
#> Correlation matrix of residuals:
#>                          Buss_App Buss_App_plan_wages Buss_form_four_quarters
#> Buss_App                   1.0000              0.8384                  0.9182
#> Buss_App_plan_wages        0.8384              1.0000                  0.9087
#> Buss_form_four_quarters    0.9182              0.9087                  1.0000
#> Buss_Form_eight_quarters   0.9249              0.9099                  0.9942
#>                          Buss_Form_eight_quarters
#> Buss_App                                   0.9249
#> Buss_App_plan_wages                        0.9099
#> Buss_form_four_quarters                    0.9942
#> Buss_Form_eight_quarters                   1.0000

selection_lag <- VARselect(merged_time_series, lag.max=10, type="both")
lags_optimal <- selection_lag$selection["AIC(n)"]

Model_var_p <- VAR(merged_time_series, p=lags_optimal, type="both")
summary(Model_var_p)
#> 
#> VAR Estimation Results:
#> ========================= 
#> Endogenous variables: Buss_App, Buss_App_plan_wages, Buss_form_four_quarters, Buss_Form_eight_quarters 
#> Deterministic variables: both 
#> Sample size: 183 
#> Log Likelihood: -6127.296 
#> Roots of the characteristic polynomial:
#> 0.9756 0.9756 0.8972 0.6458 0.6458 0.619 0.619 0.499 0.499 0.4324 0.4324 0.3623
#> Call:
#> VAR(y = merged_time_series, p = lags_optimal, type = "both")
#> 
#> 
#> Estimation results for equation Buss_App: 
#> ========================================= 
#> Buss_App = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + Buss_App.l2 + Buss_App_plan_wages.l2 + Buss_form_four_quarters.l2 + Buss_Form_eight_quarters.l2 + Buss_App.l3 + Buss_App_plan_wages.l3 + Buss_form_four_quarters.l3 + Buss_Form_eight_quarters.l3 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)  
#> Buss_App.l1                  2.102e-01  1.873e-01   1.122   0.2634  
#> Buss_App_plan_wages.l1       9.352e-01  6.472e-01   1.445   0.1503  
#> Buss_form_four_quarters.l1   3.385e+00  5.393e+00   0.628   0.5310  
#> Buss_Form_eight_quarters.l1 -4.921e+00  5.007e+00  -0.983   0.3272  
#> Buss_App.l2                  4.497e-02  2.141e-01   0.210   0.8339  
#> Buss_App_plan_wages.l2      -1.231e+00  9.212e-01  -1.336   0.1832  
#> Buss_form_four_quarters.l2  -1.239e+00  6.554e+00  -0.189   0.8502  
#> Buss_Form_eight_quarters.l2  5.436e+00  6.028e+00   0.902   0.3684  
#> Buss_App.l3                  4.251e-01  1.901e-01   2.236   0.0267 *
#> Buss_App_plan_wages.l3       8.949e-01  6.609e-01   1.354   0.1775  
#> Buss_form_four_quarters.l3  -6.860e+00  5.629e+00  -1.219   0.2247  
#> Buss_Form_eight_quarters.l3  3.577e+00  5.317e+00   0.673   0.5021  
#> const                        2.288e+04  1.180e+04   1.938   0.0543 .
#> trend                        2.070e+02  9.480e+01   2.183   0.0304 *
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 11290 on 169 degrees of freedom
#> Multiple R-Squared: 0.8726,  Adjusted R-squared: 0.8628 
#> F-statistic: 89.06 on 13 and 169 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_App_plan_wages: 
#> ==================================================== 
#> Buss_App_plan_wages = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + Buss_App.l2 + Buss_App_plan_wages.l2 + Buss_form_four_quarters.l2 + Buss_Form_eight_quarters.l2 + Buss_App.l3 + Buss_App_plan_wages.l3 + Buss_form_four_quarters.l3 + Buss_Form_eight_quarters.l3 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)    
#> Buss_App.l1                   -0.06864    0.04417  -1.554   0.1220    
#> Buss_App_plan_wages.l1         1.20459    0.15257   7.895  3.5e-13 ***
#> Buss_form_four_quarters.l1     0.56136    1.27121   0.442   0.6593    
#> Buss_Form_eight_quarters.l1   -1.75933    1.18039  -1.490   0.1380    
#> Buss_App.l2                   -0.05152    0.05047  -1.021   0.3088    
#> Buss_App_plan_wages.l2        -0.25842    0.21717  -1.190   0.2357    
#> Buss_form_four_quarters.l2    -0.50598    1.54496  -0.328   0.7437    
#> Buss_Form_eight_quarters.l2    1.93413    1.42111   1.361   0.1753    
#> Buss_App.l3                    0.06589    0.04482   1.470   0.1434    
#> Buss_App_plan_wages.l3         0.02024    0.15579   0.130   0.8968    
#> Buss_form_four_quarters.l3    -1.42873    1.32706  -1.077   0.2832    
#> Buss_Form_eight_quarters.l3    1.24073    1.25348   0.990   0.3237    
#> const                       5423.75181 2782.28995   1.949   0.0529 .  
#> trend                         10.43747   22.34870   0.467   0.6411    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 2661 on 169 degrees of freedom
#> Multiple R-Squared: 0.9642,  Adjusted R-squared: 0.9614 
#> F-statistic:   350 on 13 and 169 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_form_four_quarters: 
#> ======================================================== 
#> Buss_form_four_quarters = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + Buss_App.l2 + Buss_App_plan_wages.l2 + Buss_form_four_quarters.l2 + Buss_Form_eight_quarters.l2 + Buss_App.l3 + Buss_App_plan_wages.l3 + Buss_form_four_quarters.l3 + Buss_Form_eight_quarters.l3 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)   
#> Buss_App.l1                   -0.04248    0.02089  -2.033   0.0436 * 
#> Buss_App_plan_wages.l1         0.11415    0.07218   1.582   0.1156   
#> Buss_form_four_quarters.l1     0.73690    0.60134   1.225   0.2221   
#> Buss_Form_eight_quarters.l1   -0.43590    0.55838  -0.781   0.4361   
#> Buss_App.l2                   -0.02005    0.02388  -0.840   0.4022   
#> Buss_App_plan_wages.l2        -0.16296    0.10273  -1.586   0.1145   
#> Buss_form_four_quarters.l2    -0.16705    0.73084  -0.229   0.8195   
#> Buss_Form_eight_quarters.l2    0.86036    0.67225   1.280   0.2024   
#> Buss_App.l3                    0.02097    0.02120   0.989   0.3240   
#> Buss_App_plan_wages.l3         0.10233    0.07370   1.389   0.1668   
#> Buss_form_four_quarters.l3    -0.42035    0.62777  -0.670   0.5040   
#> Buss_Form_eight_quarters.l3    0.32359    0.59295   0.546   0.5860   
#> const                       4248.09207 1316.15741   3.228   0.0015 **
#> trend                         19.02015   10.57202   1.799   0.0738 . 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 1259 on 169 degrees of freedom
#> Multiple R-Squared: 0.9181,  Adjusted R-squared: 0.9118 
#> F-statistic: 145.8 on 13 and 169 DF,  p-value: < 2.2e-16 
#> 
#> 
#> Estimation results for equation Buss_Form_eight_quarters: 
#> ========================================================= 
#> Buss_Form_eight_quarters = Buss_App.l1 + Buss_App_plan_wages.l1 + Buss_form_four_quarters.l1 + Buss_Form_eight_quarters.l1 + Buss_App.l2 + Buss_App_plan_wages.l2 + Buss_form_four_quarters.l2 + Buss_Form_eight_quarters.l2 + Buss_App.l3 + Buss_App_plan_wages.l3 + Buss_form_four_quarters.l3 + Buss_Form_eight_quarters.l3 + const + trend 
#> 
#>                               Estimate Std. Error t value Pr(>|t|)   
#> Buss_App.l1                   -0.04738    0.02386  -1.986  0.04867 * 
#> Buss_App_plan_wages.l1         0.14458    0.08242   1.754  0.08121 . 
#> Buss_form_four_quarters.l1     0.07016    0.68670   0.102  0.91874   
#> Buss_Form_eight_quarters.l1    0.15391    0.63764   0.241  0.80956   
#> Buss_App.l2                   -0.02284    0.02727  -0.838  0.40329   
#> Buss_App_plan_wages.l2        -0.20512    0.11731  -1.748  0.08220 . 
#> Buss_form_four_quarters.l2    -0.18700    0.83458  -0.224  0.82297   
#> Buss_Form_eight_quarters.l2    1.02730    0.76767   1.338  0.18263   
#> Buss_App.l3                    0.02601    0.02421   1.074  0.28429   
#> Buss_App_plan_wages.l3         0.11699    0.08416   1.390  0.16631   
#> Buss_form_four_quarters.l3    -0.67886    0.71687  -0.947  0.34500   
#> Buss_Form_eight_quarters.l3    0.51910    0.67712   0.767  0.44437   
#> const                       4463.64716 1502.97251   2.970  0.00341 **
#> trend                         22.33878   12.07260   1.850  0.06601 . 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> 
#> Residual standard error: 1437 on 169 degrees of freedom
#> Multiple R-Squared: 0.8975,  Adjusted R-squared: 0.8896 
#> F-statistic: 113.8 on 13 and 169 DF,  p-value: < 2.2e-16 
#> 
#> 
#> 
#> Covariance matrix of residuals:
#>                           Buss_App Buss_App_plan_wages Buss_form_four_quarters
#> Buss_App                 127421508            23750122                12902690
#> Buss_App_plan_wages       23750122             7080967                 2909935
#> Buss_form_four_quarters   12902690             2909935                 1584541
#> Buss_Form_eight_quarters  14866957             3315591                 1794074
#>                          Buss_Form_eight_quarters
#> Buss_App                                 14866957
#> Buss_App_plan_wages                       3315591
#> Buss_form_four_quarters                   1794074
#> Buss_Form_eight_quarters                  2066283
#> 
#> Correlation matrix of residuals:
#>                          Buss_App Buss_App_plan_wages Buss_form_four_quarters
#> Buss_App                   1.0000              0.7907                  0.9080
#> Buss_App_plan_wages        0.7907              1.0000                  0.8687
#> Buss_form_four_quarters    0.9080              0.8687                  1.0000
#> Buss_Form_eight_quarters   0.9162              0.8668                  0.9915
#>                          Buss_Form_eight_quarters
#> Buss_App                                   0.9162
#> Buss_App_plan_wages                        0.8668
#> Buss_form_four_quarters                    0.9915
#> Buss_Form_eight_quarters                   1.0000

AIC_var_1 <- AIC(Model_var_1)
BIC_var_1 <- BIC(Model_var_1)

AIC_var_p <- AIC(Model_var_p)
BIC_var_p <- BIC(Model_var_p)

cat("VAR(1) AIC", AIC_var_1)
#> VAR(1) AIC 12591.22
cat("  VAR(1) BIC", BIC_var_1)
#>   VAR(1) BIC 12668.5

cat("VAR(p) AIC", AIC_var_p)
#> VAR(p) AIC 12366.59
cat("  VAR(p) BIC", BIC_var_p)
#>   VAR(p) BIC 12546.32

if(AIC_var_1 < AIC_var_p && BIC_var_1 < BIC_var_p) {
  cat("Based on AIC and BIC VAR(1) is preferred")
} else if(AIC_var_p < AIC_var_1 && BIC_var_p < BIC_var_1) {
  cat("Based on AIC and BIC VAR(p) is preferred")
} else {
  cat("Additional examinations and evaluations might be required as the decision is not straightforward")
}
#> Based on AIC and BIC VAR(p) is preferred

forecast_var_1 <- predict(Model_var_1, n.ahead=1)

forecast_var_p <- predict(Model_var_p, n.ahead=1)

print(forecast_var_1)
#> $Buss_App
#>                   fcst    lower  upper       CI
#> Buss_App.fcst 299274.1 273468.2 325080 25805.91
#> 
#> $Buss_App_plan_wages
#>                              fcst    lower    upper       CI
#> Buss_App_plan_wages.fcst 36810.85 30531.52 43090.17 6279.325
#> 
#> $Buss_form_four_quarters
#>                                  fcst    lower    upper       CI
#> Buss_form_four_quarters.fcst 22885.69 19877.35 25894.03 3008.339
#> 
#> $Buss_Form_eight_quarters
#>                                   fcst    lower    upper       CI
#> Buss_Form_eight_quarters.fcst 29345.83 25888.77 32802.89 3457.057

print(forecast_var_p)
#> $Buss_App
#>                   fcst    lower    upper      CI
#> Buss_App.fcst 306694.1 284569.8 328818.4 22124.3
#> 
#> $Buss_App_plan_wages
#>                              fcst    lower   upper       CI
#> Buss_App_plan_wages.fcst 39528.92 34313.44 44744.4 5215.481
#> 
#> $Buss_form_four_quarters
#>                                  fcst    lower    upper       CI
#> Buss_form_four_quarters.fcst 23813.46 21346.29 26280.64 2467.174
#> 
#> $Buss_Form_eight_quarters
#>                                   fcst    lower    upper       CI
#> Buss_Form_eight_quarters.fcst 30596.53 27779.16 33413.89 2817.364

par(mar = c(4, 4, 2, 2))
plot(forecast_var_1, main="VAR(1) one-month-ahead forecast")


par(mar = c(4, 4, 2, 2))
plot(forecast_var_p, main="VAR(p) one-month-ahead forecast")


gg_test <- causality(Model_var_p)
#> Warning in causality(Model_var_p): 
#> Argument 'cause' has not been specified;
#> using first variable in 'x$y' (Buss_App) as cause variable.
print(gg_test)
#> $Granger
#> 
#>  Granger causality H0: Buss_App do not Granger-cause Buss_App_plan_wages
#>  Buss_form_four_quarters Buss_Form_eight_quarters
#> 
#> data:  VAR object Model_var_p
#> F-Test = 3.1108, df1 = 9, df2 = 676, p-value = 0.001123
#> 
#> 
#> $Instant
#> 
#>  H0: No instantaneous causality between: Buss_App and
#>  Buss_App_plan_wages Buss_form_four_quarters Buss_Form_eight_quarters
#> 
#> data:  VAR object Model_var_p
#> Chi-squared = 83.518, df = 3, p-value < 2.2e-16

data_matrix <- as.matrix(merged_time_series)
sparse_var_model <- BigVAR.fit(data_matrix, p = 16, lambda = 0.1, struct = "SparseLag")
print(summary(sparse_var_model))
#>       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
#> -12321.908     -0.094      0.009    -42.481      0.127   2731.470

Created on 2024-04-11 with reprex v2.1.0