通过`density.ppp`向内核函数发出参数传递

时间:2018-08-09 02:18:16

标签: r kernel-density spatstat

我目前正在大量使用density.ppp函数,并使用我自己设计的不同内核函数来调用它。 为此,我需要通过density.ppp arglist通过...将一些参数传递给我的内核函数。

在一种情况下,这是行不通的,即如果我想通过边缘校正来计算at = "points"

densitypointsengine中,

# evaluate edge correction weights at points 
  if(edge) {
    win <- x$window
    if(isgauss && is.null(varcov) && win$type == "rectangle") {
      # evaluate Gaussian probabilities directly
      xr <- win$xrange
      yr <- win$yrange
      xx <- x$x
      yy <- x$y
      xprob <-
        pnorm(xr[2L], mean=xx, sd=sigma) - pnorm(xr[1L], mean=xx, sd=sigma)
      yprob <-
        pnorm(yr[2L], mean=yy, sd=sigma) - pnorm(yr[1L], mean=yy, sd=sigma)
      edgeweight <- xprob * yprob
    } else {
      edg <- second.moment.calc(x, sigma=sigma,
                                kernel=kernel,
                                scalekernel=scalekernel,
                                what="edge", varcov=varcov)
      edgeweight <- safelookup(edg, x, warn=FALSE)
}

因此,second.moment.calc的调用不支持...中隐藏的其他参数。

我想知道这可能是一个错误还是故意这样做。

1 个答案:

答案 0 :(得分:0)

这是一个错误。到...的呼叫中应该有一个second.moment.calc

它将很快在spatstat的开发版本中修复。