I'm looking for an R code that would help me find the quantile when the pdf is given numerically. That is, say my data is
x = c(0.00,0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00)
and the corresponding pdf values are
pdf = c(0.000000000,1.221759375,1.968300000,2.349028125,2.457600000,2.373046875,2.160900000,1.874315625,1.555200000,1.235334375,0.937500000,0.676603125,0.460800000,0.292621875,0.170100000,0.087890625,0.038400000,0.012909375,0.002700000,0.000178125,0.000000000)
I'd like to find the 95th quantile. I found an example here, however, the pdf is considered to be a function in this example, which is not my case. Thank you ahead for any help.
You can calculate an approximate 95%-quantile according to the definition of quantile, e.g.,
> max(x[cumsum(pdf) <= 0.95 * sum(pdf)])
[1] 0.55
Or, you can try approxfun
like below
> y <- cumsum(pdf) / sum(pdf)
> k <- !duplicated(y)
> approxfun(y[k],x[k])(0.95)
[1] 0.5577952
Below is the visualization
plot(x[k], y[k], type = "b")
abline(v = q)
grid(nx = 19, ny = 19, lwd = 2)