代码之家  ›  专栏  ›  技术社区  ›  MassCorr

r找到最近的凸曲线“低于”一组点

  •  2
  • MassCorr  · 技术社区  · 6 年前

    我有一组点,我想找到凸曲线,这是最近的“低于”这组点。 如下面的例子所示,每个v,w点都在qe曲线的上方。 谢谢你的帮助。

    v<-c(-1,0,0,.5,1.2,1.7,-1,1.7);w<-c(3,0,2,4,3,3.4,1,2.89)
    qe<-seq(min(v),max(v),length.out=10)**2
    plot(v,w)
    lines(seq(min(v),max(v),length.out=10),qe)
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Julius Vainora    6 年前

    你要找的就是 最大凸最小值 . 为了找到它,我们可以使用 gcmlcm 函数来自 fdrtool 包裹。

    首先,我们需要确保每个值只有一个唯一的值 x . 所以,我们替换 w 通过

    w2 <- tapply(w, v, min)
    

    指定的最小值 W 对于每个值 v . (在这种情况下,在 v = 0 仅此而已,我们的结果是

    result <- gcmlcm(x = as.numeric(names(w2)), y = w2, "gcm")
    

    我们可以用它作图

    lines(result$x.knots, result$y.knots)
    

    enter image description here

    它在更复杂的情况下也能完美地工作:

    enter image description here