社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

推荐&空间计量及Python、Stata操作代码及论文复制

计量经济学服务中心 • 4 年前 • 711 次点击  

来源:https://geodacenter.github.io/GeoDaSpace/


本文将主要介绍使用空间计量Python、Stata软件来复制实现

Technical Aspects of Implementing GMM Estimation of the Spatial Error Model in PySAL and GeoDaSpace∗ by Luc Anselin, Pedro V. Amaral and Daniel Arribas-Bel中空间误差模型的GMM估计的技术方面的论文结果。


1

Stata代码汇总



代码为

/* This routine assumes the following files are in the current Stata working directory: *//* - NAT.shp *//* - NAT.dbf */
/* Create row-standardized Queen weights matrix */shp2dta using NAT, database(nat) coordinates(natxy) genid(ids) gencentroids(nat_c) replaceuse natspmat contiguity w using natxy, norm(row) id(ids) replace
/* Table 2 - Spatial error model with exogenous variables and homoskedasticity (GM_Error_Hom): */spivreg HR90 RD90 UE90, el(w) id(ids)
/* Table 3 - Spatial error model with endogenous variables and homoskedasticity (GM_Endog_Error_Hom): */spivreg HR90 RD90 (UE90 = FP89), el(w) id(ids)
/* Table 4 - Combo model with homoskedasticity (GM_Combo_Hom): */spivreg HR90 RD90 UE90, dl(w) el(w) id(ids)
/* Table 5 - Spatial error model with exogenous variables and heteroskedasticity (GM_Error_Het): */spivreg HR90 RD90 UE90, el(w) id(ids) het
/* Table 6 - Spatial error model with endogenous variables and heteroskedasticity (GM_Endog_Error_Het): */spivreg HR90 RD90 (UE90 = FP89), el(w) id(ids) het
/* Table 7 - Combo model with heteroskedasticity (GM_Combo_Het): */spivreg HR90 RD90 UE90, el(w) dl(w) id(ids) het



2

Python部分



首先导入相关库,代码为

import numpy as npimport pysal as ps


然后打开数据库并创建变量作为numpy数组,代码为:

db = ps.open('nat.dbf','r')

其中,为dbf格式数据,r表示打开方式为可读




Regression 1: use all defaults, i.e., A1='het' changed by LA to A1='hom_sc' as in Drukker

相关代码为:

reg1 = ps.spreg.GM_Error_Hom(y,x,w,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')

然后打印上述结果

相关代码为:

print reg1.summary

结果为:

Regression 1a: use A1 matrix as in Anselin with A1='het'

相关代码为:

reg1a = ps.spreg.GM_Error_Hom(y,x,w,A1='het',name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg1a.summary

结果为:


Regression 1b: use A1 matrix as in Anselin, without scaling factor, A1='hom'

相关代码为:

reg1b = ps.spreg.GM_Error_Hom(y,x,w,A1='hom',name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')
print reg1b.summary

结果为:

Regression 1c: use A1 with scaling factor, but force estimation as 2SLS (as in Stata)


Need to use base class to force passing a constant term, since the user class puts constant in x

相关代码为:

ones = np.ones(y.shape)reg1c = ps.spreg.error_sp_hom.BaseGM_Endog_Error_Hom(y,ones,yend=x, q=x, w=w, A1='hom_sc')print reg1c.betasprint map(np.sqrt, reg1c.vm.diagonal())

结果为:



1.2  Endogenous


建立新的外生、内生和工具变量


相关代码为:

xex = x[:,0]xex.shape = (len(hr90),1)

yend = x[:,1]yend.shape = (len(hr90),1)

fp89 = db.by_col("FP89")q = array(fp89)q.shape = (len(fp89),1)
#Error Hom model with endogeneity - defaultreg2 = ps.spreg.GM_Endog_Error_Hom(y,xex,yend,q,w,name_y="HR90",name_x=["RD90"],name_yend=["UE90"],name_q=["FP89"],\ name_w="natqueen.gal",name_ds="nat.shp")print reg2.summary

Error hom model with endogeneity -- A1 = 'het'reg2a = ps.spreg.GM_Endog_Error_Hom(y,xex,yend,q,w,A1='het',name_y="HR90",name_x=["RD90"],name_yend=["UE90"],name_q=["FP89"],\ name_w="natqueen.gal",name_ds="nat.shp")print reg2a.summary

结果为:


1.3  Combo Model¶


Error hom model -- combo -- instrument lag order set to 2

相关代码为:

reg3 = ps.spreg.GM_Combo_Hom(y,x,w=w,w_lags=2,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')
print reg3.summary


# Error hom model -- combo -- instrument lag order set to 1reg3a = ps.spreg.GM_Combo_Hom(y,x,w=w,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg3a.summary

# Error Hom model -- combo -- instrument lag order two and 'het' optionreg3b = ps.spreg.GM_Combo_Hom(y,x,w=w,w_lags=2,A1='het',name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg3b.summary

结果为:


2  Heteroskedasticity¶

2.1  Exogenous only¶


相关代码为:

# Defaults, two step as in Drukker et al.reg4 = ps.spreg.GM_Error_Het(y,x,w,name_y="HR90",name_x=x_names,name_w="natqueen.gal",name_ds="nat.shp")print reg4.summary
Step1c to True as in Arraiz et al (same as sphet1)reg4a = ps.spreg.GM_Error_Het(y,x,w,step1c=True,name_y="HR90",name_x=x_names,name_w="natqueen.gal",name_ds="nat.shp")print reg4a.summary

# Setup to mimic Stata "OLS" estimationreg4b = ps.spreg.error_sp_het.BaseGM_Endog_Error_Het(y,ones,yend=x, q=x, w=w)print reg4b.betas



结果为:

2.2  Endogenous


相关代码为:

# Standard case -- defaultsreg5 = ps.spreg.GM_Endog_Error_Het(y,xex,yend,q,w,name_y="HR90",name_x=["RD90"],name_yend=["UE90"],name_q=["FP89"],\       name_w="natqueen.gal",name_ds="nat.shp")
print reg5.summary

# step1c = Truereg5a = ps.spreg.GM_Endog_Error_Het(y,xex,yend,q,w,step1c=True,name_y="HR90",name_x=["RD90"],name_yend=["UE90"],name_q=["FP89"],\ name_w="natqueen.gal",name_ds="nat.shp")print reg5a.summary

结果为:


2.3  Combo model


相关代码为:

#  Error het  -- combo -- instrument lag order set to 2reg6 = ps.spreg.GM_Combo_Het(y,x,w=w,w_lags=2,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg6.summary#  Error het model -- combo -- instrument lag order set to 1reg6a = ps.spreg.GM_Combo_Het(y,x,w=w,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg6a.summary
# Error Het model -- combo -- instrument lag order two and step1c=True option
reg6c = ps.spreg.GM_Combo_Het(y,x,w=w,w_lags=2,step1c=True,name_y='HR90',name_x = x_names, name_w = 'nat_queen.gal',name_ds='NAT')print reg6c.summary

结果为:


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62011
 
711 次点击