我正在使用数据文件,里面的观察是随机值。在这种情况下,我不知道x的分布(我的观察)。我正在使用函数密度来估计密度,因为我必须应用核估计。
T=density(datafile[,1],bw=sj,kernel="epanechnikov")
在此之后我必须整合它,因为我正在寻找分位数(类似于VaR,95%)。 为此,我有两个选择:
ecdf()
quantile()
现在我有了分位数95的值,但这是内核估计的数据。
是否有可用于了解原始数据的分位数95的值的函数?
我注意到这是一个未知的分布,为此我想将非参数方法想象为Newton,就像SAS solve()
中的那个
答案 0 :(得分:6)
您可以使用quantile()
。以下是使用随机数据的示例:
> data<-runif(1000)
> q<-quantile(data, .95)
> q
95%
0.9450324
这里,数据均匀分布在0和1之间,因此第95百分位数接近0.95。
执行逆变换:
> ecdf(data)(q)
[1] 0.95
答案 1 :(得分:0)
不知道这是否与您有关... 但是我认为什么可能对上面的答案有帮助
data <- rnorm(1000)
my_ecdf <- ecdf(data)
my_ecdf_inv <- function(x) {quantile(data, x)}
my_ecdf_inv(my_ecdf(2))
x <- seq(-3, 3, 0.1)
plot(x, sapply(sapply(x, my_ecdf),my_ecdf_inv))