Skip to content
Snippets Groups Projects
Commit a0d5ade3 authored by clallemand's avatar clallemand
Browse files

change le chemin vers le default_config_file_directory

parent ab2ff751
Branches
No related tags found
1 merge request!151Modifie la pipeline
......@@ -18,7 +18,7 @@
from leximpact_aggregates.aggregate import AggregateManager
from leximpact_common_python_libraries.config import Configuration
from openfisca_survey_manager import default_config_files_directory
from openfisca_survey_manager.paths import default_config_files_directory
# from leximpact_socio_fisca_simu_etat.aggregates_read import Aggregate
......
%% Cell type:code id: tags:
``` python
import pandas as pd
import plotly.express as px
from numpy import arange
from openfisca_core.reforms import Reform
from openfisca_core import periods
from openfisca_survey_manager.statshelpers import weighted_quantiles
from leximpact_survey_scenario.leximpact_survey_scenario import (
LeximpactErfsSurveyScenario,
)
from leximpact_survey_scenario.leximpact_tax_and_benefit_system import leximpact_tbs
from openfisca_survey_manager import default_config_files_directory
from openfisca_survey_manager.paths import default_config_files_directory
```
%% Cell type:code id: tags:
``` python
def create_reforme_ir(parameters):
reform_period = periods.period("2020")
# Reforme + revalo inflation (source : Article 2 du PLF 2020)
parameters.impot_revenu.bareme_ir_depuis_1945.bareme.brackets[1].rate.update(
start=reform_period, value=0.14
)
parameters.impot_revenu.bareme_ir_depuis_1945.bareme.brackets[1].threshold.update(
start=reform_period, value=10064.0 * 1.002
)
parameters.impot_revenu.bareme_ir_depuis_1945.bareme.brackets[2].threshold.update(
start=reform_period, value=27794.0 * 1.002
)
parameters.impot_revenu.bareme_ir_depuis_1945.bareme.brackets[3].threshold.update(
start=reform_period, value=74517.0 * 1.002
)
parameters.impot_revenu.bareme_ir_depuis_1945.bareme.brackets[4].threshold.update(
start=reform_period, value=157806.0 * 1.002
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.decote.seuil_celib.update(
start=reform_period, value=1208.0 * 1.002
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.decote.seuil_couple.update(
start=reform_period, value=1990.0 * 1.002
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.decote.taux.update(
start=reform_period, value=0.75
)
# Revalorisation des autres parametres sur inflation 1% (source : Article 2 du PLF 2020)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.reduction_ss_condition_revenus.majoration_plafond_par_demi_parts_supp.update(
start=reform_period, value=3836.0 * 1.01
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.reduction_ss_condition_revenus.plafond_rfr_celib.update(
start=reform_period, value=19176.0 * 1.002
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.reduction_ss_condition_revenus.plafond_rfr_couple.update(
start=reform_period, value=21249.0 * 1.002
)
parameters.impot_revenu.calcul_impot_revenu.plaf_qf.reduction_ss_condition_revenus.taux.update(
start=reform_period, value=0.2
)
return parameters
class reforme_ir(Reform):
name = "Réforme du barème de l'impot sur le revenu"
def apply(self):
self.modify_parameters(modifier_function=create_reforme_ir)
# Supprime la réduction sous conditions de ressources (fusionnée dans la décote)
self.replace_variable(
self.variables["reduction_ss_condition_revenus"].__class__
)
variable = self.variables["reduction_ss_condition_revenus"]
variable.end = variable.set_end("2025-12-31")
```
%% Cell type:code id: tags:
``` python
baseline_leximpact_tbs = reforme_ir(leximpact_tbs)
leximpact_survey_scenario = LeximpactErfsSurveyScenario(
final_year=2020,
collection="leximpact",
baseline_tax_benefit_system=baseline_leximpact_tbs,
tax_benefit_system_plf=leximpact_tbs,
config_dirpath=default_config_files_directory,
)
```
%% Output
/home/cgl/.config/openfisca-survey-manager
years_available=[2019] vs years=[2019, 2020]
WARNING: no data for 2020, will took 2019
Données du scénario :
{'input_data_table_by_entity_by_period': {2019: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019'}, 2020: {'individu': 'individu_2019', 'famille': 'famille_2019', 'foyer_fiscal': 'foyer_fiscal_2019', 'menage': 'menage_2019'}}, 'survey': 'leximpact_2019'}
2018
2019
2018
2019
%% Cell type:code id: tags:
``` python
leximpact_survey_scenario.compute_aggregate(
"irpp_economique", period=2020, difference=True
)
```
%% Output
5385592535.669571
%% Cell type:code id: tags:
``` python
5.4 / 5
```
%% Output
1.08
%% Cell type:code id: tags:
``` python
variables = ["irpp_economique", "niveau_de_vie", "unites_consommation", "wprm"]
baseline = leximpact_survey_scenario.create_data_frame_by_entity(
variables=variables, period=2020, use_baseline=True, merge=True
)
reforme = leximpact_survey_scenario.create_data_frame_by_entity(
variables=["irpp_economique"], period=2020, use_baseline=False, merge=True
)
reforme.rename(columns={"irpp_economique": "irpp_economique_reforme"}, inplace=True)
base = pd.concat([baseline, reforme["irpp_economique_reforme"]], axis=1)
```
%% Output
/home/cgl/leximpact/leximpact-prepare-data/.venv/lib/python3.10/site-packages/openfisca_france/model/prelevements_obligatoires/prelevements_sociaux/cotisations_sociales/travail_non_salarie.py:199: RuntimeWarning: divide by zero encountered in divide
- (0.007 * (assiette_pss > 5) * ((assiette_pss - 5) / assiette_pss))
/home/cgl/leximpact/leximpact-prepare-data/.venv/lib/python3.10/site-packages/openfisca_france/model/prelevements_obligatoires/prelevements_sociaux/cotisations_sociales/travail_non_salarie.py:199: RuntimeWarning: invalid value encountered in multiply
- (0.007 * (assiette_pss > 5) * ((assiette_pss - 5) / assiette_pss))
/home/cgl/leximpact/leximpact-prepare-data/.venv/lib/python3.10/site-packages/openfisca_france/model/covid19/activite.py:23: RuntimeWarning: invalid value encountered in divide
return individu('travailleur_non_salarie', period) * (((chiffre_d_affaire - chiffre_d_affaire_annee_n_1) / chiffre_d_affaire_annee_n_1) < -0.5)
%% Cell type:code id: tags:
``` python
base["dif"] = (
base.irpp_economique_reforme - base.irpp_economique
) / base.unites_consommation
base["quantiles"] = weighted_quantiles(
data=base.niveau_de_vie, labels=arange(1, 11), weights=base.wprm
)
base["pond_irpp_economique"] = base.irpp_economique * base.wprm
base["pond_irpp_economique_reforme"] = base.irpp_economique_reforme * base.wprm
base["pond_unites_consommation"] = base.unites_consommation * base.wprm
base["pond_niveau_de_vie"] = base.niveau_de_vie * base.wprm
```
%% Cell type:code id: tags:
``` python
graph_data = base.groupby("quantiles").agg(
{
"pond_niveau_de_vie": "sum",
"pond_irpp_economique": "sum",
"pond_irpp_economique_reforme": "sum",
"pond_unites_consommation": "sum",
}
)
graph_data["evol"] = (
(graph_data.pond_irpp_economique_reforme - graph_data.pond_irpp_economique)
/ graph_data.pond_unites_consommation
) / graph_data.pond_niveau_de_vie
graph_data["quantiles"] = graph_data.index
graph_data
```
%% Output
pond_niveau_de_vie pond_irpp_economique \
quantiles
1.0 6.458540e+10 -4.006783e+08
2.0 8.836259e+10 5.222377e+08
3.0 1.039151e+11 -5.613366e+08
4.0 1.180309e+11 -2.525025e+09
5.0 1.309478e+11 -5.797159e+09
6.0 1.444845e+11 -1.013668e+10
7.0 1.600938e+11 -1.504371e+10
8.0 1.813236e+11 -2.256606e+10
9.0 2.164236e+11 -3.531805e+10
10.0 3.609349e+11 -1.024704e+11
pond_irpp_economique_reforme pond_unites_consommation \
quantiles
1.0 -3.985564e+08 11498443.0
2.0 5.934443e+08 12314157.0
3.0 -1.658861e+08 11680271.0
4.0 -1.950765e+09 11413556.0
5.0 -5.017501e+09 11377935.0
6.0 -8.726624e+09 11615276.0
7.0 -1.293156e+10 11636206.0
8.0 -1.975014e+10 11440117.0
9.0 -3.315963e+10 11284073.0
10.0 -1.013578e+11 11319610.0
evol quantiles
quantiles
1.0 2.857298e-12 1.0
2.0 6.544060e-11 2.0
3.0 3.258071e-10 3.0
4.0 4.262768e-10 4.0
5.0 5.232904e-10 5.0
6.0 8.402062e-10 6.0
7.0 1.133805e-09 7.0
8.0 1.357485e-09 8.0
9.0 8.838218e-10 9.0
10.0 2.723206e-10 10.0
%% Cell type:code id: tags:
``` python
fig = px.bar(graph_data, x="quantiles", y="evol")
fig.show()
```
%% Output
%% Cell type:code id: tags:
``` python
input_values = leximpact_survey_scenario.used_as_input_variables
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment