Skip to content

Commit

Permalink
Add trim option to marginal rate computation
Browse files Browse the repository at this point in the history
  • Loading branch information
benjello committed Oct 10, 2015
1 parent 2bf9ac3 commit e478fd6
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions openfisca_core/rates.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit e478fd6

Please sign in to comment.