Utilisation
Cette section a pour objectif de guider les utilisateurs de SimSAD dans l’utilisation de celui-ci. Pour davantage d’information, la section Dictionnaire (classes et fonctions) donne une description des classes et des fonctions du modèle. Lors de la rédaction d’un notebook ou d’un script Python, cinq étapes principales doivent être suivies afin d’obtenir des résultats de simulation avec SimSAD:
1. Importation de SimSAD
La première étape est d’importer les modules de SimSAD comme suit :
from SimSAD import projection, policy
2. Choix des paramètres
Ensuite, on fixe l’année de début et de fin des projections :
annee_debut = 2023
annee_fin = 2040
On choisit les paramètres du scénario, qui par défaut sont les suivants:
params = policy()
params.chsld_build = True
params.chsld_build_rate = 0.2
params.chsld_restricted_eligibility = False
params.chsld_restriction_rate = 0.95
params.ri_build = True
params.ri_build_rate = 0.2
params.rpa_penetrate = False
params.rpa_penetrate_rate = 0.25
params.rpa_adapt_rate = 0.5
params.chsld_purchase = True
params.chsld_purchase_rate = 0.25
params.nsa_open_capacity = 0.06
params.chsld_mda = True
params.infl_construction = 0.01
params.interest_rate = 0.03
params.clsc_cap = True
params.prive_cap = True
params.eesad_cap = True
params.purchase_prive = True
params.purchase_eesad = True
params.clsc_inf_rate = 0.25
params.clsc_avq_rate = 0.25
params.clsc_avd_rate = 0.25
params.eesad_avd_rate = 0.25
params.prive_avq_rate = 0.25
params.prive_avd_rate = 0.25
params.chsld_inf_rate = 1.0
params.chsld_avq_rate = 1.0
params.ri_avq_rate = 1.0
params.ri_avd_rate = 1.0
params.delta_inf_rate = 0.0
params.delta_avq_rate = 0.0
params.delta_avd_rate = 0.0
params.delta_cah_chsld = 0.0
params.delta_cah_ri = 0.0
params.clsc_shift_avq_eesad = 0.0
params.clsc_shift_avq_prive = 0.0
params.clsc_shift_avd_eesad = 0.0
params.clsc_shift_avd_prive = 0.0
La commande suivante crée un gabarit permettant entre autres de comptabiliser les résultats propres à la simulation selon les paramètres d’utilisation choisis:
scenario = projection(base_yr = annee_debut, stop_yr = annee_fin, scn_policy = params, opt_welfare=True)
où base_yr correspond à l’année à partir de laquelle les résultats de projection sont rapportés, stop_yr correspond à l’année de fin de la simulation, scn_policy correspond à l’ensemble des paramètres spécifiés pour le scénario, et opt_welfare correspond à l’option de calcul de l’utilité des individus [1]. Cette option doit être fixée à True pour que cette opération s’effectue, puisque celle-ci est fixée à False par défaut (le calcul de l’utilité augmente le temps d’exécution des projections). En pratique, la simulation débute en 2020, car les données initiales du modèle sont de 2019, mais les résultats ne sont rapportés dans les tableaux de sortie qu’à partir de l’année base_yr. Si les arguments base_yr et stop_yr ne sont pas spécifiés, SimSAD produira par défaut des projections allant de 2023 à 2040.
3. Ajout d’un tableau de résultats
Plusieurs tableaux de sortie de résultats existent par défaut, mais ceux-ci ne contiennent pas l’ensemble des valeurs évaluées par le modèle lors des projections. Cette approche a été adoptée afin d’améliorer la rapidité d’exécution des projections. Plus le nombre de tableaux de sortie est élevé, plus le temps d’exécution des projections augmente. Voici la liste des noms des 13 tableaux de sortie par défaut et les informations qu’ils contiennent:
pop_region_age: nombre de personnes (par région et âge);
smaf_region_age: nombre de personnes avec un profil Iso-SMAF donné (par région);
chsld_users: nombre total d’usagers en CHSLD, taux de réponse aux besoins en soins infirmiers dans ce milieu de vie, taux de réponse aux besoins en assistance aux AVQ dans ce milieu de vie, et nombre de personnes en attente d’une place en CHSLD (par région);
nsa_users: nombre total d’usagers en NSA (par région);
ri_users: nombre total d’usagers en RI-RTF (par région);
rpa_users: nombre total d’usagers en RPA avec services financés par le secteur public (par région);
home_none_users: nombre total de personnes avec un profil Iso-SMAF vivant à domicile et ne recevant aucun services de soutien (par région);
home_svc_users: nombre total de personnes avec un profil Iso-SMAF vivant à domicile et recevant des services de soutien à domicile (par région);
ces_users: nombre total d’usagers du CES, nombre total d’heures de services en soutien aux AVD reçus dans le cadre du CES, et nombre total d’heures de services d’assistance aux AVQ reçus dans le cadre du CES (par région);
pefsad_users: nombre total d’usagers du PEFSAD, et nombre total d’heures de services en soutien aux AVD reçus dans le cadre du PEFSAD (par région);
clsc_workforce: nombre total d’ETC en soins infirmiers en CLSC, nombre total d’ETC en assistance aux AVQ en CLSC, et nombre total d’ETC en soutien aux AVD en CLSC (par région);
total_cost: coûts totaux par fournisseurs (CLSC, CHSLD, RI-RTF, NSA) et programmes (CES, PEFSAD, CMD), contributions totales des usagers par milieu de vie (RI-RTF, CHSLD, NSA), coûts totaux pour le gouvernement, coûts totaux pour les usagers, et sommes de l’ensemble des coûts (par région);
clsc_worker_needs: besoin de recrutement en nombre total d’ETC pour les soins infirmiers, l’assistance aux AVQ, et le soutien aux AVD (par région);
Ces tableaux de sortie font appel à différent objets du modèle : pop.count, iso.count_eval, registry, et users. L’objet pop.count contient des informations uniquement liées au nombre de personnes dans la population. L’objet iso.count_eval contient, pour sa part, les informations sur le nombre de personnes par profil Iso-SMAF. L’objet regitry contient les informations se rattachant aux caractéristiques des milieux de vie et des fournisseurs. Ainsi, il existe un registry pour chaque milieu de vie et chaque fournisseur (ex. chsld.registry, clsc.regitry, ets.). L’objet users contient les informations sur les usagers de chacun des milieux de vie (Domicile, RPA, RI-RTF, CHSLD, NSA) dans 5 objets différents (home.users, rpa.users, ri.users, chsld.users, nsa.user). Ces informations sont exprimées sous la forme d’une base de microdonnées synthétique où chaque individu a des caractéristiques déterminées par le modèle. L’ensemble de ces objets contiennent seulement des informations par rapport à l’année en cours dans la simulation (à la fin de la simulation les objets contiennent les informations de la dernière année de simulation). Pour connaître les variables contenues dans chacun des objets, vous pouvez par exemple utiliser les commandes suivantes pour afficher les différentes variables incluses dans les objets:
scenario.clsc.registry.columns
ou
scenario.home.users.columns
La dernière commande fonctionnera seulement lorsque la simulation des projections aura été complétée au moins une première fois. En effet, les users sont uniquement créés au cours de la simulation, alors que les registry sont créés en même temps que le gabarit de la simulation.
→ Commandes pour ajouter un tableau de résultats :
Pour ajouter un tableau de sortie sur le nombre d’ETC en RI-RTF par région et qui récolte des résultats pour chaque année entre annee_debut et annee_fin, il vous suffit d’ajouter dans votre notebook le code suivant:
scenario.tracker.add_entry('ri_workforce', 'ri', 'registry',
rowvars=['region_id'],
colvars=['nb_etc_ri_avq', 'nb_etc_ri_avd'],
aggfunc='sum',
start_yr=annee_debut, stop_yr=annee_fin)
où ri_workforce correspond au nom du tableau de sortie, ri correpond à la classe de provenance de l’objet utilisé, registry correpond à l’objet d’où les résultats sont puissés, rowvars correspond aux variables d’agrégation ([“region_id”]), colvars correspond aux variables de résultat ([“nb_etc_ri_avq”, “nb_etc_ri_avd”]), aggfunc correspond à la fonction d’agrégation (sum pour le total ou mean pour la moyenne), start_yr correspond à l’année de départ de la comptabilisation des résultats, et stop_yr correspond à l’année de fin de la comptabilisation des résultats.
4. Simulation du scénario
Pour lancer la simulation, il vous suffit d’utiliser la commande suivante:
scenario.run()
5. Appel des tableaux de résultats
Une fois la simulation terminée, vous pouvez appeler directement le tableau de sortie via son numéro de tracker. Par exemple si vous souhaitez appeler le tableau home_svc_users dont le numéro de tracker est 7, vous pouvez l’afficher à l’aide du code suivant:
df = scenario.tracker.registry[7].table
df
Ce tableau de sortie vous donnera le nombre d’usagers à domicile recevant des services de soutien à domicile par région. Veuillez noter que les tableaux que vous aurez créés prendrons la suite des tableaux existants numérotés de 0 à 12. Par conséquent le premier tableau que vous aurez créé prendra le numéro 13, le deuxième tableau que vous aurez créé prendra le numéro 14 et ainsi de suite.
Si vous ne connaissez pas le numéro du tracker, mais que vous connaissez le nom de ce dernier, vous pouvez l’afficher à l’aide du code suivant:
for k in p.tracker.registry:
if k.entry_name=='home_svc_users':
df=k.table
df