stata 导出 相关系数表_Stata: 空间权重矩阵的构建
作者:潘星宇 (清華大學)
Stata 連享會:知乎?| 簡書 |?碼云 | CSDN
Stata連享會?計量專題??||?公眾號合集
特別說明
文中包含的鏈接在微信中無法生效。請點擊本文底部左下角的,請點擊【原文鏈接】。
空間計量方法已經成為了時下最為熱門和常用的計量方法之一,而空間權重矩陣的構建則是運用空間計量方法時必不可少的“標準動作”。但在實際研究過程中,我們往往會遇到很多問題。例如,目前網絡上能獲取到的矩陣與我研究的樣本不匹配;例如,做回歸時時需要剔除一些樣本單位,但如何構建與之對應的空間權重矩陣;再例如,如何構建一些廣義上的“空間”權重矩陣,等等。本期我們就來和大家一起了解一下權重矩陣的構建。
1. 空間權重矩陣原理簡介
通常定義一個二元對稱空間權重矩陣來表達 n 個位置的空間個體(例如區域)的鄰近關系:
理論上講,不存在最優的空間矩陣,即無法找到一個完全描述空間相關結構的空間矩陣。空間矩陣的構造必須滿足 「空間相關性隨著 ‘距離’ 的增加而減少」的原則。
需要注意的是。在空間計量中,“距離(counterfacutal) ” 的定義可以是廣義的,包含但不限于地理上的相鄰或者歐氏距離,也可以是經濟意義上合作關系的遠近,甚至可以是社會學意義上的人際關系的親疏。
1.1 簡單空間權重矩陣
最簡單的空間權重矩陣是所謂的「二進制空間權重矩陣」,使用 0 和 1 來標記個體之間的空間相鄰情況,屬于 定性 界定。
簡單二進制鄰接矩陣
簡單的二進制鄰接矩陣的第 i 行第 j 列元素為:
基于距離的二進制空間權重矩陣
這類空間權重矩陣的第 i 行第 j 列元素為:
廣義「相鄰」概念的二進制空間權重矩陣
如前文所述 “相鄰” 可以有不同的定義。一般來說從最基本的空間概念出發,有 Rook 相鄰 、Queen 相鄰 等。Rook 相鄰指的有一段共同的邊即認為兩個單位相鄰,Queen 相鄰認為只要存在頂點相接,就認為兩地區為 "鄰居" 關系。此外還可以定義成二者 是否有相同方言 、是否同屬于一個城市群 ,等等。
1.2 基于距離的空間權重矩陣形式
若考慮距離的相對大小,想要從「定量」角度刻畫空間相鄰性,可以使用如下權重定義方法:
其中:和分別表示某個省份(比如地理幾何中心,省會(首府)) 的緯度和經度;為兩個省份間經度之差;R 為地球半徑,等于 3958.761 英里。在實際應用中,常對空間權重矩陣進行行標準化,空間權重矩陣的對角元素設為 0。
2. 空間權重矩陣構建的準備工作
要構建自己 “定制的” 空間權重矩陣,首先需要獲得所研究空間單元的地理位置信息文件,以便于 Stata 判斷相對或者絕對地理位置。這些信息通常來自于對研究單元對象的 ESRI Shapefile 文件(也就是 Stata 繪制地圖時需要的所謂 “底圖” 文件)。中國的 shapefile 文件包括省級,市級和縣級等各個層面的數據,可以在國家基礎信息中心申請下載,或者從一些公開的網絡資源獲取。
本文采用中國省級行政區 shapefile 作為演示數據。
一個完整的 shapefile 文件由以下幾個文件組成:
省級行政區.dbf
省級行政區.shp
省級行政區.shx
省級行政區.prj
省級行政區.shx
2.1 編輯 shapefile 文件
目前,Stata 中還沒有能對 shapefile 文件進行編輯的命令。這一步驟一般采用 ArcGIS 或 arcview 等軟件來進行。由于這一步非常重要,因此我們以 ArcGIS 軟件為例,做一個簡單的演示。
第一步:導入 shpefile 文件
在 ArcGIS 主界面中,點擊下圖中紅圈所示的圖標,然后按提示選擇硬盤上存儲的 shpefile 文件,即可將其導入 ArcGIS。
第二步:編輯 shpefile 文件
這里假設我們的研究對象不含西藏自治區、香港特別行政區、澳門特別行政區以及臺灣省,我們就需要在編輯器當中把這四個要素刪除。
首先選中圖層,右鍵菜單中選擇 “開始編輯”,
右鍵圖層打開屬性表,刪除上面提到的四個要素:
第三步:導出 shapefile 文件
再右鍵圖層,選擇 導出數據 :
這樣,我們就有了符合我們需要的空間權重矩陣構建的 shapefile 文件,下面就需要將其導入 Stata 以便做后續分析了。
2.2 在 Stata 中導入 shapefile 文件
若采用空間面板數據模型進行建模,則還需要找出這些省份的經緯度等地理信息。前文已經說明了如何下載 shapefile 文件,該文件中即包含了各個國家的地理信息。那么可以將研究單元數據和 shapefile 進行合并。這里需要用到 mif2dta 或 shp2dta ?命令來讀取 ?shapefile 文件。該命令為外部命令,安裝方式參考「 Stata: 外部命令的搜索、安裝與使用」 。需要注意的是, 只有經緯度信息的數據集不能用于二項式空間權重矩陣的構建 ,關于這一點我們將在下文中說明。
這一過程主要是將 .shp 格式的文件編譯成stata可以讀取的文件,主要采用 shp2dta 命令完成。
我們來看看 shp2dta 命令的基本語法:
. shp2dta using shpfilename, ///
database(filename) coordinates(filename) ///
genid(newvarname) gencentroids(stub)
其中,
coordinates(filename) 指定包含 .shp 文件數據的新 Stata 數據集的名稱。
database(filename) ?指定包含 .dbf 文件數據的新 Stata 數據集的名稱。
genid(newvarname) 指定新數值變量的名稱,該數字變量在文件 database.dta 中將唯一標識感興趣的不同地理區域。newvarname 采用的值將對應于文件 coordinates.dta 中變量 _ID 所采用的值。
gencentroids(stub) 選項可以計算出地理區域的質心的坐標,存儲在變量 x_stub 和 y_stub 中,并添加到文件 database.dta 中。但我們還必須指定 genid(newvarname) 選項。
. shp2dta using "C:\Users\xypan\Desktop\連享會推文\空間權重矩陣的構建\空間權重矩陣底圖\30個省市自治區.shp", ///
database(data_db) coordinates(data_xy) ///
genid(weightid) gencentroids(stub) replace
. use data_db, clear
. rename NAME province
. list province x_stub y_stub in 1/10
+------------------------------+
| province x_stub y_stub |
|------------------------------|
1. | 黑龍江 47.8418 127.725 |
2. | 新疆 41.112 85.2009 |
3. | 山西 37.5698 112.263 |
4. | 寧夏 37.2681 106.158 |
5. | 山東 36.3217 118.107 |
6. | 河南 33.8743 113.581 |
7. | 江蘇 32.9807 119.42 |
8. | 安徽 31.8229 117.197 |
9. | 湖北 30.9677 112.239 |
10. | 浙江 29.1659 120.023 |
+------------------------------+
讀取 shapefile 文件后,可以發現有 ?x_stub 和 y_stub 兩個變量,分別代表了對應省份的的地理坐標。
接下來將帶有地理坐標的 data_db.dta 文件和我們的數據文件匹配起來,命名為 spatialweight_province.dta:
merge 1:m province using "C:\Users\xypan\Desktop\連享會推文\空間權重矩陣的構建\省級數據.dta"
keep if _merge==3
drop _merge
save "C:\Users\xypan\Desktop\連享會推文\空間權重矩陣的構建\spatialdata_province.dta", replace
到此我們完成了幾乎所有的準備工作,下一步開始正式構建空間權重矩陣。
3 空間權重矩陣的構建
3.1 命令說明
生成距離空間權重矩陣的命令語法為
spwmatrix gecon varlist [if] [in], ///
wname(wght_name) [wtype(inv) cart r(#) ///
dband(numlist) alpha(#) knn(#) ///
econvar(varname1) beta(#) Other_options]
主要選項的含義如下:
wname(wght_name) 表示要生成的空間權重矩陣的名稱
wtype(bin | inv | econ | invecon | socnet | socecon) 分別代表二進制,距離衰減,經濟距離,逆經濟距離,社會網絡或社會經濟空間權重
dta ?選擇該選項以從 .dta 文件導入空間權重
text 選擇該選項以從逗號或制表符分隔的文本文件導入空間權重
swm(idvar_name) 導入 ArcGIS 中生成的空間權重
knn(#) 請求最近鄰空間權重
econvar(varname1) 可用此選項構建經濟或逆經濟距離空間權重
beta(#) 指定指數函數的系數 β; 默認測試版 (1)
cart 表示緯度和經度采用笛卡爾坐標,這是默認選項 (一般我們也使用的是這個);如果采用球面坐標則只能選擇 r(#),此時不能同時選擇 cart,并且需要指定地球半徑距離(英里),一般默認填寫 r(3958.761);
dband(numlist) 表示最大的權重矩陣邊界,其中的 numlist 表示確定邊界的變量,一般是各省份代碼的最大值;
alpha(#) 表示參數限制范圍,默認為 alpha(1) ;
3.2 反距離空間權重矩陣
use spatialdata_province.dta,clear
spwmatrix gecon x_stub y_stub , wn(spatialweight_province) wtype(inv) cart alpha(1)
xport(spatialweight_province,txt) row replace \\生成名為 spatialweight_province 的權重矩陣
spmat import spatialweight_province using spatialdata_province.txt,replace \\導入 spatialweight_province 權重矩陣
spmat save spatialweight_province using spatialweight_pro.spmat,replace //將生成的 spmat 權重文件存儲為spatialweight_pro
spmat use spatialweight_pro using spatialweight_pro.spmat,replace //打開 spmat 權重文件
matrix list spatialweight_pro //查看 spatialweight_pro 權重矩陣
這樣,反距離空間權重矩陣就生成了,由于矩陣展開太大,囿于篇幅限制這里不做展示。
3.3 經濟距離空間權重矩陣
經濟距離矩陣的計算公式為
use spatialdata_province.dta,clear
spwmatrix gecon x_c y_c, wn(province) wtype(invecon) cart econvar(GDP_2000) rowstand xport(spatialdata_province,txt) replace\\由于選擇的是 invecon(經濟反距離矩陣)因此需要聲明相應的經濟變量
spmat import spatialweight_province using spatialdata_province.txt,replace //生成以spatialweight_province 為名稱的 spmat 權重文件
其他導入、存儲和查看方法同上,不再贅述。
3.4 地理相鄰空間權重矩陣
構建地理相鄰空間權重矩陣時,之前計算的含有地理坐標的 spatialdata_province.dta 文件將不再適用,需要將我們編輯好的 .shp 文件導入 Geoda 軟件,再導出 .gal 文件,再使用 spwmatrix 命令進行編譯即可使用。導入過程非常簡單,故在此略過。
use spatialdata_province.dta,clear
spwmatrix import using C:\連享會推文\空間權重矩陣的構建\空間權重矩陣底圖\spatialdata_province.gal,wname(wcontig) xport(spatialdata_province, dat) \\.gal 只能導出 .dat (不是 .dta,.dat 是 R 語言中一種通用的文件格式)格式的文件
spmat import spatialweight_province using spatialdata_province.dat,replace
其他導入、存儲和查看方法同上。
3.5 廣義的 “相鄰” 空間權重矩陣
這里我們采用文章開頭提到過的二者是否有相同方言,我們采用徐現祥老師公布的方言數據,將方言賦值(因為 spmatrix 命令無法識別字符型變量),官話賦值為1,吳語賦值為2,以此類推。同屬于一個方言區的省份我們賦值為1,不同的我們賦值為0.
use fangyan.dta, clear
spwmatrix socio fangyan_id, wname(fangyan) wtype(socnet) idvar(provinceid) xport(spatialdata_province,txt) \\fangyan_id代表我們的方言代理啞變量
其他導入、存儲和查看方法同上。
4. 結語
在完成了權重矩陣的構建后,就可以用它進行空間計量回歸了,具體的操作可以參考我們的推文「Stata: 空間面板數據模型及Stata實現」 。
另外需要注意的是 ArcView 、 ArcGIS軟件 和 MATLAB 軟件也可以進行空間權重矩陣的構建,我們也看到了甚至一些關鍵步驟也必須經過這些個軟件的操作(也有其他軟件,在此不一一列舉)。對這方面有興趣的同學可以選擇性地學習一下。其中 ArcView 相對更加輕量,不像后兩種軟件動輒 10G 大小。
目前 Stata 15.x 版本中發布的 xsmle 等命令可以也支持多個空間權重矩陣的回歸。
參考文獻
Jeanty, P.W., 2010. spwmatrix: Stata module to generate, import, and export spatial weights. Available from.
相關推文
游萬海,連玉君. Stata: 外部命令的搜索、安裝與使用.
游萬海,連玉君. Stata: Stata: 空間面板數據模型及Stata實現.
Stata:空間計量之用 spmap 繪制地圖
Stata: 空間計量溢出效應的動態GIF演示
Stata:空間計量之 SP 系列命令
往期精彩推文集錦
Stata連享會推文集錦
連享會推文:Stata資源匯總
連享會推文:數據處理與程序
連享會推文:回歸分析-模型設定-內生性
連享會推文:時間序列+面板數據
連享會推文:繪圖
關于我們
Stata連享會?由中山大學連玉君老師團隊創辦,定期分享實證分析經驗。
公眾號推文同步發布于 CSDN 、簡書?和?知乎Stata專欄。可在百度中搜索關鍵詞 「Stata連享會」查看往期推文。
歡迎賜稿:?歡迎賜稿。錄用稿件達?三篇?以上,即可?免費?獲得一期 Stata 現場培訓資格。
E-mail:?StataChina@163.com
計量專題:因為專注,所以專業
往期精彩推文:一網打盡
總結
以上是生活随笔為你收集整理的stata 导出 相关系数表_Stata: 空间权重矩阵的构建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拔丝香蕉怎么做 手把手教你制作拔丝香蕉?
- 下一篇: 基于h5的跳一跳游戏的开发与实现_「南宁