【问题标题】:Find x given y on cumulative frequency graph在累积频率图上找到给定 y 的 x
【发布时间】:2016-05-01 16:35:03
【问题描述】:

我正在从内核平滑分布导出 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 图,我只需要查找一个横截面

【问题讨论】:

    标签: r cdf


    【解决方案1】:

    给定 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
    

    【讨论】:

    • 感谢您解决了一半的问题。我尝试了 approx(x=y0, x=x0.cdf, y=77) 并得到了 approx(x = y0, x = x0.cdf, y = 77) 中的错误:形式参数“x”也与多个实际参数匹配approx(y=5, x=x0.cdf, xout=y0) 并在 xy.coords(x, y) 中出现错误:'x' 和 'y' 长度不同...我会查找近似函数。我真的很感激!
    • 我对这里的y0 感到困惑,因为您的问题中没有指定它?但是是的,请阅读?approx 的文档。 xy这里对应点的向量,即(x[1], y[1])xout是你想要对应y值的x值
    • 我试图推导出给定 y 的 x 和给定 x 的 y。你向我展示了如何在给定 x 的情况下推导出 y,但反之则不然
    • 啊,这里你直接打电话approx,我相应地编辑了我的回复
    • approx 绝对是一个不错的选择。但是,我想知道是否可以制作一个 x 值表,然后计算 y 值。然后,将 x's 和 y's 放入 data.frame,然后查询与给定 y 相关联的 x。当然,这个估计会比 `approx 更粗略,但是当函数没有像这里给出的 CDF 那样很好地定义时,它可能会起作用。
    【解决方案2】:

    试试分位数...

    > data <- c(34,46,47,48,52,53,55,56,56,56,57,58,59,59,68)
    > quantile(ecdf(data), .5)
        50%
        56
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2019-10-12
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      相关资源
      最近更新 更多