Code Monkey home page Code Monkey logo

openfisca-france-indirect-taxation's Introduction

OpenFisca France Indirect Taxation

Build Status via Travis CI

Presentation

OpenFisca is a versatile microsimulation free software. This is the source code of the France module indirect taxation module.

Please consult http://www.openfisca.fr/presentation

Documentation

Please consult http://www.openfisca.fr/documentation

Installation

Please consult http://www.openfisca.fr/installation if you want to develop with OpenFisca on your computer.

Contribute

OpenFisca is a free software project. Its source code is distributed under the GNU Affero General Public Licence version 3 or later (see COPYING).

Feel free to join the OpenFisca development team on GitHub or contact us by email at [email protected]

Contributors

IPP is the main contributor to this repository is a fundamental building block of the TAXIPP microsimulation model.

Etienne Fontaine, Vincent Gollier, Hadrien Leclerc and Germain Marchand contributed to this project to fulfill their applied statistics project at ENSAE.

Thomas Douenne worked on this project as an IPP intern.

openfisca-france-indirect-taxation's People

Contributors

benjello avatar cbenz avatar eespagne avatar eraviart avatar etiennefontaine avatar germainmarchand avatar hadrien-leclerc avatar malkaguillot avatar marionipp avatar thomasdouenne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openfisca-france-indirect-taxation's Issues

Agrégats ALISS

Faire une table des agrégats par poste alimentaire en utilisant ce qui est fait pour #125 et la base de données ALISS après l'avoir importée avec build_collection.

Inclure la variable zeat dans le modèle

Cette variable est nécessaire pour ventiler les élasticités de la demande par type de ménage.
Elle semble présente dans les données préparées mais pas chargée par le modèle.
Les étapes à suivre sont les suivantes:

  • il faut vérifier qu'elles sont bien présentes pour toutes les années avec les mêmes modalités (écrire un test ou un assert)
  • créer la variable dans le modèle en lui trouvant un nom long adéquat.

Duplicated ident_men in survey_scenario

When building survey_scenario, all variables in the dataframe become of type float32. Because ident_men is very large for 2000 (10^7) and 2005 (10^10) it modifies its true values. Consequently, it also creates some duplicates.
We would like to have dataframes where ident_men is of type int64 or object.

Clean examples

  • Rename example directory to examples
  • Remove the example in example_* sub-directries or files (we know that they are examplessince they are in the examples directory)

Fix reform bug

  • depenses_ht_tva_* are buggy for refoms
  • correct merge of categorie_fiscale in aliss reforms (needs a nice resuffle of start and stop dates)
  • rebuild poste_agrege_* for reforms (OK but tests needed)
  • Rethink data structure for categories_fiscales data

Use real name for catégorie fiscales

Etapes à réaliser dans l'ordre:

  • lister les différentes catégories et leurs périodes d'existence,
  • corriger les noms de catégories fiscales,
  • corriger le nom des taxes payées

Améliorer le processus de calage

Etapes à réaliser pour améliorer l'existant:

  • faire l'import des données comptabilité nationale utilisée notamment ici en utilisant les routines ipp-macro-series-parser,
  • préparer les données sous un format adapté pour être stockée dans le répertoire assets en écrivant un petit script comme ceux-ci,
  • utiliser les outils de calibration standard (demander à @benjello).

TVA chocolat

Vérifier les catégories de chocolat taxés au taux plein de TVA.
Voir avec Mathias si les deux postes coicop '01.1.8.2.1' et '01.1.8.2.2' sont concernés.

Migrer les csv en csv standard

C'est à dire sans sep = ';'.
Le but est qu'il soit visibles dans github.
Il est également possible de virer ceux qui ne servent plus ...

Renaming variables

Rename variables (attention il y a des variables qui reproduisent des variables d'entrée:

  • ocde10 to uc (check name in openfisca-france)
  • rev_disponible to revenu_disponible
  • rev_disp_loyerimput
  • revtot
  • revtotuc
  • decuc
  • total_assurances_taxe to assurances_taxe_total
  • pourcentage_vehicule_essence: vehicule_essence_part
  • veh_* to vehicule_*

Rename modules

  • taxes_indirectes.ticpe to taxes_indirectes.carburants (ou équivalent plus approprié)

get_input_data_frame is defined in 3 places

  • [https://github.com/openfisca/openfisca-france-indirect-taxation/tree/master/openfisca_france_indirect_taxation/examples/utils_example.py]
  • [https://github.com/openfisca/openfisca-france-indirect-taxation/tree/master/openfisca_france_indirect_taxation/surveys.py]
  • [https://github.com/openfisca/openfisca-france-indirect-taxation/tree/master/openfisca_france_indirect_taxation/tests/test_simulation.py]

Only the second one should be kept.

Prototype réaction comportementale

Etapes à discuter avec @thomasdouenne:

  • Identifier et documenter les variables intermédiaires à calculer (part budgétaire, revenus)
  • Articuler avec les prix
  • Articuler avec les élasticités
  • Réaliser un petit modèle fictif et le tester
  • Généraliser au modèle "carburants"
  • Généraliser au modèle "alimentation"
  • Gérer les élasticités données avec intervalle de confiance

Non working tests_aids_categ.py

======================================================================
ERROR: Failure: KeyError ("['_1000' '_2000' '_3000' '_4000' '_5000' '_6000' '_7000' '_8000' '_9000'\n '_10000' '_11000' '_12000'] not in index")
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/tests/tests_aids_categ.py", line 10, in <module>
    from openfisca_france_indirect_taxation.almost_ideal_demand_system.aids_dataframe_builder_categ import \
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/almost_ideal_demand_system/aids_dataframe_builder_categ.py", line 152, in <module>
    ['_7000'] + ['_8000'] + ['_9000'] + ['_10000'] + ['_11000'] + ['_12000'] + ['temps'] + ['date']]
  File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 1963, in __getitem__
    return self._getitem_array(key)
  File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 2007, in _getitem_array
    indexer = self.ix._convert_to_indexer(key, axis=1)
  File "/usr/lib/python2.7/dist-packages/pandas/core/indexing.py", line 1150, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])
KeyError: "['_1000' '_2000' '_3000' '_4000' '_5000' '_6000' '_7000' '_8000' '_9000'\n '_10000' '_11000' '_12000'] not in index"

Créer une table d'agrégats

Elle devra comprendre les consommations agrégées au niveau pertienent le plus fin possible (réglable) ainsi
que les montants des taxes agrégées (voire des bases si une comparaison avec des données existantes est possible. Il faut donc:

  • recueillir les informations disponibles dans la CN
  • recueillir les informations disponibles d'origine fiscale
  • adapter les agrégats utilisés pour openfisca-france-data

Remontées problèmes ALISS

@MarionIPP @SophieIPP
Je recense ici les problème des données ALISS
Les nomk suivant n'ont pas de nomf:

  • 11933 : Levure, preparation pour dessert ,ingrédients culinaires
  • 11942 : Substitut De Repas et Autres Surgele

Reorganize asset directory

It is a bit messy:

  • create subdirectories
  • convert documentation file Doc on assets.docx to Markdown (avoid docx files on shared repos)

Test fails because of missing config option

Execution of test_carburants_builder.py produces:

ERROR: Failure: NoOptionError (No option 'openfisca_indirect_taxation' in section: 'collections')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/cbenz/Dev/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/tests/test_carburants_builder.py", line 16, in <module>
    aggregates_data_frame = get_input_data_frame(year)
  File "/home/cbenz/Dev/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/example/utils_example.py", line 29, in get_input_data_frame
    collection = "openfisca_indirect_taxation", config_files_directory = config_files_directory)
  File "/home/cbenz/Dev/openfisca/openfisca-survey-manager/openfisca_survey_manager/survey_collections.py", line 120, in load
    json_file_path = config.get("collections", collection)
  File "/usr/lib/python2.7/ConfigParser.py", line 618, in get
    raise NoOptionError(option, section)
NoOptionError: No option 'openfisca_indirect_taxation' in section: 'collections'

Non working test_carburants_builder.py

======================================================================
ERROR: Failure: KeyError ("['categorie_fiscale_14'] not in index")
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/tests/test_carburants_builder.py", line 41, in <module>
    df2 = aggregates_data_frame[['poste_coicop_722'] + ['categorie_fiscale_14']]
  File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 1963, in __getitem__
    return self._getitem_array(key)
  File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 2007, in _getitem_array
    indexer = self.ix._convert_to_indexer(key, axis=1)
  File "/usr/lib/python2.7/dist-packages/pandas/core/indexing.py", line 1150, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])
KeyError: "['categorie_fiscale_14'] not in index"

Non working tests

nosetests openfisca_france_indirect_taxation/tests/test_age.py 
E
======================================================================
ERROR: Failure: IOError (could not find class definition)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/tests/test_age.py", line 30, in <module>
    from . import base
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/tests/base.py", line 38, in <module>
    TaxBenefitSystem = init_country()
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/__init__.py", line 53, in init_country
    from .model import model  # noqa analysis:ignore
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/model/model.py", line 30, in <module>
    from .consommation import (  # noqa analysis:ignore
  File "/home/benjello/openfisca/openfisca-france-indirect-taxation/openfisca_france_indirect_taxation/model/consommation/consommation_menages.py", line 37, in <module>
    label = u"Poste coicop {} de la nomenclature aggrégée à 12 niveaux".format(coicop12_index),
  File "/home/benjello/openfisca/openfisca-core/openfisca_core/formulas.py", line 968, in __new__
    source_lines, line_number = inspect.getsourcelines(self)
  File "/usr/lib/python2.7/inspect.py", line 690, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/lib/python2.7/inspect.py", line 564, in findsource
    raise IOError('could not find class definition')
IOError: could not find class definition

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

Ecrire la documentation

La documentation doit comprendre:

  • la description du traitement des données brutes
  • la construction des bases pour les simulations
  • la construction des fichiers matrice de passage et paramètres fiscalité (#107 et passage xls -> csv)
  • l'importation des données de calages (comptes transport)

Cale Tabacs

Voir si on ne peut rien tirer de le rapport de la cour des comptes mentionné dans le monde en terme de cales.

Traduire les exemples .py en notebook

Dans le dossier exemples, convertir les exemples .py en notebook. Certains exemples peuvent être groupés dans le même notebook (car font des choses similaires, mais sur différentes périodes par exemple).

parameters generation

We need to finalize automatic legislative parameters generation.
Following steps needed to be completed:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.