# 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))
}
}
}
# Pour la création des regresseurs, voir le TP R associé.
# Par exemple :
library(rjd3modelling)
<- calendar.new()
frenchCalendar calendar.holiday(frenchCalendar, "NEWYEAR")
calendar.holiday(frenchCalendar, "EASTERMONDAY") # Lundi de Pâques
calendar.holiday(frenchCalendar, "MAYDAY") # 1er mai
calendar.fixedday(frenchCalendar, 5, 8)
calendar.holiday(frenchCalendar, "WHITMONDAY") # Lundi de Pentecôte
calendar.fixedday(frenchCalendar, 7, 14)
calendar.holiday(frenchCalendar, "ASSUMPTION") # Assomption
calendar.holiday(frenchCalendar, "ALLSAINTDAY") # Toussaint
calendar.holiday(frenchCalendar, "ARMISTICE")
<- function(start = 1990, end = 2030, frequency = 12){
leap_year <- ts(0, start = start, end = end, frequency = 12)
ly <- cycle(ly) == 2
mois_feb <- trunc(round(time(ly), 3)) # arrondi car parfois des pbs avec fonction time
annees # On utilise la définition exacte
<- (annees %% 400 == 0) |
is_ly %% 4 == 0) & (annees %% 100 != 0))
((annees <- 28 - 28.2425
ly[mois_feb] & is_ly] <- 29 - 28.2425
ly[mois_feb # on change si besoin la fréquence
::aggregate(ly, nfrequency = frequency)
stats
}<- 12
frequency <- c(1990,1)
start = c(2030, 1)
end = (end[1] - start[1]) * 12 + end[2] - start[2]
length
<- leap_year(frequency = frequency, start = start,
ly end = end)
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg6 groups = c(1, 2, 3, 4, 5, 6, 0))
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg5 groups = c(1, 2, 3, 4, 5, 0, 0))
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg4 groups = c(1, 2, 2, 2, 3, 4, 0))
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg3 groups = c(1, 2, 2, 2, 2, 0, 0))
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg2 groups = c(1, 1, 1, 1, 1, 2, 0))
<- htd(frenchCalendar, frequency = frequency, start = start, length = length,
reg1 groups = c(1, 1, 1, 1, 1, 0, 0))
<- ts(cbind(reg1, reg2, reg3, reg4, reg5, reg6),
regresseurs_JO start = start, frequency = frequency)
<- ts.union(regresseurs_JO,
regresseurs_JO
ly)colnames(regresseurs_JO) <- c("REG1_semaine",
sprintf("REG2_%s", c("lundi_a_vendredi", "samedi")),
sprintf("REG3_%s", c("lundi", "mardi_a_vendredi")),
sprintf("REG4_%s", c("lundi", "mardi_a_jeudi", "vendredi", "samedi")),
sprintf("REG5_%s", c("lundi", "mardi", "mercredi", "jeudi", "vendredi")),
sprintf("REG6_%s", c("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi")),
"leap_year")
# Création d'un nouveaux
<- new_workspace()
wk # 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, wk)
save_workspace(wk,"my workspace.xml")
4 - Désaisonnalisation avec correction des jours ouvrables
Formation - Désaisonnalisation avec JDemetra+ et RJDemetra
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.xls » contenant les régresseurs « Jours Ouvrables » créés depuis R à partir de l’objet
regresseurs_JO
.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 ! Ci-dessous un code pour vous éviter de faire ce travail (un peu compliqué mais une fois le code écrit, vous pouvez l’utiliser tel quel !).
Créer une spécification incluant les jeux de régresseurs « jours ouvrables » Insee
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 option- Que 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 REG6 + leap_year de la gauche vers la droite
Cliquer sur le bouton
Done
Cliquer sur
OK
Réaliser une désaisonnalisation automatique de vos séries en utilisant la spécification X13Spec-1
Voir exercice 1.
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 ?