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