核密度估计 - 将图例比例更改为每平方米密度
Kernel Density Estimation - change legend scale to density per m²
我已经为 R 中的一个物种计算了核密度估计 (KDE),我正在使用 ants 数据集(蚂蚁巢) 来自 spatstat 为简单起见,我想要一个图例比例尺,其中包含每个测量单位(例如平方米)的蚂蚁巢穴数量。如果我理解正确,KDE 图例显示的概率密度介于 0 和 1 之间,我如何将此概率转换为 "real-world" 密度,例如每平方米的点数(蚂蚁巢)?
enter image description here
举个例子:
require("spatstat")
data(ants)
dat <- ants
# estimate bandwith
h_cox <- bw.diggle(dat)
# calculate KDE
kd_cox <- density(dat, h_cox, diggle=TRUE, se=TRUE, eps=diff(dat$window$xrange)/500)
# Plot KDE, contours and points
plot(kd_cox$estimate, main="KDE ants bw.diggle")
contour(kd_cox$estimate, labels="", add=TRUE, col=gray(.5))
points(dat)
感谢您使用示例数据提出明确的问题。
library(spatstat)
原始 ants
数据以 0.5 英尺为单位给出:
ants
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-25, 803] x [-49, 717] units (one unit = 0.5 feet)
因此原始代码中的代码 post 给出了点数的强度
每“0.5 平方英尺”,即每“四分之一平方英尺”的点数。
使用不带参数的 rescale
得到通常的脚:
ants_ft <- rescale(ants)
ants_ft
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-12.5, 401.5] x [-24.5, 349.5] feet
使用 rescale
与转换系数和名称来获得米:
ants_m <- rescale(ants_ft, 3.2808399, "m")
ants_m
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-3.81, 122.3772] x [-7.4676, 106.5276] m
研究区域面积及每平方米平均点数:
area(ants_m)
#> [1] 9962.028
intensity(ants_m)
#> Cataglyphis Messor
#> 0.002911054 0.006825920
intensity(unmark(ants_m))
#> [1] 0.009736973
用 dat <- ants_m
重新运行原始代码可以得到
每平方米点数的估计强度:
dat <- ants_m
# estimate bandwith
h_cox <- bw.diggle(dat)
#> Warning: Berman-Diggle Cross-Validation criterion was minimised at right-hand
#> end of interval [0, 7.11]; use argument 'hmax' to specify a wider interval for
#> bandwidth 'sigma'
# calculate KDE
kd_cox <- density(dat, h_cox, diggle=TRUE, se=TRUE, eps=diff(dat$window$xrange)/500)
# Plot KDE, contours and points
plot(kd_cox$estimate, main="KDE ants bw.diggle")
contour(kd_cox$estimate, labels="", add=TRUE, col=gray(.5))
points(dat)
我已经为 R 中的一个物种计算了核密度估计 (KDE),我正在使用 ants 数据集(蚂蚁巢) 来自 spatstat 为简单起见,我想要一个图例比例尺,其中包含每个测量单位(例如平方米)的蚂蚁巢穴数量。如果我理解正确,KDE 图例显示的概率密度介于 0 和 1 之间,我如何将此概率转换为 "real-world" 密度,例如每平方米的点数(蚂蚁巢)?
enter image description here
举个例子:
require("spatstat")
data(ants)
dat <- ants
# estimate bandwith
h_cox <- bw.diggle(dat)
# calculate KDE
kd_cox <- density(dat, h_cox, diggle=TRUE, se=TRUE, eps=diff(dat$window$xrange)/500)
# Plot KDE, contours and points
plot(kd_cox$estimate, main="KDE ants bw.diggle")
contour(kd_cox$estimate, labels="", add=TRUE, col=gray(.5))
points(dat)
感谢您使用示例数据提出明确的问题。
library(spatstat)
原始 ants
数据以 0.5 英尺为单位给出:
ants
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-25, 803] x [-49, 717] units (one unit = 0.5 feet)
因此原始代码中的代码 post 给出了点数的强度
每“0.5 平方英尺”,即每“四分之一平方英尺”的点数。
使用不带参数的 rescale
得到通常的脚:
ants_ft <- rescale(ants)
ants_ft
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-12.5, 401.5] x [-24.5, 349.5] feet
使用 rescale
与转换系数和名称来获得米:
ants_m <- rescale(ants_ft, 3.2808399, "m")
ants_m
#> Marked planar point pattern: 97 points
#> Multitype, with levels = Cataglyphis, Messor
#> window: polygonal boundary
#> enclosing rectangle: [-3.81, 122.3772] x [-7.4676, 106.5276] m
研究区域面积及每平方米平均点数:
area(ants_m)
#> [1] 9962.028
intensity(ants_m)
#> Cataglyphis Messor
#> 0.002911054 0.006825920
intensity(unmark(ants_m))
#> [1] 0.009736973
用 dat <- ants_m
重新运行原始代码可以得到
每平方米点数的估计强度:
dat <- ants_m
# estimate bandwith
h_cox <- bw.diggle(dat)
#> Warning: Berman-Diggle Cross-Validation criterion was minimised at right-hand
#> end of interval [0, 7.11]; use argument 'hmax' to specify a wider interval for
#> bandwidth 'sigma'
# calculate KDE
kd_cox <- density(dat, h_cox, diggle=TRUE, se=TRUE, eps=diff(dat$window$xrange)/500)
# Plot KDE, contours and points
plot(kd_cox$estimate, main="KDE ants bw.diggle")
contour(kd_cox$estimate, labels="", add=TRUE, col=gray(.5))
points(dat)