当前位置: 首页 > news >正文

从0开始学习R语言--Day44--LR检验

之前我们提到用LM检验的方式,来判断数据在空间上是否受到邻近数据及其残差的影响,但是LM检验是采用直接计算的方式,只关注了数据的残差平方和,没有数据关于依赖项的考虑,容易被结果误导。

而LR检验虽然在结果上有时候跟LM的计算差不多,但是其意义和公式都是为了考虑邻近数据对数据原本的影响,且更灵活,他在多出来的考虑项外多出一个系数用于判断是否真的受到邻近数据的影响(当然最好是先进行Moran'sI检验,对空间溢出性做判断,这样更严谨,因为有时候只对模型本身参数做计算检验会有幻觉,出现模型本身拟合很好,但是空间溢出性不显著的结果)。

以下是LR-lag和LR-error的例子:

# 加载必要的包
library(spdep)
library(splm)# 生成模拟空间数据(示例)
set.seed(123)
n <- 100  # 100个观测点
coords <- cbind(runif(n), runif(n))  # 随机生成坐标
knn <- knn2nb(knearneigh(coords, k = 4))  # 基于KNN构建空间权重矩阵
W <- nb2listw(knn, style = "W")  # 行标准化权重矩阵# 生成解释变量和被解释变量
X <- rnorm(n)
rho <- 0.5  # 空间自回归系数(模拟真实存在空间滞后效应)
y <- solve(diag(n) - rho * listw2mat(W)) %*% (X * 1.5 + rnorm(n, sd = 0.5))# 估计 SAR 模型(含空间滞后项)
sar_model <- lagsarlm(y ~ X, listw = W, method = "eigen")# 估计 OLS 模型(无空间滞后项)
ols_model <- lm(y ~ X)# LR-lag 检验(比较 SAR 和 OLS)
LR_lag <- 2 * (logLik(sar_model) - logLik(ols_model))
p_value <- pchisq(LR_lag, df = 1, lower.tail = FALSE)  # 自由度df=1(因为只检验rho是否=0)cat("LR-lag 统计量:", LR_lag, "\nP值:", p_value, "\n")
# 如果 P < 0.05,说明空间滞后项显著,SAR 比 OLS 更好# 继续使用之前生成的数据# 估计 SEM 模型(含空间误差项)
sem_model <- errorsarlm(y ~ X, listw = W, method = "eigen")# 估计 OLS 模型(无空间误差项)
ols_model <- lm(y ~ X)# LR-error 检验(比较 SEM 和 OLS)
LR_error <- 2 * (logLik(sem_model) - logLik(ols_model))
p_value <- pchisq(LR_error, df = 1, lower.tail = FALSE)  # 自由度df=1(检验λ是否=0)cat("LR-error 统计量:", LR_error, "\nP值:", p_value, "\n")
# 如果 P < 0.05,说明空间误差项显著,SEM 比 OLS 更好

输出:

LR-lag 统计量: 88.36325 
P值: 5.447355e-21 
LR-error 统计量: 56.78365 
P值: 4.864945e-14 

这里的输出显示两个p值都小于,结果显著,推翻原假设,即不能退化为SAR或SEM模型,要用SDM,即杜宾模型去拟合数据。不过要特别注意的是,有时候会出现Wald检验与LR-lag冲突的现象,建议先看样本量,如果样本量较小(<100),那么优先考虑LR-lag,并检查空间权重矩阵是否合理,用其他的空间权重矩阵验证结果。

http://www.lryc.cn/news/585640.html

相关文章:

  • 文章发布易优CMS(Eyoucms)网站技巧
  • 企业IT管理——医院数据备份与存储制度模板
  • Linux自动化构建工具(一)
  • 多表查询-2-多表查询概述
  • 蔚来测开一面:HashMap从1.7开始到1.8的过程,既然都解决不了并发安全问题,为什么还要进一步解决环形链表的问题?
  • 前端面试专栏-算法篇:23. 图结构与遍历算法
  • USB一线连多屏?Display Link技术深度解析
  • React中Redux基础和路由介绍
  • 适配多场景,工业显示器让操作更高效
  • 前端八股-promise
  • Spring的事务控制——学习历程
  • C++设计秘籍:为什么所有参数都需类型转换时,非成员函数才是王道?
  • Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记
  • (补充)RS422
  • Qt 实现新手引导
  • 分布式推客系统全栈开发指南:SpringCloud+Neo4j+Redis实战解析
  • 【世纪龙科技】几何G6新能源汽车结构原理教学软件
  • 【龙泽科技】新能源汽车维护与动力蓄电池检测仿真教学软件【吉利几何G6】
  • 重构下一代智能电池“神经中枢”:GCKontrol定义高性能BMS系统级设计标杆
  • Java :T extends Comparable<? super T> 和 T extends Comparable<T>的区别
  • 李沐动手学深度学习Pytorch-v2笔记【07自动求导代码实现】
  • 标准化模型格式ONNX介绍:打通AI模型从训练到部署的环节
  • 第十五章 STL(stack、queue、list、set、map容器使用)
  • Nginx 添加 Stream 模块(不覆盖已安装内容)
  • Java 中使用 Stream 将 List 转换为 Map 实战笔记(生产级版)
  • 【Freertos实战】零基础制作基于stm32的物联网温湿度检测(教程非常简易)持续更新中.........
  • 计算机网络第三章(5)——数据链路层《广域网》
  • 【网络编程】KCP——可靠的 UDP 传输协议——的知识汇总
  • 触控屏gt1947
  • 数据治理到底是什么?搞清这四件事,你就彻底明白了!