操:從空間權(quán)重矩陣構(gòu)建到效應(yīng)分解)
簡(jiǎn)介面向經(jīng)濟(jì)學(xué)、區(qū)域科學(xué)及社會(huì)科學(xué)領(lǐng)域需要開(kāi)展空間計(jì)量分析的師生與研究人員這份命令文檔系統(tǒng)梳理了利用STATA構(gòu)建空間權(quán)重矩陣與估計(jì)空間杜賓模型的全流程操作。內(nèi)容涵蓋shp2dta讀取地圖數(shù)據(jù)并生成坐標(biāo)數(shù)據(jù)集、spmap繪制空間分布圖、spmat生成逆距離與鄰接權(quán)重矩陣、行標(biāo)準(zhǔn)化處理以及Morans I指數(shù)計(jì)算并配有清晰命令注釋便于直接套用與移植。文檔還詳細(xì)展示了如何將生成的權(quán)重矩陣保存為spmat和txt格式為后續(xù)空間杜賓模型等空間回歸分析打下基礎(chǔ)。資源包共1個(gè)docx文件大小43KB文本形式保存了完整命令與參數(shù)說(shuō)明輕量易讀無(wú)需復(fù)雜環(huán)境即可快速查閱。目前已有395人學(xué)習(xí)下載適合作為空間計(jì)量入門(mén)與進(jìn)階的速查手冊(cè)可有效減少編寫(xiě)命令時(shí)的試錯(cuò)成本。 這幾年空間計(jì)量在經(jīng)管類(lèi)、社科類(lèi)論文里幾乎成了標(biāo)配空間權(quán)重矩陣加空間杜賓模型SDM是出現(xiàn)頻率最高的一套組合。我自己幫學(xué)生處理數(shù)據(jù)、改論文遇到最多的問(wèn)題就是權(quán)重矩陣不會(huì)構(gòu)建、模型命令報(bào)錯(cuò)、跑完結(jié)果不會(huì)解讀。這篇就把整套流程串起來(lái)講清楚從空間權(quán)重矩陣的生成原理、STATA里的具體命令寫(xiě)法到空間杜賓模型的估計(jì)、檢驗(yàn)、效應(yīng)分解再到實(shí)際踩過(guò)的一些坑一次性整理出來(lái)。適合剛接觸空間計(jì)量的研究生也適合照著教程跑通過(guò)一遍、但回頭不知道每一步在干什么的同行。1. 空間計(jì)量研究框架與STATA使用策略1.1 為什么我推薦用STATA處理空間杜賓模型STATA的空間計(jì)量生態(tài)這些年已經(jīng)非常成熟。橫截面數(shù)據(jù)有早期的spatreg、spreg面板數(shù)據(jù)有xsmle這個(gè)幾乎人手一個(gè)的外部命令矩陣處理有spmat和STATA 15之后內(nèi)置的spmatrix。相比Matlab需要自己寫(xiě)極大似然函數(shù)R雖然語(yǔ)法靈活但學(xué)習(xí)成本偏高GeoDa圖形化點(diǎn)擊方便但只能做基礎(chǔ)的空間回歸——STATA的優(yōu)勢(shì)在于你可以在同一個(gè)環(huán)境里完成面板數(shù)據(jù)清理、權(quán)重矩陣構(gòu)建、模型估計(jì)、偏偏效應(yīng)分解全部流程命令可復(fù)現(xiàn)性也最強(qiáng)。這對(duì)需要反復(fù)調(diào)模型、換矩陣、做穩(wěn)健性檢驗(yàn)的科研場(chǎng)景來(lái)說(shuō)省下的時(shí)間非??捎^。1.2 從原始數(shù)據(jù)到論文結(jié)果的完整工作流我建議動(dòng)手之前先把整個(gè)流程在心里過(guò)一遍??臻g計(jì)量研究其實(shí)套路很固定大致可以分成七步準(zhǔn)備數(shù)據(jù)包括核心變量面板數(shù)據(jù)、每個(gè)個(gè)體的坐標(biāo)或鄰接關(guān)系文件構(gòu)建空間權(quán)重矩陣并做標(biāo)準(zhǔn)化用Morans I檢驗(yàn)被解釋變量的空間自相關(guān)性跑普通OLS做LM和Robust LM檢驗(yàn)判斷空間效應(yīng)應(yīng)該放在誤差項(xiàng)還是滯后項(xiàng)用LR或Wald檢驗(yàn)判斷模型是否可以簡(jiǎn)化為SAR或SEM據(jù)此確定用SDM還是其他模型用xsmle估計(jì)模型并對(duì)結(jié)果做直接效應(yīng)、間接效應(yīng)分解更換權(quán)重矩陣類(lèi)型做穩(wěn)健性檢驗(yàn)。這七步里第2步和第5步是新手最容易卡住的地方也是下面兩節(jié)重點(diǎn)展開(kāi)的內(nèi)容。2. 空間權(quán)重矩陣模型的核心別在這步偷懶2.1 空間權(quán)重矩陣究竟是什么空間權(quán)重矩陣的本質(zhì)是把區(qū)域之間如何互相影響這個(gè)抽象問(wèn)題轉(zhuǎn)化成一張具體的數(shù)值表。舉個(gè)例子假設(shè)研究30個(gè)省份的碳排放如果不考慮空間性每個(gè)省的碳排放只由本省變量解釋。但實(shí)際情況是鄰近省份的產(chǎn)業(yè)結(jié)構(gòu)、減排政策、技術(shù)溢出都會(huì)影響本省的碳排放??臻g權(quán)重矩陣W就是用來(lái)刻畫(huà)這種鄰居效應(yīng)的矩陣的每個(gè)元素wij代表第j個(gè)區(qū)域?qū)Φ趇個(gè)區(qū)域的影響強(qiáng)度。常見(jiàn)的權(quán)重矩陣類(lèi)型用一張表來(lái)對(duì)比類(lèi)型構(gòu)建邏輯適用場(chǎng)景數(shù)據(jù)需求鄰接權(quán)重Queen有公共邊界或公共頂點(diǎn)視為鄰居行政區(qū)劃數(shù)據(jù)地圖shapefile鄰接權(quán)重Rook只有公共邊界視為鄰居行政區(qū)劃數(shù)據(jù)地圖shapefile逆距離權(quán)重wij1/dij地理距離越近影響越大有經(jīng)緯度坐標(biāo)坐標(biāo)數(shù)據(jù)距離閾值權(quán)重距離小于閾值取1否則取0有坐標(biāo)且存在影響半徑坐標(biāo)數(shù)據(jù)K近鄰權(quán)重每個(gè)區(qū)域只取最近的K個(gè)鄰居區(qū)域密度不均時(shí)坐標(biāo)數(shù)據(jù)經(jīng)濟(jì)距離權(quán)重用GDP、貿(mào)易流等經(jīng)濟(jì)距離替代地理距離經(jīng)濟(jì)溢出研究經(jīng)濟(jì)指標(biāo)鄰接權(quán)重在區(qū)域經(jīng)濟(jì)研究里最常用但前提是能拿到準(zhǔn)確的地圖文件。如果只有經(jīng)緯度坐標(biāo)用逆距離權(quán)重或K近鄰權(quán)重會(huì)更方便。經(jīng)濟(jì)距離權(quán)重適合研究貿(mào)易溢出、資本流動(dòng)這類(lèi)問(wèn)題不過(guò)因?yàn)椴皇羌兊乩黻P(guān)系審稿時(shí)可能被追問(wèn)構(gòu)造依據(jù)需要提前想好怎么解釋。2.2 STATA生成權(quán)重矩陣的實(shí)操命令STATA里構(gòu)建空間權(quán)重矩陣核心就是兩條路老一點(diǎn)的spmat命令以及STATA 15之后內(nèi)置的spmatrix命令。兩者功能基本對(duì)應(yīng)但語(yǔ)法不同混用會(huì)報(bào)錯(cuò)所以建議不要在一套代碼里來(lái)回切換兩種命令。先說(shuō)最省事的場(chǎng)景用經(jīng)緯度坐標(biāo)直接生成逆距離權(quán)重矩陣。* 假設(shè)數(shù)據(jù)里已經(jīng)有l(wèi)ong和lat兩個(gè)變量id變量是省份代碼 ssc install spmat * spmat的逆距離權(quán)重命令 spmat idistance W long lat, id(province)spmatrix的寫(xiě)法稍微不同* 使用spmatrix前先聲明面板結(jié)構(gòu) xtset province year * 用坐標(biāo)生成逆距離權(quán)重矩陣id()里寫(xiě)面板的橫截面維度 spmatrix create idistance W, id(province)如果你的坐標(biāo)數(shù)據(jù)缺失或者研究區(qū)域是不規(guī)則的行政區(qū)劃最穩(wěn)妥的辦法是先把shapefile讀進(jìn)STATA再用鄰接方式生成權(quán)重矩陣。讀取shapefile常用shp2dta命令把地圖的數(shù)據(jù)庫(kù)和坐標(biāo)分開(kāi)存成dta文件然后合并到主數(shù)據(jù)里。這一步雖然有點(diǎn)繞但勝在可靠之后生成鄰接矩陣時(shí)不會(huì)出現(xiàn)坐標(biāo)對(duì)不上號(hào)的問(wèn)題。如果權(quán)重矩陣已經(jīng)在外部算好了不管是Excel、csv還是其他軟件導(dǎo)出的格式直接導(dǎo)入更省事* csv格式的權(quán)重矩陣導(dǎo)入 import delimited using W.csv, clear * 用spmatrix導(dǎo)入csv里必須含id列且是數(shù)字格式 spmatrix import W using W.csv, id(province) * 如果是從GeoDa導(dǎo)出的gal文件 spmat import W from weights.gal, id(province)2.3 權(quán)重矩陣標(biāo)準(zhǔn)化與常見(jiàn)坑點(diǎn)權(quán)重矩陣生成后一般都要做行標(biāo)準(zhǔn)化。行標(biāo)準(zhǔn)化的意思是每一行所有元素之和等于1這樣處理后WY的計(jì)算結(jié)果可以解釋為鄰居變量的加權(quán)平均值模型里的空間滯后項(xiàng)系數(shù)也更容易解讀。STATA里標(biāo)準(zhǔn)化的命令不復(fù)雜spmatrix normalize W, normalize(row) spmat normalize W, row我在這一步踩過(guò)兩次坑。第一次是生成矩陣后忘記標(biāo)準(zhǔn)化直接拿去跑xsmle結(jié)果估計(jì)參數(shù)不收斂檢查之后發(fā)現(xiàn)權(quán)重矩陣的行和差異太大有的行是0.5有的行是8.7極大似然估計(jì)自然不會(huì)穩(wěn)定。第二次是標(biāo)準(zhǔn)化之前沒(méi)有保留原始矩陣后來(lái)想換一種標(biāo)準(zhǔn)化方式只能重新生成。所以我的建議是原始矩陣和標(biāo)準(zhǔn)化矩陣分開(kāi)存命名上用W_raw和W區(qū)分做穩(wěn)健性檢驗(yàn)的時(shí)候能快速切換。還有一個(gè)容易被忽略的問(wèn)題權(quán)重矩陣的對(duì)角元素必須為0??臻g權(quán)重矩陣刻畫(huà)的是別人對(duì)自己的影響自己不能是自己的鄰居。如果構(gòu)建過(guò)程有誤矩陣對(duì)角元素不為0xsmle跑出來(lái)的空間自回歸參數(shù)會(huì)異常偏大看起來(lái)顯著得一塌糊涂實(shí)際上完全是錯(cuò)的。檢查方法不復(fù)雜跑模型前先查看一下矩陣的對(duì)角線(xiàn)即可。3. 空間杜賓模型從原理到STATA命令落地3.1 SDM模型在講什么空間杜賓模型Spatial Durbin Model的常見(jiàn)面板形式是Y_it ρ * ΣW_ij Y_jt X_itβ ΣW_ij X_jtθ μ_i λ_t ε_(tái)it這個(gè)公式看著嚇人逐項(xiàng)拆開(kāi)其實(shí)很直白。第一項(xiàng)ρΣWijYjt是空間滯后項(xiàng)意思是本省的Y會(huì)被鄰居省的Y影響ρ就是這個(gè)溢出效應(yīng)的強(qiáng)度。第三項(xiàng)ΣWijXjtθ是解釋變量的空間滯后項(xiàng)它捕捉的是鄰居省的解釋變量對(duì)本地Y的影響這也是SDM和SAR模型的核心區(qū)別——SAR只考慮Y之間的互相依賴(lài)SDM還考慮了X的跨區(qū)域效應(yīng)。最后μi和λt分別是個(gè)體固定效應(yīng)和時(shí)間固定效應(yīng)。順著這個(gè)思路SDM的優(yōu)勢(shì)就出來(lái)了它同時(shí)包含Y的溢出和X的溢出不像SAR和SEM那樣只刻畫(huà)其中一種。實(shí)際研究里你不確定空間交互是通過(guò)被解釋變量還是解釋變量傳導(dǎo)的直接用SDM是一個(gè)相對(duì)安全的起點(diǎn)。但這里要強(qiáng)調(diào)一句SDM不是萬(wàn)能藥如果真實(shí)模型是空間誤差相關(guān)貿(mào)然用SDM反而會(huì)得到有偏的估計(jì)所以模型選擇檢驗(yàn)是必須做的。3.2 模型選擇檢驗(yàn)先別急著跑SDM比較規(guī)范的流程是先用普通面板OLS然后做LM檢驗(yàn)判斷空間效應(yīng)的形式。* 第一步跑普通OLS reg y x1 x2 * 第二步安裝并運(yùn)行空間診斷命令 ssc install spatdiag spatdiag, weights(W)spatdiag的輸出里有兩個(gè)關(guān)鍵指標(biāo)空間滯后項(xiàng)的LM檢驗(yàn)和空間誤差項(xiàng)的LM檢驗(yàn)同時(shí)各自帶一個(gè)Robust版本。判斷邏輯不復(fù)雜只有空間滯后的LM顯著優(yōu)先考慮SAR只有空間誤差的LM顯著優(yōu)先考慮SEM兩個(gè)都顯著存在雙重空間依賴(lài)SDM是合適的選擇兩個(gè)都不顯著空間效應(yīng)可能真的不顯著或者權(quán)重矩陣構(gòu)造有問(wèn)題。如果LM結(jié)果顯示空間效應(yīng)確實(shí)存在而且你打算用SDM強(qiáng)烈建議再跑一下LR/Wald檢驗(yàn)驗(yàn)證SDM能否簡(jiǎn)化為SAR或SEM。原假設(shè)分別是θ0SDM退化為SAR和θρβ0SDM退化為SEM。xsmle結(jié)果基礎(chǔ)上可以用lrtest這樣操作* 比較SDM與SAR、SDM與SEM xsmle y x1 x2, wmat(W) model(sdm) fe nolog est store m_sdm xsmle y x1 x2, wmat(W) model(sar) fe nolog est store m_sar lrtest m_sdm m_sar xsmle y x1 x2, wmat(W) model(sem) fe nolog est store m_sem lrtest m_sdm m_sem如果兩個(gè)LR檢驗(yàn)都拒絕原假設(shè)說(shuō)明SDM相對(duì)SAR和SEM都有顯著改進(jìn)可以理直氣壯用SDM。如果某一個(gè)不能拒絕選更簡(jiǎn)潔的那個(gè)模型就夠了沒(méi)必要為了顯得自己會(huì)用SDM就硬上。3.3 xsmle命令實(shí)操與效應(yīng)分解模型定了之后估計(jì)的部分基本交給xsmle。這個(gè)命令要先從SSC安裝ssc install xsmle最基礎(chǔ)的SDM固定效應(yīng)寫(xiě)法xtset province year xsmle y x1 x2, wmat(W) model(sdm) fe type(both) nolog幾個(gè)選項(xiàng)必須說(shuō)明白。model(sdm)指定模型類(lèi)型可選sar、sem、sdm、sac等wmat(W)指定權(quán)重矩陣注意這里用的是標(biāo)準(zhǔn)化后的矩陣fe是固定效應(yīng)type(both)表示個(gè)體和時(shí)間雙向固定效應(yīng)如果只需要個(gè)體固定效應(yīng)寫(xiě)成type(ind)就行。隨機(jī)效應(yīng)則用re選項(xiàng)。結(jié)果表里最先看的是rho即空間自回歸系數(shù)衡量的是鄰居Y的整體影響。如果rho顯著為正說(shuō)明存在正向的空間溢出效應(yīng)。然后是各解釋變量的系數(shù)β以及WX那部分的系數(shù)θ。這里特別提醒在SDM里解釋變量對(duì)Y的總影響不能只看β因?yàn)猷従拥腦和Y都會(huì)反哺回來(lái)所以必須做效應(yīng)分解。xsmle提供了現(xiàn)成的分解方式xsmle y x1 x2, wmat(W) model(sdm) fe type(both) nolog dydx加dydx之后的結(jié)果表會(huì)多出Direct、Indirect和Total三組。Direct是直接效應(yīng)即本省X對(duì)本省Y的總影響它包含了空間反饋效應(yīng)Indirect是間接效應(yīng)也叫空間溢出效應(yīng)即本省X通過(guò)空間交互對(duì)鄰居省Y的影響Total是兩者之和。論文里最經(jīng)常報(bào)告的就是這幾列尤其間接效應(yīng)是否顯著往往直接決定了能不能得出存在空間溢出的結(jié)論。4. 常見(jiàn)問(wèn)題與排查思路4.1 權(quán)重矩陣報(bào)錯(cuò)matrix not found、維度對(duì)不上這是被問(wèn)得最多的一類(lèi)問(wèn)題。常見(jiàn)報(bào)錯(cuò)信息是matrix W not found或W has wrong dimension。前者多半是權(quán)重矩陣不在當(dāng)前數(shù)據(jù)環(huán)境中——比如換了另一個(gè)dta文件或者存了矩陣但沒(méi)有讀取后者則和面板的橫截面?zhèn)€體數(shù)量不匹配有關(guān)。排查思路很簡(jiǎn)單先確認(rèn)當(dāng)前樣本里的province數(shù)量再確認(rèn)矩陣的行列數(shù)。我踩過(guò)一次很典型的坑原始數(shù)據(jù)里有31個(gè)省份清理缺失值后只剩29個(gè)但權(quán)重矩陣還是31×31跑xsmle直接報(bào)錯(cuò)。解決方法是先對(duì)數(shù)據(jù)進(jìn)行完整清理用xtset確認(rèn)后再重新生成或篩選權(quán)重矩陣別指望STATA能自動(dòng)對(duì)齊。4.2 面板數(shù)據(jù)設(shè)定與缺失值處理xsmle對(duì)面板結(jié)構(gòu)的要求很?chē)?yán)格。使用之前務(wù)必先xtset橫截面維度要和權(quán)重矩陣的id保持一致。如果你的數(shù)據(jù)是非平衡面板xsmle有時(shí)候會(huì)不兼容穩(wěn)妥的做法是先決定是保留完整觀測(cè)樣本還是用插補(bǔ)方法把面板補(bǔ)平衡。另一種常見(jiàn)問(wèn)題是核心變量有少數(shù)缺失值直接刪除后模型報(bào)observation dropped結(jié)果權(quán)重矩陣對(duì)不上。我的習(xí)慣是生成一個(gè)analysis樣本并同時(shí)生成對(duì)應(yīng)的權(quán)重矩陣保證每次跑的樣本是完全匹配的。如果數(shù)據(jù)是從Excel導(dǎo)入的還容易遇到中文變量名亂碼可以在import excel時(shí)指定encoding(UTF-8)或先轉(zhuǎn)換為dta格式再讀入能省掉不少麻煩。4.3 固定效應(yīng)與隨機(jī)效應(yīng)的選擇細(xì)節(jié)面板SDM的固定效應(yīng)設(shè)置我見(jiàn)過(guò)最多的誤操作是把fe和re都跑一遍哪個(gè)結(jié)果好看就報(bào)哪個(gè)這樣審稿人一眼就能看出問(wèn)題。規(guī)范做法是先用Hausman檢驗(yàn)判斷。STATA里xtreg加上hausman可以處理無(wú)空間項(xiàng)的基準(zhǔn)模型有空間項(xiàng)的模型一般會(huì)參考同類(lèi)檢驗(yàn)或者同時(shí)報(bào)告SAR、SDM的FE和RE結(jié)果。xsmle的re估計(jì)在小樣本下表現(xiàn)不太穩(wěn)定個(gè)人經(jīng)驗(yàn)是樣本量不夠大的時(shí)候優(yōu)先用雙向固定效應(yīng)但也要配合LM檢驗(yàn)的結(jié)果一起匯報(bào)這樣經(jīng)得起追問(wèn)。4.4 權(quán)重矩陣的保存與復(fù)用研究過(guò)程中要跑很多輪每次都重新生成權(quán)重矩陣既浪費(fèi)時(shí)間也容易出錯(cuò)。spmat和spmatrix都支持保存和讀取。spmatrix用spmatrix export把矩陣導(dǎo)出到文件下次用spmatrix import讀回來(lái)spmat可以用spmat save和spmat use。我的習(xí)慣是把所有權(quán)重矩陣和對(duì)應(yīng)說(shuō)明統(tǒng)一放在一個(gè)weights文件夾里命名類(lèi)似W_queen_binary.dta、W_queen_row.dta、W_dist_binary.dta跑模型時(shí)按需讀取。這樣整個(gè)研究過(guò)程的矩陣來(lái)源清晰寫(xiě)methodology部分時(shí)也不用翻聊天記錄。最后分享一點(diǎn)個(gè)人體會(huì)空間計(jì)量最容易出問(wèn)題的往往不是模型選擇而是數(shù)據(jù)環(huán)節(jié)。權(quán)重矩陣和樣本不匹配、邊界坐標(biāo)有誤、標(biāo)準(zhǔn)化方式混亂這些問(wèn)題一旦出現(xiàn)后期結(jié)果解讀就全部失真。所以我建議寧可在準(zhǔn)備階段多花兩天把矩陣和樣本的對(duì)應(yīng)關(guān)系理得清清楚楚也不要急著跑回歸跑出一堆漂亮數(shù)字最后發(fā)現(xiàn)是錯(cuò)誤矩陣的產(chǎn)物那才是真正的浪費(fèi)功夫。本文還有配套的精品資源點(diǎn)擊獲取