From e478fd6487da60aa28081d6cb9a92ce9140074a6 Mon Sep 17 00:00:00 2001 From: Mahdi Ben Jelloul Date: Sat, 10 Oct 2015 14:27:17 +0200 Subject: [PATCH] Add trim option to marginal rate computation --- openfisca_core/rates.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openfisca_core/rates.py b/openfisca_core/rates.py index 73dd128333..17aeb32cfa 100644 --- a/openfisca_core/rates.py +++ b/openfisca_core/rates.py @@ -25,12 +25,19 @@ from __future__ import division +import numpy + def average_rate(target = None, varying = None): # target: numerator, varying: denominator return 1 - target / (varying * (varying != 0) + (varying == 0)) -def marginal_rate(target = None, varying = None): +def marginal_rate(target = None, varying = None, trim = None): # target: numerator, varying: denominator - return 1 - (target[:-1] - target[1:]) / (varying[:-1] - varying[1:]) + marginal_rate = 1 - (target[:-1] - target[1:]) / (varying[:-1] - varying[1:]) + if trim is not None: + marginal_rate = numpy.where(marginal_rate <= max(trim), marginal_rate, numpy.nan) + marginal_rate = numpy.where(marginal_rate >= min(trim), marginal_rate, numpy.nan) + + return marginal_rate