如何返回Python PWLF分段回归中每个分段的标准误差
PWLF库获取各分段标准误差的最高效方法
你观察到的返回值规律是PWLF的固有设计:standard_errors()返回的结果与模型的beta参数数组一一对应,当你指定m个分段时,beta数组长度为m+1,对应m+1个断点(包含序列首尾边界)的响应变量估计值,返回的标准误就是这几个断点估计值的标准误。
根据你需要的标准误差类型,可直接用以下两种方案计算,不需要额外拟合模型:
方案1:获取分段斜率的标准误
直接基于已输出的断点参数、标准误做误差传播计算,步骤如下:
- 提取拟合模型的断点x坐标:
break_x = my_pwlf.fit_breaks - 提取断点y估计值:
beta = my_pwlf.beta - 提取断点标准误:
se_beta = my_pwlf.standard_errors() - 对第i个分段(i从0到m-1),斜率计算逻辑为:
slope_i = (beta[i+1] - beta[i]) / (break_x[i+1] - break_x[i]) - 对应斜率的标准误计算逻辑为:
se_slope_i = sqrt(se_beta[i]**2 + se_beta[i+1]**2) / (break_x[i+1] - break_x[i])
如果你需要更精确的结果,可以调用
my_pwlf.fit_with_breakpoint_uncertainty()获取beta参数的协方差矩阵cov_beta,将上面的标准误公式替换为:se_slope_i = sqrt(se_beta[i]**2 + se_beta[i+1]**2 - 2*cov_beta[i,i+1]) / (break_x[i+1] - break_x[i])
方案2:获取分段内任意点的预测标准误
直接调用PWLF自带的预测方法即可,传入对应分段内的x坐标:y_pred, y_se = my_pwlf.predict(x_list, se=True)
返回的y_se就是对应x点的预测标准误差。
内容的提问来源于stack exchange,提问作者TK99
相关产品推荐
相关产品推荐

