使用人口栅格对 r 中的数据进行归一化

Normalizing data in r using population raster

我有两个使用 spatstat 创建的像素图像,一个是由一组点创建的密度图像(使用函数 density.ppp),另一个是由人口栅格。我想知道是否有办法使用人口栅格对密度图像进行归一化。基本上,我有一个包含美国 10000 多个网络攻击起源位置的数据集,我希望使用 spatstat 函数来调查空间模式。然而,一个明显的问题是,人口较多的地区由于人口较多,网络攻击的源头也较多。我想使用人口栅格来解决这个问题。任何想法,将不胜感激。

正如@RHA 的评论所说:第一个解决方案是简单地除以强度。

我没有你的数据,所以我会制作一些看起来相似的数据。 Chorley 数据集有两种类型的癌症病例。我将估计肺癌的强度并将其用作您给定的人口密度。然后对喉部病例的密度估计作为您对网络攻击强度的估计:

library(spatstat)
# Split into list of two patterns
tmp <- split(chorley)
# Generate fake population density
pop <- density(tmp$lung)
# Generate fake attack locations
attack <- tmp$larynx
# Plot the intensity of attacks relative to population
plot(density(attack)/pop)

或者,您可以使用反人口密度作为 density.ppp 中的权重:

plot(density(attack, weights = 1/pop[attack]))

这可能是首选方式,您基本上可以说攻击发生在例如人口密度为 10 的地方仅 "counts" 发生在人口密度为 5 的地方的攻击事件的一半。

我不确定你到底想用你的分析做什么,但也许你应该考虑用 ppm 拟合一个简单的泊松模型,看看你的数据与建议的模型有何不同,以了解攻击行为。