Exemple #1
0
def test_constant_cdf():
    dev = cl.Development().fit(cl.load_dataset('raa'))
    link_ratios = {(num + 1) * 12: item
                   for num, item in enumerate(dev.ldf_.values[0, 0, 0, :])}
    dev_c = cl.DevelopmentConstant(patterns=link_ratios,
                                   style='ldf').fit(cl.load_dataset('raa'))
    assert_allclose(dev.cdf_.values, dev_c.cdf_.values, atol=1e-5)
def test_constant_callable(clrd, atol):
    agway = clrd.loc['Agway Ins Co', 'CumPaidLoss']

    def paid_cdfs(x):
        """ A function that returns different CDFs depending on a specified LOB """
        cdfs = {
            'comauto':
            [3.832, 1.874, 1.386, 1.181, 1.085, 1.043, 1.022, 1.013, 1.007, 1],
            'medmal': [
                24.168, 4.127, 2.103, 1.528, 1.275, 1.161, 1.088, 1.047, 1.018,
                1
            ],
            'othliab':
            [10.887, 3.416, 1.957, 1.433, 1.231, 1.119, 1.06, 1.031, 1.011, 1],
            'ppauto':
            [2.559, 1.417, 1.181, 1.084, 1.04, 1.019, 1.009, 1.004, 1.001, 1],
            'prodliab':
            [13.703, 5.613, 2.92, 1.765, 1.385, 1.177, 1.072, 1.034, 1.008, 1],
            'wkcomp':
            [4.106, 1.865, 1.418, 1.234, 1.141, 1.09, 1.056, 1.03, 1.01, 1]
        }
        patterns = pd.DataFrame(cdfs, index=range(12, 132, 12)).T
        return patterns.loc[x.loc['LOB']].to_dict()

    model = cl.DevelopmentConstant(patterns=paid_cdfs,
                                   callable_axis=1,
                                   style='cdf')
    assert abs(
        model.fit_transform(agway).cdf_.loc['comauto'].iloc[..., 0].sum() -
        3.832) < atol
def test_constant_cdf(raa):
    dev = cl.Development().fit(raa)
    xp = dev.ldf_.get_array_module()
    link_ratios = {(num + 1) * 12: item
                   for num, item in enumerate(dev.ldf_.values[0, 0, 0, :])}
    dev_c = cl.DevelopmentConstant(patterns=link_ratios, style="ldf").fit(raa)
    assert xp.allclose(dev.cdf_.values, dev_c.cdf_.values, atol=1e-5)
Exemple #4
0
def test_constant_cdf():
    dev = cl.Development().fit(cl.load_sample('raa'))
    xp = cp.get_array_module(dev.ldf_.values)
    link_ratios = {(num + 1) * 12: item
                   for num, item in enumerate(dev.ldf_.values[0, 0, 0, :])}
    dev_c = cl.DevelopmentConstant(patterns=link_ratios,
                                   style='ldf').fit(cl.load_sample('raa'))
    xp.testing.assert_allclose(dev.cdf_.values, dev_c.cdf_.values, atol=1e-5)
Exemple #5
0
def paid_cdfs(x):
    """ A function that returns different CDFs depending on a specified LOB """
    cdfs = {
        'comauto':
        [3.832, 1.874, 1.386, 1.181, 1.085, 1.043, 1.022, 1.013, 1.007, 1],
        'medmal':
        [24.168, 4.127, 2.103, 1.528, 1.275, 1.161, 1.088, 1.047, 1.018, 1],
        'othliab':
        [10.887, 3.416, 1.957, 1.433, 1.231, 1.119, 1.06, 1.031, 1.011, 1],
        'ppauto':
        [2.559, 1.417, 1.181, 1.084, 1.04, 1.019, 1.009, 1.004, 1.001, 1],
        'prodliab':
        [13.703, 5.613, 2.92, 1.765, 1.385, 1.177, 1.072, 1.034, 1.008, 1],
        'wkcomp':
        [4.106, 1.865, 1.418, 1.234, 1.141, 1.09, 1.056, 1.03, 1.01, 1]
    }
    patterns = pd.DataFrame(cdfs, index=range(12, 132, 12)).T
    return patterns.loc[x.loc['LOB']].to_dict()


# If it works with pandas apply on the triangle index...
agway.index.apply(paid_cdfs, axis=1)
# ... then it will work in DevelopmentConstant
model = cl.DevelopmentConstant(patterns=paid_cdfs,
                               callable_axis=1,
                               style='cdf')

model.fit(agway)
model.ldf_.T.plot(kind='bar', grid=True, title='Agway Insurance LDFs')