如何计算分段线性斜率

时间:2019-09-13 19:57:08

标签: python-3.x statsmodels data-munging

这可能是一个编码语法问题,但是如果您有时间的话,我希望这个优秀的专家社区为您提供帮助。我想以分段线性回归到一阶的方式计算每个线段的斜率和截距。

这是我的公式的一个示例:

formula2 = 'pure_premium ~ eff_year_2010 + eff_year_2011 + eff_year_2012 + eff_year_2013 + eff_year_2014 + eff_year_2015 + \
            eff_year_2016 + eff_year_2017 + eff_year_2018 + rba_model + \
            + bs(np.clip(driver_age_model, 0, np.inf), degree = 1, knots = [55])   \
            + bs(np.clip(vehicle_age_model, 0, np.inf), degree = 1, knots = [25]) \
            + bs(np.clip(length_ft_model, 0, np.inf), degree = 1, knots = [32]) + yrs_owned_model  \
            + cm_ded_model  - 1'

因此,从上面可以看到,驾驶员年龄,车辆年龄和收费时长分别为55岁,25岁和32英尺。

我以驾驶员年龄为例。

根据这篇文章https://stats.stackexchange.com/questions/61805/standard-error-of-slopes-in-piecewise-linear-regression-with-known-breakpoints,第一段给出的系数(55岁以下的驾驶员年龄)为斜率,在这种情况下为1.263。年龄在55岁以上的驾驶员的斜率应该是第一个斜率+参数显示的斜率是.299,因此,斜率应该是1.263 + .299(即1.562)。

  1. 计算正确吗?

  2. 有没有办法对此进行编码?下面是示例数据框。

import pandas as pd

dict1 = {'variable': ['driver_age_model', 'driver_age_model', 'driver_age_model']
         , 'level': [54,55,56]
         , 'pricing_model_2_coefficient': [1.263361, 1.263361, .299176]}

df1 = pd.DataFrame.from_dict(dict1)

df1

expectationion = {'variable': ['driver_age_model', 'driver_age_model', 'driver_age_model']
        , 'level': [54,55,56]
        , 'pricing_model_2_coefficient': [1.263361, 1.263361, .299176]
        , 'actual_slope': [1.26331, 1.26331, 1.5625]}

df2 = pd.DataFrame.from_dict(expection)

df2

0 个答案:

没有答案