使用expectreg估计预期“束”的条件密度

问题描述 投票:0回答:1

(请标记“expectreg” - 没有代表)

这个框架和包似乎或多或少存在于阴影中,但我要在这里碰碰运气。

我正在尝试估计我提供的 x 值处的非参数分布 Y|X。我正在使用 kaggle 上的“Allstate Claims Severity”数据集 - 手动下载并提取到我的环境中用于此 MRE。或者可以找其他资料。

library(expectreg); library(dplyr); library(ggplot2);

dat <- read.csv("train.csv") %>% ## from kaggle allstate claim severity
  select(id, cont4, loss) %>%
  slice_sample(n = 5000) %>%
  as_tibble()

m1 <- expectreg.ls(loss ~ rb(cont4, type = "pspline", B_size = 10),
                   estimate = "restricted", # or can use "bundle"
                   smooth = "schall",
                   expectiles = "density",
                   #LAWSmaxCores = 4,
                   data = dat)

现在,从这堆密集的预期中,我想估计变量

loss
在我提供的
cont4
的任意值处的条件分布。我看到两种方法:第一种,
cdf.qp()
接受 'x' 的长度为 1 的向量,但不会返回表现良好的密度......我确信这不是有意的,因为它对于对于该数据和估计的期望值的分布:

## attempt 1 with cdf.qp()
densities <- cdf.qp(m1, x = .3)
## densities$x here is our modeled Y i.e. variable 'loss'
tibble(x = densities$x, y = densities$density) %>%
    ggplot(aes(x, y)) +
    geom_line()

另一种方法

cdf.bundle
需要您使用某种估计方法(“限制”或“捆绑”)。好的...检查返回对象,它似乎包含一个向量
density
定义一个很好的平滑密度函数...但我不确定该密度沿 X 位于何处。该方法没有任何方法来调节值 X 的回报,我不知道这个密度是多少。

## attempt 2, cdf.bundle 
## not sure what is x here, or density for that matter
densities <- cdf.bundle(m1)
tibble(x = densities$x, y = densities$density) %>%
    ggplot(aes(x, y)) +
    geom_line()

注意:密度 $x 似乎不是协变量 X

cont4
,单位不同。它也与
cdf.qp
返回的 $x 不同,它是因变量 Y (
loss
)。

希望有人足够熟悉这个包来回答我是否遗漏了一些东西,或者它是否不够“完整”,无法提供作者所说的它实现的内容以及作者在他们的一些论文中展示的内容......(参见第 92 页) “期望平滑:非对称最小二乘的新视角”(如果您可以通过 JSTOR 或其他方式获得它)。)

r probability-density quantile-regression
1个回答
0
投票

当然在发布问题后不久就解决了这个问题,尽管经过了几个小时的代码和测试。

cdf.qp 是正确的方法,尽管由于矩阵运算期间的一些数字溢出问题,我必须修改它以处理比我猜测作者预期的更大规模的响应变量/更多的观察结果。

为了平滑,我需要使用“lambda”参数来平滑密度估计。这些在我的应用程序中非常粗糙(与作者的论文不同)。

© www.soinside.com 2019 - 2024. All rights reserved.