rjdmarkdown with PDF output

The functions developped in rjdmarkdown are:

  • print_preprocessing() for the pre-processing model;
  • print_decomposition() for the decomposition;
  • print_diagnostics() to print diagnostics tests on the quality of the seasonal adjustment.

The result is different between X-13ARIMA and TRAMO-SEATS models.

library(rjdmarkdown)
library(RJDemetra)
sa_x13 <- x13(ipi_c_eu[, "FR"])
sa_ts <- tramoseats(ipi_c_eu[, "FR"])

X-13-ARIMA model

print_preprocessing(sa_x13)

Pre-processing (RegArima)

Summary

360 observations

Series has been log-transformed

Trading days effect (6 variables)

Easter [1] detected

3 detected outliers

Likelihood statistics

Number of effective observations = 347

Number of estimated parameters = 15

Loglikelihood = 853.667, AICc = 1529.651, BICc = -7.547

Standard error of the regression (ML estimate) = 0.020

ARIMA model

ARIMA coefficients
Coefficients Std. Error T-stat P (> | t|)
Phi(1) 0.026 0.118 0.218 0.827
Phi(2) 0.159 0.078 2.039 0.042
Theta(1) -0.517 0.113 -4.589 0.000 ***
BTheta(1) -0.703 0.041 -17.093 0.000 ***
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1
ARIMA (2,1,1)(0,1,1)

Regression model

Regression coefficients
Coefficients Std. Error T-stat P (> | t|)
Monday 0.005 0.002 2.309 0.022
Tuesday 0.008 0.002 3.895 0.000 ***
Wednesday 0.011 0.002 4.903 0.000 ***
Thursday 0.002 0.002 0.955 0.340
Friday 0.008 0.002 3.826 0.000 ***
Saturday -0.016 0.002 -7.599 0.000 ***
Easter [1] -0.021 0.004 -4.979 0.000 ***
AO (5-2011) 0.128 0.017 7.447 0.000 ***
LS (11-2008) -0.087 0.017 -5.131 0.000 ***
LS (1-2009) -0.068 0.017 -4.037 0.000 ***
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1
print_decomposition(sa_x13, caption = NULL)

Decomposition (X-11)

Mode: multiplicative

S-I Ratio

S-I Ratio

M-statistics
Value Description
M-1 0.097 The relative contribution of the irregular over three months span
M-2 0.053 The relative contribution of the irregular component to the stationary portion of the variance
M-3 0.995 The amount of period to period change in the irregular component as compared to the amount of period to period change in the trend
M-4 0.421 The amount of autocorrelation in the irregular as described by the average duration of run
M-5 0.950 The number of periods it takes the change in the trend to surpass the amount of change in the irregular
M-6 0.154 The amount of year to year change in the irregular as compared to the amount of year to year change in the seasonal
M-7 0.074 The amount of moving seasonality present relative to the amount of stable seasonality
M-8 0.211 The size of the fluctuations in the seasonal component throughout the whole series
M-9 0.064 The average linear movement in the seasonal component throughout the whole series
M-10 0.267 The size of the fluctuations in the seasonal component in the recent years
M-11 0.250 The average linear movement in the seasonal component in the recent years
Q 0.322
Q-M2 0.355
Final filters: M3x5, Henderson-13 terms
Relative contribution of the components to the stationary portion of the variance in the original series, after the removal of the long term trend
Component
Cycle 1.941
Seasonal 62.123
Irregular 0.842
TD & Hol. 2.428
Others 32.787
Total 100.121
print_diagnostics(sa_x13)
Diagnostics tests
P (> | t|)
mean 0.797
skewness 0.383
kurtosis 0.409
ljung box 0.000 ***
ljung box (residuals at seasonal lags) 0.199
ljung box (squared residuals) 0.802
qs test on sa 0.909
qs test on i 0.746
f-test on sa (seasonal dummies) 0.974
f-test on i (seasonal dummies) 0.947
Residual seasonality (entire series) 0.932
Residual seasonality (last 3 years) 0.940
f-test on sa (td) 0.985
f-test on i (td) 0.983
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1

TRAMO-SEATS model

Some others graphics can also be added with the ggdemetra package, for example to add the seasonally adjusted series and its forecasts:

library(ggdemetra)
ggplot(data = ipi_c_eu_df, mapping = aes(x = date, y = FR)) +
    geom_line() +
    labs(title = NULL,
         x = NULL, y = NULL) +
    geom_sa(component = "y_f", linetype = 2,
            frequency = 12, method = "tramoseats") + 
    geom_sa(component = "sa", color = "red") +
    geom_sa(component = "sa_f", color = "red", linetype = 2)
Seasonal adjustment of the French industrial production index

Seasonal adjustment of the French industrial production index

print_preprocessing(sa_ts)

Pre-processing (Tramo)

Summary

360 observations

Series has been log-transformed

Trading days effect (2 variables)

Easter [6] detected

2 detected outliers

Likelihood statistics

Number of effective observations = 347

Number of estimated parameters = 9

Loglikelihood = 831.828, AICc = 1560.412, BICc = -7.523

Standard error of the regression (ML estimate) = 0.022

ARIMA model

ARIMA coefficients
Coefficients Std. Error T-stat P (> | t|)
Phi(1) 0.386 0.053 7.287 0.000 ***
Phi(2) 0.243 0.053 4.579 0.000 ***
BTheta(1) -0.713 0.040 -17.672 0.000 ***
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1
ARIMA (2,1,0)(0,1,1)

Regression model

Regression coefficients
Coefficients Std. Error T-stat P (> | t|)
Week days 0.007 0.000 23.891 0.000 ***
Leap year 0.022 0.007 3.238 0.001 **
Easter [6] -0.021 0.004 -5.118 0.000 ***
AO (5-2011) 0.129 0.017 7.640 0.000 ***
AO (5-2000) 0.058 0.017 3.409 0.001 ***
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1
print_decomposition(sa_ts, caption = NULL)

Decomposition (SEATS)

Mode: multiplicative

S-I Ratio

S-I Ratio

Model

AR: 1 + 0.386B + 0.243B2

D: 1 − B − B12 + B13

MA: 1 − 0.713B12

SA

AR: 1 + 0.386B + 0.243B2

D: 1 − 2.000B + B2

MA: 1 − 0.975B + 0.004B2 − 0.003B3 + 0.002B4

Innovation variance: 0.747

Trend

D: 1 − 2.000B + B2

MA: 1 + 0.028B − 0.972B2

Innovation variance: 0.070

Seasonal

D: 1 + B + B2 + B3 + B4 + B5 + B6 + B7 + B8 + B9 + B10 + B11

MA: 1 + 1.353B + 1.194B2 + 1.260B3 + 1.124B4 + 0.886B5 + 0.683B6 + 0.440B7 + 0.272B8 + 0.020B9 − 0.055B10 − 0.222B11

Innovation variance: 0.030

Transitory

AR: 1 + 0.386B + 0.243B2

MA: 1 − 0.316B − 0.684B2

Innovation variance: 0.052

Irregular

Innovation variance: 0.222

Relative contribution of the components to the stationary portion of the variance in the original series, after the removal of the long term trend
Component
Cycle 5.694
Seasonal 88.840
Irregular 0.820
TD & Hol. 3.412
Others 0.469
Total 99.234
print_diagnostics(sa_ts)
Diagnostics tests
P (> | t|)
mean 0.933
skewness 0.323
kurtosis 0.237
ljung box 0.001 ***
ljung box (residuals at seasonal lags) 0.197
ljung box (squared residuals) 0.002 **
qs test on sa 1.000
qs test on i 1.000
f-test on sa (seasonal dummies) 1.000
f-test on i (seasonal dummies) 1.000
Residual seasonality (entire series) 1.000
Residual seasonality (last 3 years) 0.984
f-test on sa (td) 0.135
f-test on i (td) 0.256
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ’ ’ 1

Directly create a R Markdown file

A R Markdown can also directly be created and render with the create_rmd function. It can take as argument a SA, jSA, sa_item, multiprocessing (all the models of the multiprocessing are printed) or workspace object (all the models of all the multiprocessing of the workspace are printed).

The print of the pre-processing, decomposition and diagnostics can also be customized with preprocessing_fun, decomposition_fun and diagnostics_fun arguments. For example, to reproduce the example of the previous section:

preprocessing_customized <- function(x){
  library(ggdemetra)
  y <- get_ts(x)
  data_plot <- data.frame(date = time(y), y = y)
  p <- ggplot(data = data_plot, mapping = aes(x = date, y = y)) +
    geom_line() +
    labs(title = NULL,
         x = NULL, y = NULL) +
    geom_sa(component = "y_f", linetype = 2,
            frequency = 12, method = "tramoseats") +
    geom_sa(component = "sa", color = "red") +
    geom_sa(component = "sa_f", color = "red", linetype = 2)
  plot(p)
  cat("\n\n")
  print_preprocessing(sa_ts)
}
decomposition_customized <- function(x){
  print_decomposition(x, caption = NULL)
}

output_file <- tempfile(fileext = ".Rmd")

create_rmd(sa_ts, output_file, output_format = "pdf_document",
           preprocessing_fun = preprocessing_customized,
           decomposition_fun = decomposition_customized,
           knitr_chunk_opts = list(
             fig.pos = "h", results = "asis", 
             fig.cap =c("Seasonal adjustment of the French industrial production index",
                        "S-I Ratio"),
             warning = FALSE, message = FALSE, echo = FALSE)
           )
# To open the file:
browseURL(sub(".Rmd",".pdf", output_file, fixed= TRUE))

Several models can also be printed creating a workspace:

wk <- new_workspace()
new_multiprocessing(wk, "sa1")
add_sa_item(wk, "sa1", sa_x13, "X13")
add_sa_item(wk, "sa1", sa_ts, "TramoSeats")
# It's important to compute the workspace to be able to import the models
compute(wk)

output_file <- tempfile(fileext = ".Rmd")
create_rmd(wk, output_file, output_format = "pdf_document",
           output_options = list(toc = TRUE,
                                 number_sections = TRUE))
# To open the file:
browseURL(sub(".Rmd",".pdf", output_file, fixed= TRUE))

Reproductibility

For PDF outputs, the following package must be used.

header-includes:
   - \usepackage{booktabs}
   - \usepackage{float}
   - \usepackage{array}
   - \usepackage{multirow}
   - \floatplacement{figure}{H}

To produce this document, the knitr options were set as followed:

knitr::opts_chunk$set(collapse = TRUE,
  comment = "#>", fig.pos = "h",
  warning = FALSE, message = FALSE
)

And the options results='asis', fig.cap = "S-I Ratio" were used in the chunks.