1. 空间Probit模型基础认知
空间Probit模型作为离散选择模型与空间计量经济学的交叉产物,在区域经济学、房地产评估、公共政策评估等领域具有独特价值。与传统Probit模型相比,其核心差异在于引入了空间权重矩阵W,通过空间滞后项(Wy)或空间误差项(Wu)来捕捉地理单元之间的交互影响。这种设定使得模型能够处理"邻居效应"——即相邻区域的决策会相互影响的现实场景,比如某地区企业创新行为会受周边区域政策环境的影响。
在Stata生态中,虽然官方命令集未直接提供空间Probit的估计命令,但通过组合使用spmat、spreg等空间计量工具与ml maximize等最大似然估计方法,完全可以实现模型的完整估计流程。这里需要特别注意:空间Probit的似然函数涉及高维积分计算,通常需要采用GHK模拟法等数值逼近技术,这对计算效率和代码实现都提出了较高要求。
关键认知:空间Probit模型中的空间效应系数ρ(rho)解释需格外谨慎。当ρ>0时表示存在同群效应(peer effects),即邻近单元的选择行为会正向影响本单元;ρ<0则暗示竞争效应。这与截面数据Probit模型中的β系数有着完全不同的经济学含义。
2. 数据准备与空间矩阵构建
2.1 数据结构要求
空间Probit模型要求数据必须包含地理标识变量(如行政区代码、经纬度坐标),建议使用面板数据结构。示例数据框架应包含:
- 被解释变量:二值变量(0/1编码)
- 解释变量:各类影响因素(需预先完成多重共线性检验)
- 空间标识变量:可用于生成空间权重矩阵
stata复制* 示例数据结构查看
use spatial_data.dta, clear
describe
list in 1/5
2.2 空间权重矩阵生成
空间权重矩阵的质量直接影响估计结果,常用构建方法包括:
| 矩阵类型 | 生成命令示例 | 适用场景 |
|---|---|---|
| 邻接矩阵 | spmat create contiguity W |
行政区相邻数据 |
| 反距离矩阵 | spmat create idistance W |
连续空间分布的点数据 |
| K最近邻矩阵 | spmat create knn W |
空间单元分布不均匀时 |
stata复制* 基于shp文件生成Queen邻接矩阵
spmat create W using counties.shp, id(id) norm(row)
spmat summarize W
经验提示:务必进行矩阵标准化(norm选项),通常选择行标准化(row)使每行权重之和为1。同时建议通过
spmat graph W可视化检查矩阵结构,确保没有孤立单元。
3. 模型估计的完整流程
3.1 空间滞后Probit模型实现
空间滞后模型(SAR Probit)假设被解释变量的空间依赖性通过Wy体现,其结构方程为:
y* = ρWy + Xβ + ε
stata复制* 使用ml方法自定义似然函数
program define splag_probit
args lnf rho beta sigma
tempvar ystar
qui gen double `ystar' = $ML_y1 - `rho'*spmatlag W $ML_y1
qui replace `lnf' = ln(normal(`ystar'*`beta'/`sigma')) if $ML_y1==1
qui replace `lnf' = ln(normal(-`ystar'*`beta'/`sigma')) if $ML_y1==0
end
* 最大似然估计
ml model lf splag_probit (rho: ) (beta: y = x1 x2 x3) (sigma: )
ml maximize
3.2 空间误差Probit模型实现
空间误差模型(SEM Probit)假设空间依赖性体现在误差项,其结构为:
y* = Xβ + u, u = λWu + ε
stata复制program define sperror_probit
args lnf lambda beta sigma
tempvar u
qui gen double `u' = $ML_y1 - `beta'*$ML_x1
qui replace `u' = `u' - `lambda'*spmatlag W `u'
qui replace `lnf' = ln(normal(`u'/`sigma')) if $ML_y1==1
qui replace `lnf' = ln(normal(-`u'/`sigma')) if $ML_y1==0
end
ml model lf sperror_probit (lambda: ) (beta: y = x1 x2 x3) (sigma: )
ml maximize, difficult
实操技巧:当模型不收敛时,可尝试以下方法:
- 添加
difficult选项突破局部最优- 使用
from()提供初始值- 调整
ml max的迭代次数和精度
4. 结果解读与论文呈现
4.1 系数边际效应计算
由于非线性模型特性,空间Probit的系数不能直接解释,需要计算边际效应:
stata复制* 平均边际效应(AME)计算
quietly predict phat
margins, dydx(*) atmeans post
marginsplot
对于空间效应ρ的解读,建议通过模拟分析:
- 保持其他变量不变,改变某个单元的选择状态
- 通过(I-ρW)^(-1)计算对所有单元的连锁影响
- 绘制空间冲击传播图
4.2 论文表格规范示例
表1应包含完整估计结果:
| 变量 | 系数估计 | 标准误 | z值 | 边际效应 |
|---|---|---|---|---|
| x1 | 0.452*** | 0.021 | 21.52 | 0.112 |
| x2 | -0.198* | 0.105 | -1.89 | -0.049 |
| ρ | 0.356** | 0.142 | 2.51 | - |
| 对数似然值 | -328.71 |
注:*** p<0.01, ** p<0.05, * p<0.1
5. 稳健性检验与模型诊断
5.1 空间依赖性检验
在模型选择前需进行Moran's I检验:
stata复制* 被解释变量的空间自相关检验
spatgsa y, weights(W) moran
5.2 模型比较方法
通过以下指标对比不同空间模型:
| 检验方法 | 命令示例 | 判断标准 |
|---|---|---|
| LR检验 | lrtest model1 model2 |
卡方统计量显著性 |
| AIC/BIC | estat ic |
值越小越好 |
| 拟合优度 | estat gof |
预测准确率越高越好 |
5.3 异方差处理
当存在异方差时,可采用:
stata复制* 异方差稳健标准误
ml model lf splag_probit (rho: ) (beta: y = x1 x2 x3) (sigma: ), vce(robust)
6. 常见问题解决方案
6.1 模型不收敛
- 检查空间矩阵是否标准化
- 尝试不同的初始值组合
- 增加最大迭代次数:
ml maximize, iterate(100)
6.2 内存不足
- 使用
set matsize增加矩阵尺寸 - 转换为稀疏矩阵存储:
spmat compress W
6.3 边际效应异常
- 检查多重共线性:
collin x1 x2 x3 - 验证预测值范围:
sum phat, detail
7. 完整应用案例演示
以企业区位选择研究为例:
stata复制* 数据准备
use location_choice.dta, clear
spmat use W using spatial_weights.spmat
* 模型估计
program define my_probit
args lnf rho beta sigma
tempvar ystar
qui gen double `ystar' = $ML_y1 - `rho'*spmatlag W $ML_y1
qui replace `lnf' = ln(normal(`ystar'*`beta'/`sigma')) if $ML_y1==1
qui replace `lnf' = ln(normal(-`ystar'*`beta'/`sigma')) if $ML_y1==0
end
ml model lf my_probit (rho: ) (beta: choice = market_access labor_cost tax_rate) (sigma: )
ml maximize, difficult
* 结果分析
estimates store spatial
probit choice market_access labor_cost tax_rate
estimates store standard
lrtest spatial standard
* 边际效应可视化
margins, dydx(market_access) at(labor_cost=(1(1)10))
marginsplot
通过比较空间模型与传统模型的似然比检验结果,可以清晰展示纳入空间效应后的模型改进程度。实际应用中,建议将完整do文件作为论文附件提交,方便审稿人复现结果。