问题标签 [tweedie]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
826 浏览

r - 使用 lightgbm Tweedie 目标将 SHAP 值从原始单位转换为原生单位?

Shapley Additive Explanations(SHAP 值)的效用是了解每个特征如何对模型的预测做出贡献。对于某些目标,例如以 RMSE 作为目标函数的回归,SHAP 值采用标签值的本机单位。例如,如果估算住房成本,SHAP 值可以表示为美元。正如您将在下面看到的,并非所有目标函数都是如此。特别是,Tweedie 回归目标不会产生原生单位的 SHAP 值。这是一个解释问题,因为我们想知道住房成本如何受到 +/- 美元特征的影响。

鉴于这些信息,我的问题是:在解释具有 Tweedie 回归目标的模型时,我们如何将每个单独特征的 SHAP 值转换为目标标签的数据空间?

我不知道目前有任何包实现了这种转换。这在 shap 作者自己发布的包中仍未解决。

我在下面用 lightgbm 的 R 实现来说明这个问题的细节:

原始帖子和编辑

我对 SHAP 值的理解是,它们在进行回归时采用标签/响应的本机单位,并且 SHAP 值的总和近似于模型的预测。

我正在尝试使用 Tweedie 回归目标提取 LightGBM 包中的 SHAP 值,但发现 SHAP 值不在标签的本机单位中,并且它们不与预测值相加。

看来它们必须取幂,这是正确的吗?

旁注:我了解 SHAP 值矩阵的最后一列代表基本预测,必须添加。

可重现的例子:

编辑

操作的顺序是先求和,然后对 SHAP 值求幂,这将为您提供本机单位的预测。虽然我仍然不清楚如何将特征级别值转换为原生响应单元。

0 投票
1 回答
394 浏览

poisson - 有没有办法在 Catboost 中对 Gamma 分布式响应变量进行回归?

我正在研究保险模型,我想使用 Catboost 梯度提升算法运行严重性和频率模型。问题在于,根据文献,严重性模型假设 Gamma 分布响应变量,而根据 Catboost 文档,不支持 Gamma 目标模型。有没有办法利用现有目标之一(例如 Poisson 或 Tweedie)来实现这一目标?

0 投票
0 回答
88 浏览

tweedie - Python statsmodelsestimate_tweedie_power 错误

运行estimate_tweedie_power 时出现此错误:

TypeError:不支持的操作数类型 -:'float' 和 'GLMResultsWrapper'。

任何人都知道如何解决它?这是我的代码:

0 投票
0 回答
24 浏览

python - 包括权重会导致模型(GLM)偏低?

我正在构建一个 GLM 来使用 python 中的 statsmodels 包来预测保险损失。

目标变量是纯保费(损失/风险敞口),其中风险敞口是保单生效的一年中的一小部分。

来自关于 GLM 的教科书:

“代表更多风险的行应该在模型系数的估计中具有更大的权重,因为它们的结果值基于更多的数据。GLM 通过允许用户包含权重变量来适应这一点。”

出于这个原因,我在 GLM 规范(如下)中包含了“曝光”作为分析权重:

为了评估模型性能,我将预测(mod.fittedvalues)从最低到最高排序,创建 10 个相同曝光的 bin,并比较每个 bin 的平均拟合值和实际值。在下图中,蓝线代表模型预测(在训练集上),红线代表实际值。我的问题是生成的模型总是偏低:

验证图

如果我var_weights = data["Exposure"]从模型规范中删除,我不再有这个问题,但我不认为这是正确的方法。

任何见解将不胜感激。

0 投票
0 回答
48 浏览

r - 使用包 DGLM 拟合 tweedie 模型时出错

在获得拟合 tweedie 分布的结果后,我试图将 dglm 拟合到我的数据中。数据为零膨胀(约 92%)。

y = t 年保单持有人 i 的总保险损失。

x= 5 个值为 0 和 1 的投保人类型,值为 0 和 1 的指示变量,以及两个带对数的连续变量。

尝试拟合 dglm 的代码如下:

dglm <- dglm(y~x,~x, family=tweedie(link.power=0, var.power=1.5), data=data)

然后得到错误 *p:1.5

while (abs(m2loglikold - m2loglik)/(abs(m2loglikold) + 1) > epsilon && 中的错误:需要 TRUE/FALSE 的地方缺少值*

我尝试输入从 tweedie 分布中获得的 p.max,如下所示:

dglm <- dglm(y~x,~x, family=tweedie(link.power=0, var.power=p.max), data=data)

现在得到不同的错误 *p:p.max

匹配错误(tweedie.p, c(0, 1, 2, 3), nomatch = 0):“匹配”需要向量参数*

我请求帮助解释这些错误和如何避免它们的指导,拜托。谢谢!

0 投票
1 回答
87 浏览

r - 如何使用 R 包在 Tweedie GLM 中将色散参数设置为等于一(phi = 1)

我想将 Tweedie GlM 拟合到响应变量,但对于我的数据中的所有记录,分散参数 (phi) 设置为 1。因此,除了 phi 之外,所有参数都使用最大似然估计器进行估计。

谢谢你。

0 投票
0 回答
40 浏览

r - 如何在 R 包中将 Copula 拟合到 Tweedie Marginals

我感兴趣的数量是定义为yi = (y itj ) 的保险损失向量,其中 i = 投保人,t = 5 年,j = 2(保险风险)。

我试图模拟两种风险的损失成本之间的依赖关系。这里存在两个依赖来源,第一个是 yitj1 和 yitj2 之间的横截面相关性以及 yitj 在 t 上的序列相关性。

我已经为半连续变量(yitj1 和 yitj2)拟合了 Tweedie GLM(使用 tweedie 包),其概率质量为零,对应于零保险索赔,并且正连续分量对应于索赔数量,条件是索赔数量我得到了 mu、p 和 phi 的估计值。

两个变量的汇总统计数据如下:

拟合值的汇总统计数据为:

我需要帮助:

  1. 指定并发相关和序列相关
  2. 为高斯 Copula 指定色散矩阵。
  3. 使用边缘估计器的推理将高斯 Copula 拟合到 Tweeedie 边缘。

对于投保人 i,在 Inference for Margins Estimation 方法的第二步中需要最大化的对数似然函数为:log-likelihood function

我试图通过参考https://www.r-bloggers.com/2016/03/how-to-fit-a-copula-model-in-r-heavily-revised-part-2-fitting-来拟合 copula系词/

但结果并不合理。

这是我的代码

我将不胜感激任何帮助。

谢谢你。

0 投票
0 回答
27 浏览

apache-spark - 如何在 PySpark 中使用 Tweedie 系列正确定义 GLM?

我正在尝试将文档中的简单 GLM 示例改编为使用 Tweedie:

这给了我以下错误:

然而,根据文档,在使用 Tweedie 时,您似乎应该保持link未定义。所以我在这里很困惑。有没有人真的使用 PySpark(或任何版本的 Spark)进行了适当的 Tweedie 回归?这些文档也让我对使用 Tweedie之间variancePower和使用时的区别感到困惑。linkPower我应该使用哪个?哪一个p在 Tweedie 发行版中?

0 投票
0 回答
29 浏览

glm - 将权重/偏移与非参数模型结合

我在 R 中建模纯溢价。我读过纯溢价通常使用 Tweedie 分布 (glm) 建模。通常会向模型添加偏移量或权重,例如曝光。我正在研究纯溢价的三个非参数模型:glmnet、回归树和随机森林。我的问题:如何将权重/偏移量与非参数模型结合起来?我通常在 R 中用于建模的两个包是 caret 和 tidymodels。

谢谢!