kernel2D.R中内核的sd值

时间:2018-07-30 15:52:23

标签: r kernel-density spatstat

此问题与kernel2D.R源中的spatstat文件有关,请参阅https://github.com/spatstat/spatstat/blob/master/R/kernel2d.R

我想知道sd中内核的.Spatstat.2D.KernelTable值是如何计算的。

起初,我认为给定的标准偏差应该类似于

$\sqrt{ \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} (K(x,y))^2 dx dy }$

因为平均值是0。 (对不起,但是没有声誉点,他们将不允许我发布呈现的公式的图像。但是,我认为,如果仅发布有效的LaTeX代码,我的意图是最清楚的。)但是结果与给定的值不一致

例如

quartic=list(
    d  = function(x,y, ...) { (3/pi) * pmax(1 - (x^2+y^2), 0)^2 },
    sd = 1/sqrt(8),
    hw = 1,
    symmetric = TRUE)

上面的公式给出3/sqrt(5*pi)而不是1/sqrt(8)

然后我在kernel2D.R的注释中看到它是sd = standard deviation of x coordinate, for standardised kernel

但是我不明白这意味着什么。您可以提供用于计算这些值的公式吗?


我需要此信息,因为我试图使用自己的内核函数作为density.ppp函数的参数。我想用自己的函数重现kernel = 'gaussian'kernel = 'quartic'的结果。当使用bw来应用'string kernels'的带宽参数const = bw/sd时,我必须调整自己编写的函数,使其sd的值为1(因为我没有提供它们为列表,我认为density.ppp无法处理该列表)。 我知道,如果将.Spatstat.2D.KernelTable中的内核函数乘以sd^2,然后将xy除以sd,我将得到正确的匹配。 (因为这是bw = 1会发生的情况)。但是就sd的数学公式而言,我不知道这是从哪里来的。


顺便说一句:我要非常感谢spatstat所做的所有工作,使其成为对我来说最有用的工具。

1 个答案:

答案 0 :(得分:0)

哦,很抱歉,这毕竟很愚蠢...

标准差的公式缺少x^2。它应该显示为

$\sqrt{ \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x^2 (K(x,y))^2 dx dy }$

然后一切都准备就绪。

很抱歉... = /