You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中spdep包lagsarlm模型predict与fitted.value结果差异及预测原理咨询

空间杜宾模型(SDM)中fitted.values与predict的差异及预测原理

模型基础

空间杜宾混合模型(即lagsarlm(type="mixed"))的核心形式为:

y = ρWy + Xβ + WXθ + ε

其中:

  • ρ:因变量空间自回归系数
  • W:空间权重矩阵(对应输入的wlist)
  • X:自变量矩阵
  • β:自变量系数
  • θ:自变量空间滞后项系数
  • ε:随机误差项

m1$fitted.values的计算逻辑

fitted.values是模型估计过程中生成的拟合值,计算逻辑直接依赖原始观测数据:
将估计得到的ρ、β、θ代入模型右侧,使用**原始因变量的空间滞后项Wy**计算,即:

fitted.values = ρWy + Xβ + WXθ

它本质是用已知的y计算模型右侧的预测部分,最终通过y - residuals推导而来(其中residuals = y - fitted.values)。

predict.lagsarlm针对SDM的预测原理

predict()函数的核心是无约束预测——完全不依赖原始观测的y值,通过联立方程求解预测值ŷ,具体逻辑如下:
假设预测值ŷ满足模型结构,即:

ŷ = ρWŷ + Xβ + WXθ

将含ŷ的项移至左侧整理,得到:

ŷ = (I - ρW)⁻¹(Xβ + WXθ)

其中I为单位矩阵,(I - ρW)⁻¹是空间变换矩阵的逆矩阵。

对于内样本预测(即newdata为原始数据集),predict()基于上述公式计算,完全不使用原始y值——这正是它与fitted.values产生差异的核心原因:

  • fitted.values依赖原始y的空间滞后项Wy
  • predict()通过矩阵逆运算,直接求解不依赖原始y的预测值

验证差异的代码示例

可以通过以下代码验证两者的计算逻辑:

# 提取模型估计参数
rho <- m1$rho
beta_coef <- coef(m1)[names(coef(m1)) != "rho"]

# 构造自变量矩阵与自变量空间滞后矩阵
X_mat <- model.matrix(m1, data = d)[, -1]  # 移除截距项
WX_mat <- as.matrix(wlist %*% X_mat)

# 计算fitted.values的等价结果
fitted_eq <- rho * (wlist %*% d$y) + X_mat %*% beta_coef[1:ncol(X_mat)] + WX_mat %*% beta_coef[(ncol(X_mat)+1):length(beta_coef)]

# 计算predict的等价结果
I_mat <- diag(nrow(d))
W_mat <- as.matrix(wlist)
predict_eq <- solve(I_mat - rho * W_mat) %*% (X_mat %*% beta_coef[1:ncol(X_mat)] + WX_mat %*% beta_coef[(ncol(X_mat)+1):length(beta_coef)])

# 对比结果
all.equal(m1$fitted.values, as.vector(fitted_eq))  # 应返回TRUE
all.equal(pred, as.vector(predict_eq))  # 应返回TRUE

内容的提问来源于stack exchange,提问作者Chenghao Duan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:10:15