Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrige le calcul des aides au logement #1200

Merged
merged 5 commits into from
Nov 16, 2018
Merged

Conversation

claireleroy
Copy link
Contributor

@claireleroy claireleroy commented Oct 31, 2018

Problème : il y' a un double compte de la CRDS logement dans la variable aides_logement :

crds_logement => aide_logement_montant => apl => aides_logement
crds_logement => aides_logement

Cette PR corrige le calcul de la variable à aides_logement pour éviter ce double compte.

  • Changement mineur.
  • Périodes concernées : toutes.
  • Zones impactées : chemin/vers/le/fichier/contenant/les/variables/impactées.
  • Détails :
    • Corrige le double compte de la CRDS logement dans aides_logement

Ces changements :

  • Corrigent ou améliorent un calcul déjà existant.

@claireleroy claireleroy force-pushed the correction-crds-logement branch from 79c4a55 to 9e146be Compare October 31, 2018 15:23
@Morendil
Copy link
Contributor

Pour le coup un test mettant en évidence le double compte serait intéressant. Je constate qu'on a aucun test sur aides_logement pour des valeurs autres que zéro, et que dans les tests où apparaît cette variable (tests/formulas/revenu_disponible.yaml) elle n'a pas l'air très pertinente. @claireleroy tu peux prendre de réaliser un test ?

@claireleroy
Copy link
Contributor Author

@Morendil Ok je prends!

@claireleroy
Copy link
Contributor Author

Je bloque un peu sur le test, j'avais dans l'idée quelque chose comme cela :

- name: aides_logement_2018_01
  description: "Verrifie qu'il n'y ait pas de doubles comptes de la CRDS logement dans les aides au logement nettes"
  period: 2018-01
  absolute_error_margin: 1
  input_variables:
    statut_occupation_logement: locataire_vide
    aide_logement_loyer_retenu: 400
    aide_logement_charges: 100
    aide_logement_participation_personnelle: 200
  output_variables:
    aide_logement_montant_brut_avant_degressivite: 300
    # AL après application de la dégressivité
    aide_logement_montant_brut_crds: 295
    crds_logement: -300 * 0.005
    # AL après déduction de la CRDS
    aide_logement_montant: 295 - 300 * 0.005
    aides_logement: 295 - 300 * 0.005

La verrification du double compte se fait via la variable aide_logement qui est égale à 293.5 si tout est bon et 292 si il y'a double compte de la CRDS.

Le problème étant que la variable aides_logement est annuelle tandis que les autres variables d'aides au logement sont mensuelles.. J'ai du mal à créer un test qui teste toutes ces variables à la fois à cause de ces problèmes de périodes. Une idée @Morendil @benjello ?

@benjello
Copy link
Member

benjello commented Nov 5, 2018

@claireleroy : je ferais un test sur une année en calculant toutes les aides au logement pour tous les mois. Voir la doc pour renseigner les différentes périodes.

@Morendil
Copy link
Contributor

Morendil commented Nov 5, 2018

@claireleroy OK je reprends la main à partir de ce test

@Morendil
Copy link
Contributor

Morendil commented Nov 14, 2018

J'ai ajouté une variante de ce test dans tests/formulas/aides_logement_2018.yaml et ça ressemble à ça:

- name: aides_logement_2018_01
  description: "Vérifie qu'il n'y ait pas de doubles comptes de la CRDS logement dans les aides au logement nettes"
  period: 2018-01
  absolute_error_margin: 1
  input_variables:
    statut_occupation_logement: locataire_vide
    aide_logement_loyer_retenu: 400
    aide_logement_charges: 100
    aide_logement_participation_personnelle: 200
  output_variables:
    aide_logement_montant_brut_avant_degressivite: 300
    # AL après application de la dégressivité
    aide_logement_montant_brut_crds: 295
    crds_logement: -300 * 0.005
    # AL après déduction de la CRDS
    aide_logement_montant: 295 - 300 * 0.005
    aides_logement:
      2018: 295 - 300 * 0.005

Pour moi ça reste un peu mystérieux… ça passe pour aide_logement_montant mais aides_logement est KO avec une valeur de 442.89984. Je regarde de plus près.

@claireleroy
Copy link
Contributor Author

@Morendil Alors là je ne vois pas trop ... Peut-être qu'en définissant des inputs juste pour janvier 2018, on calcule quand même un montant non nul d'aide au logement pour les mois d'après ? Du coup quand tu testes aides_logement pour toute l'année 2018, on a pas juste la valeur correspondant à janvier 2018 ?

J'ai essayé de lancer le test mais j'ai toujours la même erreur qu'avant du coup je ne sais pas si je peux beaucoup t'aider car je n'arrive pas à répliquer ton erreur..

$ openfisca-run-test tests/formulas/aides_logement_2018.yaml --c openfisca_france
c:\python27\lib\site-packages\numpy\core\fromnumeric.py:2840: RuntimeWarning: invalid value encountered in rint
  return round(decimals, out)
...ERROR:openfisca_core.tools.test_runner:aides_logement_2018.yaml: aides_logement_2018_01 - 2018-01
E
======================================================================
ERROR: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\cleroy\AppData\Roaming\Python\Python27\site-packages\openfisca_core\tools\test_runner.py", line 152, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "C:\Users\cleroy\AppData\Roaming\Python\Python27\site-packages\openfisca_core\tools\test_runner.py", line 245, in _run_test
    simulation.calculate(variable_name, requested_period),
  File "C:\Users\cleroy\AppData\Roaming\Python\Python27\site-packages\openfisca_core\simulations.py", line 171, in calculate
    array = self._run_formula(variable, entity, period, extra_params, max_nb_cycles)
  File "C:\Users\cleroy\AppData\Roaming\Python\Python27\site-packages\openfisca_core\simulations.py", line 263, in _run_formula
    array = formula(entity, period)
  File "c:\github\openfisca-france\openfisca_france\model\mesures.py", line 409, in formula
    apl = famille('apl', period, options = [ADD])
[...]
 File "C:\Users\cleroy\AppData\Roaming\Python\Python27\site-packages\openfisca_core\entities.py", line 567, in reduce
    result = reducer(result, self.value_nth_person(p, filtered_array, default = neutral_element))
TypeError: invalid type promotion
-------------------- >> begin captured logging << --------------------
openfisca_core.tools.test_runner: ERROR: aides_logement_2018.yaml: aides_logement_2018_01 - 2018-01
--------------------- >> end captured logging << ---------------------

@Morendil
Copy link
Contributor

Morendil commented Nov 14, 2018

En fait la variable aides_logement calcule effectivement le cumul des aides mensuelles sur toute une année (dans le cas de test concerné on est éligible à l'ALS plus précisément) mais comme les inputs sont spécifiés seulement pour janvier ce calcul est faux les autres mois.

Le commit que je viens de pousser utilise aide_logement à la place, qui est également au niveau mensuel; ça me semble cohérent avec tes intentions, tu confirmes ?

@Morendil
Copy link
Contributor

@claireleroy L'erreur que tu as vue pourrait être liée à Python 2 vs Python 3. Tu es toujours en Python 2.7 ?

@claireleroy
Copy link
Contributor Author

@Morendil En utilisant aide_logement au lieu de aides_logement on ne teste plus trop la correction du double compte du coup puisque celui-ci n'apparaissait que dans la variable à aides_logement.
En y réfléchissant, je ne suis pas sûre que l'ajout d'un test pour cette PR qui corrige simplement une erreur ait une valeur si importante... Qu'en penses tu ?

NB : Oui je suis toujours sous Python 2.3 :/

@Morendil
Copy link
Contributor

Bien sûr, au temps pour moi. Dans ce cas je ne vois comme solution que de renseigner les variables pour chaque mois… Oui c'est un changement qui fait peu de lignes, mais il modifie un calcul qui peut avoir de l'importance notamment pour Mes-Aides, ça vaut le coup je crois.

@Morendil
Copy link
Contributor

En définitive cette variable annuelle ne fait que reprendre le calcul de la variable définie en mensuel, j'ai conservé aides_logement pour ne pas introduire de BREAKING mais il suffisait de sommer les valeurs mensuelles, ce qui est maintenant le cas.

@Morendil Morendil force-pushed the correction-crds-logement branch from 6d750d7 to b994453 Compare November 16, 2018 08:10
@Morendil Morendil force-pushed the correction-crds-logement branch from b994453 to a97db3c Compare November 16, 2018 08:18
@claireleroy claireleroy merged commit cb6592c into master Nov 16, 2018
@Morendil Morendil deleted the correction-crds-logement branch November 16, 2018 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants