未知累积函数的反函数

时间:2013-01-21 20:22:17

标签: r statistics kernel quantile

我正在使用数据文件,里面的观察是随机值。在这种情况下,我不知道x的分布(我的观察)。我正在使用函数密度来估计密度,因为我必须应用核估计。

T=density(datafile[,1],bw=sj,kernel="epanechnikov")

在此之后我必须整合它,因为我正在寻找分位数(类似于VaR,95%)。 为此,我有两个选择:

ecdf()
quantile()

现在我有了分位数95的值,但这是内核估计的数据。

是否有可用于了解原始数据的分位数95的值的函数?

我注意到这是一个未知的分布,为此我想将非参数方法想象为Newton,就像SAS solve()中的那个

2 个答案:

答案 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))