自定义平滑内核
Custom smoothing kernel
我想在 spatstat 中使用 Smooth.ppp 来根据特定函数计算一种“移动平均线”。我想使用的特定距离相关权重由函数 wt 给出;为简单起见[=12=]
wt=function(x,y) exp(-1e5*(x-y)^2)
在 wt=kernel 的极端情况下,我预计不会进行平滑(即输入标记 = 平滑估计)。我想知道我对内核及其应用方式有何误解?
remotes::install_github("spatstat/spatstat.core")
n=4; PPP=ppp(rep(1:n,each=n),rep(1:n,n), c(1,n),c(1,n), marks=1:n^2);
smo=Smooth.ppp(PPP,cutoff=2,kernel=wt,at="points")
rbind(marks(PPP),smo)
(我正在使用最新的 spatstat 版本以允许在使用自定义内核的点进行估计)
这个例子可能被误解了。
内核应该是 R 语言中的 function(x, y)
,它在以原点 (0,0)
为中心的空间位置 (x,y)
处给出内核的值。通常内核在 (x,y)
接近 (0,0)
时取其最大值,而在 (x,y)
远离 (0,0)
时降至零。
您的示例中定义的函数 wt
沿对角线 x = y 的值接近 1,并在远离对角线时迅速降至零。
这很不寻常。这意味着位置 (a,b)
处的数据点将沿着无限直线 'smoothed' 通过具有单位斜率的数据点,方程式 y = x + b-a,而不是像通常那样在靠近 (a,b)
的区域进行平滑处理。
示例点模式 PPP
由沿对角线 y=x.
的点组成
数据点的平滑值是所有数据点标记值的加权平均值,权重与核值成正比。在您的示例中,每对数据点 wt(x1-x2, y1-y2)
的内核值等于 1,因为所有数据和查询点都位于斜率为 1 的同一条直线上。
这个例子中的核权重都相等,所以平滑后的值应该都等于平均标记值,如果leaveoneout=FALSE
,如果leaveoneout=TRUE
那么数据点的平滑值i
是除i
.
点以外的数据点处标记值的平均值
我想在 spatstat 中使用 Smooth.ppp 来根据特定函数计算一种“移动平均线”。我想使用的特定距离相关权重由函数 wt 给出;为简单起见[=12=]
wt=function(x,y) exp(-1e5*(x-y)^2)
在 wt=kernel 的极端情况下,我预计不会进行平滑(即输入标记 = 平滑估计)。我想知道我对内核及其应用方式有何误解?
remotes::install_github("spatstat/spatstat.core")
n=4; PPP=ppp(rep(1:n,each=n),rep(1:n,n), c(1,n),c(1,n), marks=1:n^2);
smo=Smooth.ppp(PPP,cutoff=2,kernel=wt,at="points")
rbind(marks(PPP),smo)
(我正在使用最新的 spatstat 版本以允许在使用自定义内核的点进行估计)
这个例子可能被误解了。
内核应该是 R 语言中的 function(x, y)
,它在以原点 (0,0)
为中心的空间位置 (x,y)
处给出内核的值。通常内核在 (x,y)
接近 (0,0)
时取其最大值,而在 (x,y)
远离 (0,0)
时降至零。
您的示例中定义的函数 wt
沿对角线 x = y 的值接近 1,并在远离对角线时迅速降至零。
这很不寻常。这意味着位置 (a,b)
处的数据点将沿着无限直线 'smoothed' 通过具有单位斜率的数据点,方程式 y = x + b-a,而不是像通常那样在靠近 (a,b)
的区域进行平滑处理。
示例点模式 PPP
由沿对角线 y=x.
数据点的平滑值是所有数据点标记值的加权平均值,权重与核值成正比。在您的示例中,每对数据点 wt(x1-x2, y1-y2)
的内核值等于 1,因为所有数据和查询点都位于斜率为 1 的同一条直线上。
这个例子中的核权重都相等,所以平滑后的值应该都等于平均标记值,如果leaveoneout=FALSE
,如果leaveoneout=TRUE
那么数据点的平滑值i
是除i
.