空间计量模型,包括空间滞后模型、空间误差模型和空间杜宾模型
空间计量模型,包括空间滞后模型(SAR)、空间误差模型(SEM)和空间杜宾模型(SDM)。
空间计量模型基础
空间计量经济学考虑了空间依赖性,即"地理学第一定律":一切事物都与其他事物相关,但近处的事物比远处的事物更相关。
核心概念
- 空间权重矩阵(W):定义空间单元之间的邻接关系
- 空间自相关:观测值在空间上的聚集模式
- 空间异质性:空间关系的非恒定性
三种主要空间计量模型
1. 空间滞后模型 (SAR/SLM)
SAR模型假设因变量的空间滞后项影响当前观测值。
模型形式:
% SAR模型: y = ρWy + Xβ + ε
% 其中 Wy 是空间滞后因变量
MATLAB实现:
% 使用Econometrics Toolbox
% 假设有: y (因变量), X (自变量), W (空间权重矩阵)
% 方法1: 使用spatial_econometrics工具箱(第三方)
if exist('lagsarlm') == 2
% 安装: https://www.spatial-econometrics.com/
results = lagsarlm(y, X, W);
disp('SAR模型结果:');
prt(results);
end
% 方法2: 使用MATLAB内置函数(需要Econometrics Toolbox)
% 创建空间计量模型对象
sarModel = spatialmodel('SAR', W);
% 估计参数
sarEst = estimate(sarModel, y, X);
disp(sarEst);
% 方法3: 手动实现最大似然估计
function [rho, beta, sigma2] = sar_mle(y, X, W)
% 简化的SAR模型MLE估计
n = length(y);
I = eye(n);
% 定义似然函数
loglik = @(params) -0.5 * ( ...
n * log(2*pi*params(3)) + ...
log(det(I - params(1)*W)) - ...
(1/params(3)) * (y - params(1)*W*y - X*params(2:end))' * ...
(y - params(1)*W*y - X*params(2:end)) ...
);
% 初始值
init_params = [0.1; ones(size(X,2),1); 1];
% 优化
options = optimset('Display', 'iter', 'MaxIter', 1000);
est_params = fminunc(@(x) -loglik(x), init_params, options);
rho = est_params(1);
beta = est_params(2:end-1);
sigma2 = est_params(end);
end
2. 空间误差模型 (SEM)
SEM模型假设误差项存在空间自相关。
模型形式:
% SEM模型: y = Xβ + u, u = λWu + ε
MATLAB实现:
% SEM模型估计
function [lambda, beta, sigma2] = sem_mle(y, X, W)
n = length(y);
I = eye(n);
loglik = @(params) -0.5 * ( ...
n * log(2*pi*params(end)) + ...
log(det(I - params(1)*W)) - ...
(1/params(end)) * (y - X*params(2:end-1))' * ...
(I - params(1)*W)' * (I - params(1)*W) * ...
(y - X*params(2:end-1)) ...
);
init_params = [0.1; ones(size(X,2),1); 1];
options = optimset('Display', 'iter', 'MaxIter', 1000);
est_params = fminunc(@(x) -loglik(x), init_params, options);
lambda = est_params(1);
beta = est_params(2:end-1);
sigma2 = est_params(end);
end
% 使用第三方工具箱
if exist('errorsarlm') == 2
results_sem = errorsarlm(y, X, W);
prt(results_sem);
end
3. 空间杜宾模型 (SDM)
SDM模型同时包含因变量和自变量的空间滞后项。
模型形式:
% SDM模型: y = ρWy + Xβ + WXθ + ε
MATLAB实现:
% SDM模型估计
function [rho, beta, theta, sigma2] = sdm_mle(y, X, W)
n = length(y);
I = eye(n);
WX = W * X; % 空间滞后自变量
loglik = @(params) -0.5 * ( ...
n * log(2*pi*params(end)) + ...
log(det(I - params(1)*W)) - ...
(1/params(end)) * (y - params(1)*W*y - X*params(2:1+size(X,2)) - ...
WX*params(2+size(X,2):end-1))' * ...
(y - params(1)*W*y - X*params(2:1+size(X,2)) - ...
WX*params(2+size(X,2):end-1)) ...
);
k = size(X,2);
init_params = [0.1; ones(k,1); ones(k,1); 1];
options = optimset('Display', 'iter', 'MaxIter', 1000);
est_params = fminunc(@(x) -loglik(x), init_params, options);
rho = est_params(1);
beta = est_params(2:1+k);
theta = est_params(2+k:end-1);
sigma2 = est_params(end);
end
% 使用工具箱
if exist('sdm') == 2
results_sdm = sdm(y, X, W);
prt(results_sdm);
end
完整分析流程示例
% 空间计量分析完整流程
function spatial_econometrics_analysis()
%% 1. 数据准备
% 假设已有数据: y, X, coordinates
load('spatial_data.mat'); % 加载数据
%% 2. 构建空间权重矩阵
W = create_spatial_weights(coordinates);
%% 3. 空间自相关检验
% 莫兰指数检验
moran_I = moran(y, W);
fprintf('莫兰指数: %.4f\n', moran_I);
% LM检验(选择合适模型)
[lm_lag, lm_error, robust_lm_lag, robust_lm_error] = lm_tests(y, X, W);
%% 4. 模型估计
% 根据LM检验结果选择模型,或都估计进行比较
% SAR模型
[rho_sar, beta_sar, sigma2_sar] = sar_mle(y, X, W);
% SEM模型
[lambda_sem, beta_sem, sigma2_sem] = sem_mle(y, X, W);
% SDM模型
[rho_sdm, beta_sdm, theta_sdm, sigma2_sdm] = sdm_mle(y, X, W);
%% 5. 模型比较
% 计算信息准则
[aic_sar, bic_sar] = calculate_ic('SAR', y, X, W, rho_sar, beta_sar, sigma2_sar);
[aic_sem, bic_sem] = calculate_ic('SEM', y, X, W, lambda_sem, beta_sem, sigma2_sem);
[aic_sdm, bic_sdm] = calculate_ic('SDM', y, X, W, rho_sdm, beta_sdm, sigma2_sdm, theta_sdm);
fprintf('\n模型比较:\n');
fprintf('模型\tAIC\t\tBIC\n');
fprintf('SAR\t%.4f\t%.4f\n', aic_sar, bic_sar);
fprintf('SEM\t%.4f\t%.4f\n', aic_sem, bic_sem);
fprintf('SDM\t%.4f\t%.4f\n', aic_sdm, bic_sdm);
%% 6. 结果可视化
plot_spatial_results(y, X, W, rho_sar, beta_sar);
end
%% 辅助函数
function W = create_spatial_weights(coords)
% 基于k最近邻创建空间权重矩阵
n = size(coords, 1);
W = zeros(n, n);
k = 4; % 最近邻数量
for i = 1:n
distances = sqrt(sum((coords - coords(i,:)).^2, 2));
[~, idx] = sort(distances);
neighbors = idx(2:k+1); % 排除自身
W(i, neighbors) = 1;
end
% 行标准化
W = W ./ sum(W, 2);
W(isnan(W)) = 0;
end
function I = moran(y, W)
% 计算莫兰指数
n = length(y);
y_mean = mean(y);
y_dev = y - y_mean;
numerator = sum(sum(W .* (y_dev * y_dev')));
denominator = sum(y_dev.^2);
I = (n / sum(sum(W))) * (numerator / denominator);
end
参考代码 关于空间计量模型,其中包括空间滞后、空间误差、空间杜宾 www.youwenfan.com/contentcnk/77804.html
模型选择指南
LM检验决策规则:
- LM-lag显著,LM-error不显著 → 选择SAR模型
- LM-error显著,LM-lag不显著 → 选择SEM模型
- 两者都显著 → 选择Robust LM检验显著的模型
- 考虑理论:空间溢出机制的理论依据
实践建议:
- 从SDM开始:SDM是最一般的形式,SAR和SEM是其特例
- 使用Wald检验或LR检验检验SDM是否能简化为SAR或SEM
- 考虑空间固定效应:对于面板数据,控制个体异质性
- 检验残差的空间自相关:确保模型充分捕捉了空间依赖性
浙公网安备 33010602011771号