library(rjd3toolkit)
<- national_calendar(list(
FR special_day("NEWYEAR"),
special_day("EASTERMONDAY"), # Lundi de Pâques
special_day("MAYDAY"), # 1er mai
special_day("ASCENSION"), # Jour de l'Ascension
fixed_day(5, 8),
special_day("WHITMONDAY"), # Lundi de Pentecôte
fixed_day(7, 14),
special_day("ASSUMPTION"), # Assomption
special_day("ALLSAINTSDAY"), # Toussaint
special_day("ARMISTICE")
))
<- function(cal, frequency, start = c(1990, 1), end = c(2030, 1)) {
gen_calendrier = (end[1] - start[1]) * frequency + end[2] - start[2]
length <- rjd3toolkit::lp_variable(frequency = frequency, start = start,
ly length = length)
# N'hésitez pas à ajouter les votre !
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD7 groups = c(1, 2, 3, 4, 5, 6, 0))
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD4 groups = c(1, 1, 1, 1, 2, 3, 0))
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD3 groups = c(1, 1, 1, 1, 1, 2, 0))
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD3c groups = c(1, 1, 1, 1, 2, 2, 0))
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD2 groups = c(1, 1, 1, 1, 1, 0, 0))
<- calendar_td(cal, frequency = frequency, start = start, length = length,
TD2c groups = c(1, 1, 1, 1, 1, 1, 0))
<- ts(cbind(TD2, TD2c, TD3, TD3c, TD4, TD7),
reg_jo start = start, frequency = frequency)
<- ts.intersect(reg_jo,
reg_jo
ly)colnames(reg_jo) <- c(
"TD2_semaine",
"TD2c_lundi_samedi",
sprintf("TD3_%s", c("semaine", "samedi")),
sprintf("TD3c_%s", c("lundi_jeudi", "vendredi_samedi")),
sprintf("TD4_%s", c("lundi_jeudi", "vendredi", "samedi")),
sprintf("TD7_%s", c("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi")),
"leap_year")
reg_jo
}<- gen_calendrier(FR, frequency = 4)
regresseurs_JO_trim <- gen_calendrier(FR, frequency = 12)
regresseurs_JO_mens
colnames(regresseurs_JO_trim) <- paste0(colnames(regresseurs_JO_trim), "_trim")
colnames(regresseurs_JO_mens) <- paste0(colnames(regresseurs_JO_mens), "_mens")
4 - Désaisonnalisation avec correction des jours ouvrables
Désaisonnaliser une série temporelle
1 Importer les jeux de régresseurs « Jours Ouvrables » sous JDemetra+
Cliquer sur l’onglet
Providers
Clic-droit sur
Spreadsheets
Cliquer sur
Open
Cliquer sur le bouton
…
Sélectionner le fichier Excel « regcjo.xlsx » contenant les régresseurs « Jours Ouvrables ».
Cliquer sur
OK
Cliquer sur l’onglet
Workspace
Cliquer sur le
+
à côté d’Utilities
Clic-droit sur
Variables
Cliquer sur
New
Cliquer sur le
+
à côté deVariables
Double cliquer sur l’icône
Vars-1
Que se passe-t-il ?
Retourner dans l’onglet
Providers
Faire glisser l’ensemble des séries du fichier « regcjo.xls » dans l’onglet
Vars-1
Renommer les séries en reprenant leur nom d’origine dans le fichier excel « regcjo.xls ».
Ce travail peut être très fastidieux… Heureusement depuis R il existe une solution plus automatique !
Il existe deux façons de faire, en fonction de si l’on utilise une version 2.x.y ou 3.x.y de JDemetra+. Repartons déjà des régresseurs jours ouvrables (pour leur création, voir le TP R associé) :
1.1 JDemetra+ 2.x.y
Ci-dessous un code pour vous éviter de faire le travail manuel. Il est un peu peu compliqué mais une fois le code écrit, vous pouvez l’utiliser tel quel ! Vous pourrez ensuite repartir du workspace créé pour y ajouter vos propres séries.
# On va créer un nouveau workspace où l'on va ajouter les nouvelles variables
library(RJDemetra)
library(rJava)
<- function(liste_var, workspace){
complete_variables if(!is.mts(liste_var))
stop("liste_var doit être de type mts")
<- .jcall(workspace,"Lec/tstoolkit/algorithm/ProcessingContext;", "getContext")
context_dictionary <- context_dictionary$getTsVariableManagers()
ts_variable_managers <- .jnew("ec/tstoolkit/timeseries/regression/TsVariables")
ts_variables <- ts_variable_managers$get("r")
jd_r_variables if (is.null(jd_r_variables)) {
$set("r",
ts_variable_managers.jnew("ec/tstoolkit/timeseries/regression/TsVariables"))
<- ts_variable_managers$get("r")
jd_r_variables
}<- jd_r_variables$getNames()
jd_var_names
<- colnames(liste_var)
model_var_names
for (i in seq_along(model_var_names)) {
<- model_var_names[i]
name <- jd_r_variables$get(name)
dictionary_var <- .jnew("ec/tstoolkit/timeseries/regression/TsVariable",
tsvar :::ts_r2jd(liste_var[, i]))
name, RJDemetraif (is.null(dictionary_var)) {
$set(name, tsvar)
jd_r_variableselse {
} warning(sprintf("La variable %s existe déjà", name))
}
}
}
# Création d'un nouveaux
<- new_workspace()
jws # regresseurs_JO est l'objet mts qui contient tous vos régresseurs
# Il doit donc déjà être créé (voir code ci-dessus) !
complete_variables(regresseurs_JO_mens, jws)
complete_variables(regresseurs_JO_trim, jws)
save_workspace(jws,"workspace_CJO.xml")
1.2 JDemetra+ 3.x.y
Pour la version 3 de JDemetra+, le code est plus simple. Vous pouvez également ajouter les calendriers
# On va créer deux groupes de variables, on peut donc simplifier les noms
colnames(regresseurs_JO_mens) <-
colnames(regresseurs_JO_trim) <-
gsub("_mens", "", colnames(regresseurs_JO_mens))
<- rjd3toolkit::modelling_context(
ctxt # on appelle "FR" le calendrier
calendars = list(FR = FR),
# on crée un groupe de variables "cjo_mens" contenant les régresseurs mensuels
# et un groupe de variables "cjo_trim" contenant les régresseurs trimestriels
variables = list(cjo_mens = regresseurs_JO_mens,
cjo_trim = regresseurs_JO_trim)
)
<- rjdemetra3::.jws_new(ctxt)
jws # On peut également ajouter les calendriers et les variables avec les fonctions :
# rjdemetra3:::add_variable()
# rjdemetra3:::add_calendar()
::save_workspace(jws, "workspace_CJO_v3.xml") rjdemetra3
2 Créer une spécification incluant les jeux de régresseurs « jours ouvrables » personnalisés
Cliquer sur l’onglet
Workspace
Double cliquer sur
Seasonal adjustment
Double cliquer sur
specifications
Double cliquer sur
x13
Clic-droit sur
RSA5c
Cliquer sur
Clone
Que se passe-t-il ?
Double-cliquer sur
X13Spec-1
Cliquer sur le
+
à côté deCalendar
Cliquer sur le
+
à côté detradingDays
Cliquer sur
Default
à côté de optionQue se passe-t-il ?.
Cliquer sur
UserDefined
Cliquer sur
Unused
à côté deuserVariables
Que se passe-t-il ?
Faire passer les 6 régresseurs du jeu de régresseurs TD6 + leap_year de la gauche vers la droite
Cliquer sur le bouton
Done
Cliquer sur
OK
3 Réaliser une désaisonnalisation automatique de vos séries en utilisant la spécification X13Spec-1
Voir TP1.
4 Analyser les diagnostics relatifs à la correction des effets de calendrier
Pour chaque série, répondez aux questions suivantes :
Y a-t-il eu une correction des effets de calendrier ?
Si oui, est-ce que tous les coefficients associés aux régresseurs « JO » sont significativement différents de 0 ?
Si non, essayer d’autres jeux de régresseurs « JO »
Y a-t-il eu une correction de l’effet Pâques ?
La série CVS-CJO présente-t-elle des effets « Jours Ouvrables » résiduels ?