此问题与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
,然后将x
和y
除以sd
,我将得到正确的匹配。 (因为这是bw = 1
会发生的情况)。但是就sd
的数学公式而言,我不知道这是从哪里来的。
顺便说一句:我要非常感谢spatstat
所做的所有工作,使其成为对我来说最有用的工具。
答案 0 :(得分:0)
哦,很抱歉,这毕竟很愚蠢...
标准差的公式缺少x^2
。它应该显示为
$\sqrt{ \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x^2 (K(x,y))^2 dx dy }$
然后一切都准备就绪。
很抱歉... = /