微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

考虑模型中的空间自相关

如何解决考虑模型中的空间自相关

我正在尝试解释 R 模型中的空间自相关。每个观测值都是一个我拥有平均纬度和经度的国家。以下是一些示例数据:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.tryb_nauki.TrybNaukiviewmodel"
android:id="@+id/tryb_nauki"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">

<LinearLayout
    android:id="@+id/tryb_nauki_uklad"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical">
</LinearLayout>

我知道空间自相关是一个问题(Moran's i 在整个数据集中很重要)。这是我正在测试的模型(答案值(0/1 变量)~病原体流行率(连续变量))。

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,1,0)

data <- data.frame(country,long,lat,Pathogen,Answer.values)

我将如何解释这样的数据结构的空间自相关性?

解决方法

对此有很多的潜在答案。一种简单的(ish)方法是使用 mgcv::gam() 添加空间平滑器。您的大部分模型将保持不变:

library(mgcv)
gam(Answer.values ~ Pathogen +s([something]),family="binomial",data=data)

其中 s([something]) 是某种形式的平滑空间项。三种可能/合理的选择是:

  • 一个球面样条(?mgcv::smooth.construct.sos.smooth.spec),它以纬度/经度作为输入;如果 (1) 您拥有地球表面很大一部分的数据(因此构建 2D 平面 空间平滑的平滑器不太合理),这将很有用; (2) 您想以连续方式计算位置之间的距离
  • 一个马尔可夫随机场 (?mgcv::smooth.construct.mrf.smooth.spec)。这本质上是离散 1 阶自回归结构的空间模拟(即,国家直接仅与它们的直接邻国相关,无论您选择如何定义)。为了做到这一点,你必须以某种方式想出一个邻里列表(即一个国家列表,其中的元素是与原始国家相邻的国家列表)。您可以随心所欲地执行此操作,例如通过在地理上寻找最近​​的邻居。 (查看 R 中空间统计/空间数据分析的一些介绍。)(另一方面,如果您正在测试 Moran 的 I,那么您可能已经想出了某种方法来识别一阶邻居......)
  • 如果您愿意将纬度/经度视为 2D 平面中的坐标,那么您有很多平滑基础的选择,例如?mgcv::smooth.construct.gp.smooth.spec高斯过程平滑器,其中包括大多数标准空间自相关模型作为特例)

一个 helpful link 用于在 R 中快速使用 GAM ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。