Cette fonction est utilisée à l'interne par tsraking()
pour construire les éléments du problème de ratissage. Elle peut
également être utile pour dériver manuellement (en dehors du contexte de tsraking()
) les totaux (de marge) transversaux
du problème de ratissage.
Utilisation
build_raking_problem(
data_df,
metadata_df,
data_df_name = deparse1(substitute(data_df)),
metadata_df_name = deparse1(substitute(metadata_df)),
alterability_df = NULL,
alterSeries = 1,
alterTotal1 = 0,
alterTotal2 = 0
)
Arguments
- data_df
(obligatoire)
Data frame (object de classe « data.frame ») qui contient les données des séries chronologiques à réconcilier. Il doit au minimum contenir des variables correspondant aux séries composantes et aux totaux de contrôle transversaux spécifiés dans le data frame des métadonnées de ratissage (argument
metadata_df
). Si plus d'un enregistrement (plus d'une période) est fournie, la somme des valeurs des séries composantes fournies sera également préservée à travers des contraintes temporelles implicites.- metadata_df
(obligatoire)
Data frame (object de classe « data.frame ») qui décrit les contraintes d'agrégation transversales (règles d'additivité) pour le problème de ratissage (« raking »). Deux variables de type caractère doivent être incluses dans le data frame :
series
ettotal1
. Deux variables sont optionnelles :total2
(caractère) etalterAnnual
(numérique). Les valeurs de la variableseries
représentent les noms des variables des séries composantes dans le data frame des données d'entrée (argumentdata_df
). De même, les valeurs des variablestotal1
ettotal2
représentent les noms des variables des totaux de contrôle transversaux de 1ère et 2ème dimension dans le data frame des données d'entrée. La variablealterAnnual
contient le coefficient d'altérabilité pour la contrainte temporelle associée à chaque série composante. Lorsqu'elle est spécifiée, cette dernière remplace le coefficient d'altérabilité par défaut spécifié avec l'argumentalterAnnual
.- data_df_name
(optionnel)
Chaîne de caractères contenant la valeur de l'argument
data_df
.La valeur par défaut est
data_df_name = deparse1(substitute(data_df))
.- metadata_df_name
(optionnel)
Chaîne de caractères contenant la valeur de l'argument
metadata_df
.La valeur par défaut est
data_df_name = deparse1(substitute(metadata_df))
.- alterability_df
(optionnel)
Data frame (object de classe « data.frame »), ou
NULL
, qui contient les variables de coefficients d'altérabilité. Elles doivent correspondre à une série composante ou à un total de contrôle transversal, c'est-à-dire qu'une variable portant le même nom doit exister dans le data frame des données d'entrée (argumentdata_df
). Les valeurs de ces coefficients d'altérabilité remplaceront les coefficients d'altérabilité par défaut spécifiés avec les argumentsalterSeries
,alterTotal1
etalterTotal2
. Lorsque le data frame des données d'entrée contient plusieurs enregistrements et que le data frame des coefficients d'altérabilité n'en contient qu'un seul, les coefficients d'altérabilité sont utilisés (répétés) pour tous les enregistrements du data frame des données d'entrée. Le data frame des coefficients d'altérabilité peut également contenir autant d'enregistrements que le data frame des données d'entrée.La valeur par défaut est
alterability_df = NULL
(coefficients d'altérabilité par défaut).- alterSeries
(optionnel)
Nombre réel non négatif spécifiant le coefficient d'altérabilité par défaut pour les valeurs des séries composantes. Il s'appliquera aux séries composantes pour lesquelles des coefficients d'altérabilité n'ont pas déjà été spécifiés dans le data frame des coefficients d'altérabilité (argument
alterability_df
).La valeur par défaut est
alterSeries = 1.0
(valeurs des séries composantes non contraignantes).- alterTotal1
(optionnel)
Nombre réel non négatif spécifiant le coefficient d'altérabilité par défaut pour les totaux de contrôle transversaux de la 1ère dimension. Il s'appliquera aux totaux de contrôle transversaux pour lesquels des coefficients d'altérabilité n'ont pas déjà été spécifiés dans le data frame des coefficients d'altérabilité (argument
alterability_df
).La valeur par défaut est
alterTotal1 = 0.0
(totaux de contrôle transversaux de 1ère dimension contraignants).- alterTotal2
(optionnel)
Nombre réel non négatif spécifiant le coefficient d'altérabilité par défaut pour les totaux de contrôle transversaux de la 2ème dimension. Il s'appliquera aux totaux de contrôle transversaux pour lesquels des coefficients d'altérabilité n'ont pas déjà été spécifiés dans le data frame des coefficients d'altérabilité (argument
alterability_df
).La valeur par défaut est
alterTotal2 = 0.0
(totaux de contrôle transversaux de 2ème dimension contraignants).
Valeur de retour
Une liste avec les éléments du problème de ratissage (excluant les totaux temporels implicites) :
x
: vecteur des valeurs initiales des séries composantesc_x
: vecteur des coefficients d'altérabilité des séries composantescomp_cols
: vecteur des noms des séries composantes (colonnes dedata_df
)g
: vecteur des valeurs initiales des totaux transversauxc_g
: vecteur des coefficients d'altérabilité des totaux transversauxtot_cols
: vecteur des noms des totaux transversaux (colonnes dedata_df
)G
: matrice d'agrégation des totaux transversaux (g = G %*% x
)
Détails
Voir tsraking()
pour une description détaillée des problèmes de ratissage de séries chronologiques.
Les éléments du problème de ratissage renvoyés n'incluent pas les totaux temporels implicites des séries de
composantes, le cas échéant (c.-à-d., les éléments g
et G
ne contiennent que l'information sur les totaux
transversaux).
Lorsque les données d'entrée contiennent plusieurs périodes (scénario de préservation des totaux temporels),
les éléments x
, c_x
, g
, c_g
et G
du problème de ratissage sont construits colonne par colonne
(selon le principe « column-major order » en anglais), ce qui correspond au comportement par défaut de R lors
de la conversion d'objets de la classe « matrix » en vecteurs.
Note : la validation des arguments n'est pas effectuée ici ; on suppose (carrément) que la fonction est
appelée par tsraking()
où une validation complète des arguments est effectuée.
Exemples
# Dériver les 5 totaux de marge d'un cube de données à deux dimensions 2 x 3
# en utilisant les métadonnées de `tsraking()`.
mes_meta <- data.frame(series = c("A1", "A2", "A3",
"B1", "B2", "B3"),
total1 = c(rep("totA", 3),
rep("totB", 3)),
total2 = rep(c("tot1", "tot2", "tot3"), 2))
mes_meta
#> series total1 total2
#> 1 A1 totA tot1
#> 2 A2 totA tot2
#> 3 A3 totA tot3
#> 4 B1 totB tot1
#> 5 B2 totB tot2
#> 6 B3 totB tot3
# 6 périodes de données avec totaux de marge initialisés à `NA` (ces derniers doivent
# OBLIGATOIREMENT exister dans les données d'entrée mais peuvent être `NA`).
mes_series <- data.frame(A1 = c(12, 10, 12, 9, 15, 7),
B1 = c(20, 21, 15, 17, 19, 18),
A2 = c(14, 9, 8, 9, 11, 10),
B2 = c(20, 29, 20, 24, 21, 17),
A3 = c(13, 15, 17, 14, 16, 12),
B3 = c(24, 20, 30, 23, 21, 19),
tot1 = rep(NA, 6),
tot2 = rep(NA, 6),
tot3 = rep(NA, 6),
totA = rep(NA, 6),
totB = rep(NA, 6))
# Obtenir les éléments du problème de ratissage.
p <- build_raking_problem(mes_series, mes_meta)
str(p)
#> List of 7
#> $ x : num [1:36] 12 10 12 9 15 7 14 9 8 9 ...
#> $ c_x : num [1:36] 1 1 1 1 1 1 1 1 1 1 ...
#> $ comp_cols: chr [1:6] "A1" "A2" "A3" "B1" ...
#> $ g : logi [1:30] NA NA NA NA NA NA ...
#> $ c_g : num [1:30] 0 0 0 0 0 0 0 0 0 0 ...
#> $ tot_cols : chr [1:5] "totA" "totB" "tot1" "tot2" ...
#> $ G : num [1:30, 1:36] 1 0 0 0 0 0 0 0 0 0 ...
# Calculer les 5 totaux de marge pour les 6 périodes.
mes_series[p$tot_cols] <- p$G %*% p$x
mes_series
#> A1 B1 A2 B2 A3 B3 tot1 tot2 tot3 totA totB
#> 1 12 20 14 20 13 24 32 34 37 39 64
#> 2 10 21 9 29 15 20 31 38 35 34 70
#> 3 12 15 8 20 17 30 27 28 47 37 65
#> 4 9 17 9 24 14 23 26 33 37 32 64
#> 5 15 19 11 21 16 21 34 32 37 42 61
#> 6 7 18 10 17 12 19 25 27 31 29 54