在累积频率图上找到给定 y 的 x
Find x given y on cumulative frequency graph
我正在从内核平滑分布中导出 CDF
这是我的设置
library("DiagTest3Grp", lib.loc='~/R/win-library/3.2")
data <- c(34,46,47,48,52,53,55,56,56,56,57,58,59,59,68)
bw <- BW.ref(data)
x0 <- seq(0, 100, .1)
KS.cdfvec <- Vectorize(KernelSmoothing.cdf, vectorize.args = "c0")
x0.cdf <- KS.cdfvec(xx = data, c0 = x0, bw = bw)
plot(x0, x0.cdf, type = "l")
生成图表
然而,我太菜鸟了,我不知道如何在给定 y 的情况下推导 x(反之亦然),我希望因为它是一个简单的 x,y 图,所以我只需要查找横截面
给定 CDF 中的值 y
,您需要 pdf 中的对应值 x
对应于此。你可以只使用 approx
,但是因为在 approx
你
指定 yout
而不是 xout
,只需翻转输入
> approx(y=x0, x=x0.cdf, xout=0.8)
$x
[1] 0.8
$y
[1] 58.95378
记住我们翻转了输入,所以这意味着 CDF 中的值 0.8
这对应于 x=58.95378
的值。这还假设 CDF 线性插值的这个小区域是一个合理的近似值。
如果我们有一个值 x
并且只需要 CDF 的关联值,则不需要参数翻转,因此您可以只使用
> approx(x=x0, y=x0.cdf, xout=55)
$x
[1] 55
$y
[1] 0.5090248
尝试分位数...
> data <- c(34,46,47,48,52,53,55,56,56,56,57,58,59,59,68)
> quantile(ecdf(data), .5)
50%
56
我正在从内核平滑分布中导出 CDF
这是我的设置
library("DiagTest3Grp", lib.loc='~/R/win-library/3.2")
data <- c(34,46,47,48,52,53,55,56,56,56,57,58,59,59,68)
bw <- BW.ref(data)
x0 <- seq(0, 100, .1)
KS.cdfvec <- Vectorize(KernelSmoothing.cdf, vectorize.args = "c0")
x0.cdf <- KS.cdfvec(xx = data, c0 = x0, bw = bw)
plot(x0, x0.cdf, type = "l")
生成图表
然而,我太菜鸟了,我不知道如何在给定 y 的情况下推导 x(反之亦然),我希望因为它是一个简单的 x,y 图,所以我只需要查找横截面
给定 CDF 中的值 y
,您需要 pdf 中的对应值 x
对应于此。你可以只使用 approx
,但是因为在 approx
你
指定 yout
而不是 xout
,只需翻转输入
> approx(y=x0, x=x0.cdf, xout=0.8)
$x
[1] 0.8
$y
[1] 58.95378
记住我们翻转了输入,所以这意味着 CDF 中的值 0.8
这对应于 x=58.95378
的值。这还假设 CDF 线性插值的这个小区域是一个合理的近似值。
如果我们有一个值 x
并且只需要 CDF 的关联值,则不需要参数翻转,因此您可以只使用
> approx(x=x0, y=x0.cdf, xout=55)
$x
[1] 55
$y
[1] 0.5090248
尝试分位数...
> data <- c(34,46,47,48,52,53,55,56,56,56,57,58,59,59,68)
> quantile(ecdf(data), .5)
50%
56