10  Présentation des outils

10.1 Tau-argus

10.1.1 Présentation générale

Tau-Argus est la logiciel de référence en Europe en termes de pose de secret. Il permet de calculer le secret primaire et secondaire ou de faire des arrondis contrôlés. Le développement, la maintenance et le support de Tau-Argus sont réalisés par un groupe d’experts européens et est coordonné par CBS (l’institut national de statistiques des Pays-Bas). C’est un logiciel libre et open source (https://github.com/sdcTools/tauargus) utilisable via une interface graphique.

10.1.2 Les différents algorithmes du secret secondaire

Plusieurs algorithmes sont implémentes dans Tau-Argus pour gérer le secret secondaire. La méthode Hypercube permet un traitement séquentiel des cases sous secret primaire, en minimisant le coût. Dans le cas d’une hiérarchie, elle traite les sous-tableaux indépendamment. Il s’agit d’une méthode heuristique et rapide. Elle a l’avantage de proposer un masque rapidement mais celui-ci n’est pas le plus optimal. La méthode Optimal met en place une minimisation globale du coût et respecte les intervalles de protection. C’est une méthode souvent très lente. Enfin, la méthode Modular éclate le problème en différents sous-tableaux sur lesquels elle applique la méthode Optimal. La méthode est plus efficace avec des variables hiérarchiques car elle se base sur celle-ci pour créer les sous-tableaux. C’est une méthode assez rapide que l’on utilise dans la plupart des cas.

10.1.3 Avantages et inconvénients

Tau-Argus comporte de nombreux avantages, il s’agit d’un outil qui fait référence, performant sur la partie pose de secret et il est maintenu régulièrement. Cependant, il a des limites. En effet, l’interface est assez fouillis, il renvoie des bugs et des erreurs pas toujours facile à comprendre et corriger, enfin la reproductibilité des opérations est limitée.

10.2 Package rtauargus

Bien que l’usage standard de Tau-Argus se fasse par une interface graphique, la prise en main n’est pas aisée. Ainsi, un package R a été développé à l’Insee pour travailler avec Tau-Argus depuis R : rtauargus. Il permet de bénéficier des avantages de Tau-Argus tout en limitant les inconvénients.

10.2.1 Objectifs

Le but de ce package est de faciliter la prise en main de Tau-Argus. Ainsi, il permet de poser le secret secondaire avec Tau-Argus sans l’ouvrir et gérer de grosses demandes.

10.2.2 Principales fonctionnalités

Le package a deux fonctionnalités principales : il permet de poser le secret directement sur les tableaux ou à partir des microdonnées. Le fonctionnement général du package est le suivant : création de l’ensemble des fichiers dans les formats attendus par Tau-Argus, lancement de Tau-Argus puis récupération des résultats dans R.

La démarche utilisée à la DMRG consiste à poser le secret primaire “manuellement”, c’est-à-dire sans faire appel à Tau-Argus et d’ensuite poser le secret secondaire à l’aide de la fonction tab_rtauargus() pour protéger un seul tableau et tab_multi_manager() pour protéger plusieurs tableaux.

10.2.3 Où trouver la documentation ?

Le documentation est disponible en ligne : https://inseefrlab.github.io/rtauargus/

10.3 Les limites de Tau-Argus

10.3.1 Le nombre de variables de ventilation

Actuellement \(\tau\)-Argus tolère au maximum 4 variables de ventilation par tableau. Cependant, pour 4 variables de ventilation un warning apparaît, \(\tau\)-Argus ne garantit pas une protection totale de la table. Effectuer un contrôle de cohérence sur le secret pour un tableau avec 4 dimensions est très complexe.

Pour pallier cette limitation, le package rtauargus permet de transformer des tableaux de 4 ou 5 dimensions en tableaux de 3 dimensions. Pour cela, il suffit de renseigner l’argument split_tab = TRUE lors de l’appel de tab_multi_manager() ou tab_rtauargus()

dtMasque <- tab_rtauargus(tabular = dtTableau
              , explanatory_vars = c("NAF", "GEO", "CJ", "TREFF", "TRAGE")
              , files_name = "tableauSecretise"
              , dir_name = "c:/"
              , totcode = c("Total", "Total", "Total", "Total", "Total")
              , secret_var = "is_secret_prim"
              , value = "VALUE"
              , freq = "FREQ"
              , maxscore = "MAX"
              , split_tab = TRUE)

Pour aller plus loin, vous trouverez une vignette très complète sur le sujet dans le package rtauargus. (rtauargus/doc/split_tab_fr.html)

10.3.2 Les valeurs trop élevées

\(\tau\)-Argus ne parvient pas à traiter un tableau s’il rencontre une cellule d’une valeur trop élevée.Dans le cas où une celulle du tableau viendrait à dépasser \(10^{12}\), un message d’erreur apparaîtra lors de la pose du secret secondaire. Afin d’éviter ce genre de problème, il est conseillé de regarder si le plus gros total du tableau dépasse \(10^{12}\), le cas échéant nous recommandons de diviser la valeur de votre tableau par une puissance de 10 adéquate. Cependant cela implique de faire attention à plusieurs choses :

  • Traiter le secret primaire dans le fichier d’apriori avant d’arrondir les valeurs.
  • S’assurer qu’aucune valeur n’est arrondie à 0, elle ne serait alors plus prise en compte lors du traitement du secret secondaire, dans ce cas il faut forcer un arrondi à 1 minimum.
  • Si la valeur du plus gros contributeur est encore présente dans la table, l’arrondir avec le même ordre de grandeur que la variable de réponse.

A ce jour, aucune limite n’a été constatée en terme de nombre de décimales, la piste reste à explorer. Mais nous recommandons tout de même d’arrondir les valeurs. Dans tous les cas les arrondis n’impacteront que très peu la pose du secret.

10.3.3 Les limites du fichier hiérarchique

10.3.3.1 Le nombre de caractère des feuilles

Au sein d’un fichier .hrc, \(\tau\)-Argus a besoin qu’au niveau hiérarchique le plus fin les feuilles aient le même nombre de caractères. Par exemple la hiérarchie suivante renverra un message d’erreur :

A
@A01
@A02
@A3

La fonction write_hrc2() permet d’ajouter des * dans la hiérarchie et les modalités du tableau afin d’éviter ce genre d’erreurs. Afin que ce soit le plus robuste possible cette transformation est appliquée à tous les niveaux hiérarchiques. Pour l’exemple précédent on obtiendra alors la hiérarchie :

***A
@A01
@A02
@*A3

10.3.3.2 Les feuilles uniques

NIVEAU EXPERT

Lors de la reconstitution des totaux de la table par \(\tau\)-Argus, on obtient une erreur si la hiérarchie contient ce qu’on va appeler une “feuille unique”. Par exemple dans la hiérarchie :

A
@A1
@@A11
@@A12

A1 sera ce qu’on appelle une feuille unique, c’est le seul sous-niveau de A. Ce problème n’est présent que lorsqu’on traite des données tabulées, la solution que nous utilisons actuellement est de créer une feuille fictive dans la hiérarchie. La gestion de ce cas-là est intégrée automatiquement dans le package, c’est pourquoi vous trouverez des fichiers suffixés unif ce sont les fichiers hrc renseignées par l’utilisateur sont modifiés pour traiter cela. La nouvelle hiérarchie sera la suivante :

A
@AX
@A1
@@A11
@@A12

Il n’y a pas besoin de modifier le tableau l’agrégat AX vaudra 0 et le traitement de la table s’effectuera correctement.

10.3.4 Le nombre de modalités

Dans \(\tau\)-Argus, le nombre de modalités au sein d’un même niveau hiérarchique est limité.

10.3.4.1 Variable non hiérarhcique

Pour une variable non hiérarchique \(\tau\)-Argus ne peut pas traiter plus de 199 modalités (200 en comptabilisant le Total). Par exemple, un tableau au niveau communal avec donc 35 000 communes ne pourra pas être traité directement via \(\tau\)-Argus. Les solutions que nous conseillons actuellement sont :

  • De découper le tableau en divers sous-tableau afin de respecter ce nombre de modalités maximum.
  • D’insérer une variables hiérarchique qui permettra de respecter les critères décrits ci-dessous. Cela implique de traiter les nouveaux niveaux hiérarchiques comme des variables non diffusées.

10.3.4.2 Variable hiérarchique

Pour une variable hiérarchique il faut qu’il y ait moins de 200 modalités par niveau de la hiérarchie. Considérons la hiérarchie Région > Département > Commune, pour que \(\tau\)-Argus puisse poser le secret secondaire :

  • Il faut moins de 200 régions.
  • Dans une région donnée, il faut moins de 200 départements.
  • Dans un département donné, il faut moins de 200 communes.

Cependant, les zonages géographiques français ne respectent pas ces limites.

Dans notre exemple, dans chaque département il y a plus de 200 communes, le traitement hiérarchique tel quel est donc impossible. Une solution envisageable serait de rajouter un niveau hiérarchique en plus afin de réduire le nombre de commune sau même niveau. On peut penser ici par exemple aux cantons puisque qu’un département contient au maximum 43 cantons et un canton contient au maximum 135 communes. On pourrait alors traiter le hiérarchie Région > Département > Canton > Commune. Les cellules concernant les cantons devront être traitées comme des cellules non diffusées et donc être prioritaires au niveau du secret secondaire. C’est-à-dire qu’à choisir on indiquera au programme de secrétiser plutôt un canton que tout autre zonage géographique

10.3.5 Les algorithmes de secret secondaire

Dans certains cas assez particuliers, il se peut qu’un algorithme de secret secondaire ne puisse pas trouver de solution au problème en entrée. Étant donné que nous recommandons d’utiliser Modular en priorité, si jamais l’algorithme ne parvient pas à trouver de solution il faut alors tester Optimal puis HyperCube. Si aucun de ces trois algorithmes ne parvient à trouver de solution, cela vient généralement d’une grande table qui contient énormément de secret primaire. Dans ce cas nous recommandons de reconsidérer le problème. Cela vaut-il vraiment la peine de diffuser une table à un niveau aussi fin avec autant de secret primaire ? Il est peut être préférable d’agréger les données afin d’avoir moins de secret primaire.

10.4 Les codes d’erreur dans Tau-Argus

Cette partie n’est pas exhaustive mais recense les codes d’erreurs que nous avons rencontré en utilisant Tau-Argus.

Les différentes causes possibles du message “code not in codelist” sont les suivantes :

  • Une modalité d’une variable hiérarchique est présente dans la table mais pas dans le fichier hiérarchique associé
  • Les noms de colonnes spécifiés pour le paramètre specify_tables de la fonction tab_arb() ne sont pas dans le même ordre que dans le tableau

Le message d’erreur “illegal status in transition” est lié à l’apriori. Voici les différentes causes possibles :

  • Une cellule possède deux status contradictoires dans le fichier d’apriori (ex : A01,s et A01,u). La cellule ne pouvant pas avoir deux status à la fois, Tau-Argus ne peut pas comprendre le statut de la cellule
  • Une cellule avec une valeur nulle et un effectif nul est renseignée comme unsafe (u)

Les différentes causes possibles du message d’erreur “error making totals” sont :

  • On a écrit dans le batch et donc les totaux dans le tableau ne sont pas égaux à la somme des éléments qui le composent, autrement dit la table n’est pas additive
  • On écrit dans le batch 1 et donc Tau-Argus reconstitue lui-même les totaux. Cela vient généralement du problème des feuilles uniques décrit dans la partie précédente.

Le message d’erreur “HiTaS: couldn’t load JJ-routines” est spécifique à l’aglorithme Modular, en voici les différentes causes possibles :

  • La taille maximale pour un nombre à été dépassée (voir section 10.3.2)
  • Le problème paraît insoluble pour Modular (voir sections 10.3.4 et 10.3.5)
  • N.B : parfois “couldn’t load JJ-routines” (sans HiTaS devant) renvoie à un problème lié à la hiérarchie (sans doute impossibilité de reconstituter la hiérarhcie à partir des données en entrée)

Le message d’erreur “no optimal solution found JJ not loaded” est spécifique à l’aglorithme Optimal, en voici les différentes causes possibles :

  • La taille maximale pour un nombre à été dépassée (voir section 10.3.2)
  • Le problème paraît insoluble pour Optimal (voir sections 10.3.4 et 10.3.5)

Le message d’erreur “the hypercube could not be applied See file PROTO002” est spécifique à l’aglorithme HyperCube, en voici les différentes causes possibles :

  • La taille maximale pour un nombre à été dépassée (voir section 10.3.2)
  • Le problème paraît insoluble pour HyperCube (voir sections 10.3.4)

Pour le message “error in modular suppression procedure” il faut bien faire attention que c’est le message d’erreur présent dans le batch :

  • Généralement quand c’est l’unique message d’erreur, alors c’est que Modular a tourné pendant quelques minutes puis a atteint une limite de mémoire dans Tau-Argus
  • Voir 10.3.5 et tester avec un autre algorithme

10.5 Savoir lire les différents types de fichiers spécifiques à Tau-Argus

Fichiers en sortie de rtauargus :

  • .rda : fichier de métadonnées pour Tau-Argus
  • .tab : fichier donné à Tau-Argus, il est décrit par .rda, les colonnes sont dans l’ordre des nom dans .rda
  • .hst : fichier de l’apriori, avec rtauargus on pose le secret primaire en amont, on ne demande pas à Tau-Argus de le faire. Dans ce fichier on a à la fois le secret de départ, le “protection level” et les coûts (c)
  • .arb : fichier executé dans la console windows, il est interprété par Tau-Argus. Autrement dit, ce sont une liste de commandes données à Tau-Argus

Fichiers en sortie de Tau-Argus :

  • .txt : journal d’exécution, il n’écrase pas les exécutions ainsi on peut voir toutes les exécutions jamais faites avec Tau-Argus
  • .csv : données d’entrée avec deux nouvelles colonnes. La colonne status à trois modalités : “B” = secret apriori (u), “D” = secret secondaire, “V” = cellules valides, diffusables. La colonne dom renvoie à la dominance dans les cas de secret de dominance où le pourcentage de dominance est nécessaire, néanmoins étant donné notre utilisation de Tau-Argus (pose du secret primaire “manuellement”) cette colonne ne nous intéresse pas.