用Expectreg估计期望“束”的条件密度

y53ybaqx  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(101)

(请标记'expectreg' -没有代表)
这个框架和包似乎或多或少存在于阴影中,但我将在这里试试运气。
我在试着估计分布Y|我提供的x值为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()


x1c 0d1x的数据
另一种方法cdf.bundle要求你使用某种估计方法(“限制”或“捆绑”).好的.检查返回对象,它似乎包含一个向量density,定义了一个很好的光滑密度函数.但我不确定这个密度位于沿着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)。
希望有人对这个包足够熟悉,以回答我是否遗漏了什么,或者它只是不够“完整”,无法提供作者所说的实现和作者在他们的一些论文中展示的内容......(如果你可以通过JSTOR或其他东西获得它,请参阅第92页“Expectile smoothing:new perspectives on asymmetric least squares”。

7tofc5zh

7tofc5zh1#

当然,在发布问题后不久就解决了这个问题,尽管经过了许多小时的代码和测试。
qp是正确的方法,尽管我不得不修改它来处理比作者预期的更大规模的响应变量/更多的观察,因为在矩阵运算中存在一些数值溢出问题。
为了平滑,我需要使用“lambda”参数来平滑密度估计。这些在我的应用程序中非常粗糙(不像作者的论文)。

相关问题