考虑模型中的空间自相关
Accounting for Spatial Autocorrelation in Model
我正在尝试解释 R 模型中的空间自相关。每个观测值都是一个国家/地区,我拥有该国家/地区的平均纬度和经度。这是一些示例数据:
country <- c("IQ", "MX", "IN", "PY")
long <- c(43.94511, -94.87018, 78.10349, -59.15377)
lat <- c(33.9415073, 18.2283975, 23.8462264, -23.3900255)
Pathogen <- c(10.937891, 13.326284, 12.472374, 12.541716)
Answer.values <- c(0, 0, 1, 0)
data <- data.frame(country, long, lat, Pathogen, Answer.values)
我知道空间自相关是一个问题(Moran's i 在整个数据集中很重要)。这是我正在测试的模型(答案值(一个 0/1 变量)~ 病原体流行率(一个连续变量))。
model <- glm(Answer.values ~ Pathogen,
na.action = na.omit,
data = data,
family = "binomial")
我如何用这样的数据结构来解释空间自相关?
对此有很多 可能的答案。一种简单的方法是使用 mgcv::gam()
添加空间平滑器。您的大部分模型将保持不变:
library(mgcv)
gam(Answer.values ~ Pathogen +s([something]),
family="binomial",
data=data)
其中 s([something])
是某种形式的平滑空间项。三个 possible/reasonable 选项是:
- 一个球形样条(
?mgcv::smooth.construct.sos.smooth.spec
),它以lat/long作为输入;如果 (1) 您在地球表面的很大一部分上有数据(因此构造 2D 平面 空间平滑的平滑器不太合理),这将很有用; (2) 你想以连续的方式计算位置之间的距离
- 一个马尔可夫随机场 (
?mgcv::smooth.construct.mrf.smooth.spec
)。这本质上是离散 1 阶自回归结构的空间模拟(即国家 直接 仅与其直接邻国相关,但您可以选择对其进行定义)。为此,您必须以某种方式提出 neighborhood list(即国家列表,其中元素是原始国家的邻国列表)。你可以随心所欲地这样做,例如通过在地理上找到最近的邻居。 (查看 R 中空间 statistics/spatial 数据分析的一些介绍。)(另一方面,如果您正在测试 Moran's I,那么您可能已经想出了一些方法来识别一阶邻居.. .)
- 如果您愿意将 lat/long 视为二维平面中的坐标 ,那么您有很多平滑基础的选择,例如
?mgcv::smooth.construct.gp.smooth.spec
(高斯过程平滑器,其中包括大多数标准空间自相关模型作为特例)
A helpful link 用于快速了解 R 中的 GAM ...
我正在尝试解释 R 模型中的空间自相关。每个观测值都是一个国家/地区,我拥有该国家/地区的平均纬度和经度。这是一些示例数据:
country <- c("IQ", "MX", "IN", "PY")
long <- c(43.94511, -94.87018, 78.10349, -59.15377)
lat <- c(33.9415073, 18.2283975, 23.8462264, -23.3900255)
Pathogen <- c(10.937891, 13.326284, 12.472374, 12.541716)
Answer.values <- c(0, 0, 1, 0)
data <- data.frame(country, long, lat, Pathogen, Answer.values)
我知道空间自相关是一个问题(Moran's i 在整个数据集中很重要)。这是我正在测试的模型(答案值(一个 0/1 变量)~ 病原体流行率(一个连续变量))。
model <- glm(Answer.values ~ Pathogen,
na.action = na.omit,
data = data,
family = "binomial")
我如何用这样的数据结构来解释空间自相关?
对此有很多 可能的答案。一种简单的方法是使用 mgcv::gam()
添加空间平滑器。您的大部分模型将保持不变:
library(mgcv)
gam(Answer.values ~ Pathogen +s([something]),
family="binomial",
data=data)
其中 s([something])
是某种形式的平滑空间项。三个 possible/reasonable 选项是:
- 一个球形样条(
?mgcv::smooth.construct.sos.smooth.spec
),它以lat/long作为输入;如果 (1) 您在地球表面的很大一部分上有数据(因此构造 2D 平面 空间平滑的平滑器不太合理),这将很有用; (2) 你想以连续的方式计算位置之间的距离 - 一个马尔可夫随机场 (
?mgcv::smooth.construct.mrf.smooth.spec
)。这本质上是离散 1 阶自回归结构的空间模拟(即国家 直接 仅与其直接邻国相关,但您可以选择对其进行定义)。为此,您必须以某种方式提出 neighborhood list(即国家列表,其中元素是原始国家的邻国列表)。你可以随心所欲地这样做,例如通过在地理上找到最近的邻居。 (查看 R 中空间 statistics/spatial 数据分析的一些介绍。)(另一方面,如果您正在测试 Moran's I,那么您可能已经想出了一些方法来识别一阶邻居.. .) - 如果您愿意将 lat/long 视为二维平面中的坐标 ,那么您有很多平滑基础的选择,例如
?mgcv::smooth.construct.gp.smooth.spec
(高斯过程平滑器,其中包括大多数标准空间自相关模型作为特例)
A helpful link 用于快速了解 R 中的 GAM ...