使用人口栅格对 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
拟合一个简单的泊松模型,看看你的数据与建议的模型有何不同,以了解攻击行为。
我有两个使用 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
拟合一个简单的泊松模型,看看你的数据与建议的模型有何不同,以了解攻击行为。