量入門:GeoDa實(shí)操從權(quán)重矩陣到莫蘭指數(shù)與空間回歸)
簡介面向空間計(jì)量學(xué)入門學(xué)習(xí)者的GeoDa實(shí)操案例數(shù)據(jù)包涵蓋空間依賴性、空間異質(zhì)性、空間權(quán)重矩陣、Morans I全局與局部統(tǒng)計(jì)、空間滯后/誤差模型及地理加權(quán)回歸等方法的入門應(yīng)用。文件總計(jì)17個(gè)以GeoDa可直接加載的Shapefile.shp/.dbf/.shx為主配合sbn/sbx空間索引、HTML說明頁面與PDF補(bǔ)充文檔壓縮包僅1.13MB輕量便捷。已有437人瀏覽學(xué)習(xí)適合地理信息系統(tǒng)、區(qū)域科學(xué)及城市經(jīng)濟(jì)地理方向的學(xué)生和研究人員。借助圣路易斯、薩克拉門托等案例數(shù)據(jù)可練習(xí)數(shù)據(jù)整理、空間自相關(guān)檢驗(yàn)、熱點(diǎn)識(shí)別、回歸建模與地圖可視化掌握從探索性分析到結(jié)果解讀的完整流程。1. 空間計(jì)量學(xué)入門先別啃公式讓 GeoDa 把數(shù)據(jù)跑給你看空間計(jì)量學(xué)入門最讓人頭疼的不是公式本身而是公式對(duì)應(yīng)的地圖直覺遲遲建立不起來。教材一上來就擺空間權(quán)重矩陣、空間滯后項(xiàng)、拉格朗日乘數(shù)檢驗(yàn)術(shù)語密度太高很多人在第一步就放棄了。我見過不少同學(xué)卡在“為什么我算出的 Moran’s I 和教材不一樣”這種問題上其實(shí)多半不是算錯(cuò)而是權(quán)重矩陣或數(shù)據(jù) ID 沒對(duì)齊。GeoDa 把這扇門撬開了一條縫它免費(fèi)、圖形化空間權(quán)重矩陣、全局 Moran、LISA、空間回歸都能在一個(gè)界面里點(diǎn)出來不用寫代碼就能看到完整結(jié)果。這個(gè)空間計(jì)量學(xué)入門與 GeoDa 軟件應(yīng)用案例數(shù)據(jù) zip 包正好是圍繞這套工具組織的練習(xí)材料包含邊界數(shù)據(jù)、示例屬性和典型操作路徑適合第一次碰空間分析、正在寫論文的同學(xué)按順序復(fù)現(xiàn)。這篇筆記按實(shí)際操作順序展開解壓數(shù)據(jù)、建權(quán)重矩陣、跑莫蘭指數(shù)和 LISA、做空間回歸最后把踩過的坑集中列出來。你不需要提前掌握矩陣推導(dǎo)會(huì)裝 GeoDa、認(rèn)得清 shp 和 CSV 就夠了。2. 空間權(quán)重矩陣解壓后第一件事把數(shù)據(jù) ID 和鄰接關(guān)系對(duì)齊2.1 空間權(quán)重矩陣是骨不是可有可無的細(xì)節(jié)空間計(jì)量和普通回歸最大的區(qū)別就是多了一張空間權(quán)重矩陣 W。它 n 行 n 列n 是樣本區(qū)域個(gè)數(shù)第 i 行第 j 列表示 j 對(duì) i 的空間影響。Moran 指數(shù)的分子要乘 W空間回歸里的空間滯后項(xiàng) W·y 也要用到 W所以權(quán)重矩陣一旦建錯(cuò)后面每一步都是錯(cuò)的而且錯(cuò)誤通常不報(bào)錯(cuò)只輸出一個(gè)“看似合理但跟預(yù)期完全對(duì)不上”的結(jié)果。挑選權(quán)重類型的邏輯并不復(fù)雜。用省級(jí)面板、市轄區(qū)這類邊界整齊的行政區(qū)劃時(shí)Queen 鄰接最直觀共點(diǎn)或共邊都算鄰居網(wǎng)格狀或街區(qū)形態(tài)的數(shù)據(jù)用 Rook 鄰接更嚴(yán)謹(jǐn)只認(rèn)共邊點(diǎn)位型數(shù)據(jù)比如企業(yè)數(shù)據(jù)、氣象站數(shù)據(jù)用距離閾值或 K 近鄰更合理。四種常見類型對(duì)比如下權(quán)重類型構(gòu)建邏輯適用場景注意點(diǎn)Queen 鄰接共點(diǎn)或共邊都算鄰居省、市、區(qū)縣邊界數(shù)據(jù)可能出現(xiàn)孤島單元Rook 鄰接只共邊才算鄰居網(wǎng)格狀、街區(qū)型數(shù)據(jù)對(duì)角線接觸會(huì)被忽略距離閾值距離小于閾值算鄰居企業(yè)、采樣點(diǎn)等點(diǎn)位數(shù)據(jù)閾值選擇敏感K 近鄰每個(gè)區(qū)域取最近的 K 個(gè)形狀差異大、有孤島的數(shù)據(jù)K 太大會(huì)引入遠(yuǎn)距離關(guān)系對(duì)剛?cè)腴T的人我先建議只記住一條先用 Queen 一階鄰接 行標(biāo)準(zhǔn)化把全流程跑通等理解了結(jié)果再回來試 K 近鄰和距離閾值。不要一開始就同時(shí)比較十幾種權(quán)重那是穩(wěn)健性檢驗(yàn)階段才做的事。2.2 解壓 zip 包并確認(rèn)數(shù)據(jù)文件無論案例包從哪里下載第一步永遠(yuǎn)是完整解壓到一個(gè)獨(dú)立目錄。我習(xí)慣在用戶目錄下建一個(gè) spatial_lab 之類的英文目錄而不是直接解壓到桌面因?yàn)?GeoDa 對(duì)全角空格、中文路徑和深層嵌套目錄的兼容性不穩(wěn)定Windows 上遇到中文目錄容易直接打不開 shapefile。解壓命令如下mkdir -p ~/spatial_lab unzip 空間計(jì)量學(xué)入門與GeoDa軟件應(yīng)用案例數(shù)據(jù).zip -d ~/spatial_lab/ cd ~/spatial_lab ls -la-d 參數(shù)把文件統(tǒng)一釋放到指定目錄避免 zip 內(nèi)部的多級(jí)目錄把項(xiàng)目拆得七零八落mkdir -p 保證目標(biāo)目錄存在。解壓后不要急著啟動(dòng) GeoDa先檢查解壓出來的文件結(jié)構(gòu)。一個(gè)典型的空間計(jì)量案例包至少包含四部分.shp 邊界幾何文件、.dbf 屬性表、.shx 索引文件以及 .csv 或 .dbf 格式的統(tǒng)計(jì)指標(biāo)整理得完整的還會(huì)帶權(quán)重文件 .gal/.gwt 和工程文件 .gda。用 ls 看得不放心可以再用 file 命令確認(rèn)文件不是空殼file *.shp *.dbf *.csv如果輸出里出現(xiàn) empty file 或 broken說明 zip 包在傳輸或解壓過程中出了問題換一個(gè)解壓工具重新解壓即可。這里還有個(gè)常見的理解誤差GeoDa 里的“打開數(shù)據(jù)”并不等于“打開 Excel 表格”它必須有一份帶空間位置的邊界文件兜底光有 CSV 是畫不出地圖的。如果壓縮包里帶 .gda 工程文件直接雙擊它進(jìn) GeoDa 即可沒有的話就按下面的 Shapefile 流程走。2.3 在 GeoDa 里創(chuàng)建一份可用的 Queen 鄰接權(quán)重打開 GeoDa 后通過 File → Open → Shapefile 選中剛才解壓的 .shp。打開后左側(cè)是地圖窗口右側(cè)是屬性表窗口這時(shí)候先別急著做分析先確認(rèn)屬性表里有沒有一個(gè)唯一且無空值的 ID 字段。省/縣代碼、統(tǒng)計(jì)代碼都行但必須是整數(shù)類型。隨后從菜單打開 Tools → Weights Manager在權(quán)重管理器中點(diǎn) Create按下面幾步設(shè)置權(quán)重類型選擇 Contiguity Weight階數(shù) Order 寫 1鄰接規(guī)則選 Queen ContiguityID 變量選擇剛才確認(rèn)好的整數(shù)代碼字段保存路徑保持默認(rèn)權(quán)重文件會(huì)以 .gal 后綴寫到磁盤點(diǎn)擊 Create回到 Weights Manager 主面板確認(rèn)總樣本數(shù)與屬性表行數(shù)一致。完成后最重要的一件事是打開權(quán)重文件看一眼別直接進(jìn)入分析。.gal 文件是純文本用文本編輯器就能看到province_weight.GAL 31 31 1 3 2 3 4 2 3 1 4 5 3 4 1 2 5 6第一行是文件名第二行前半是區(qū)域總數(shù)從第三行開始每一行第一個(gè)數(shù)字是區(qū)域 ID第二個(gè)數(shù)字是鄰居個(gè)數(shù)后面跟著的就是鄰居 ID 列表。我一般會(huì)重點(diǎn)檢查有沒有“第二個(gè)數(shù)字是 0”的行那意味著某個(gè)區(qū)域在 Queen 鄰接下沒有鄰居也就是孤島單元后續(xù)分析會(huì)因此出問題。權(quán)重矩陣的對(duì)齊檢查應(yīng)該像做數(shù)據(jù)清洗一樣固定下來。2.4 行標(biāo)準(zhǔn)化默認(rèn)勾選別關(guān)掉創(chuàng)建權(quán)重時(shí)GeoDa 會(huì)默認(rèn)勾上 Row-standardize。不要手癢關(guān)掉它。行標(biāo)準(zhǔn)化的意思是把權(quán)重矩陣每一行的值除以該行總和讓每個(gè)區(qū)域的鄰居影響權(quán)重之和等于 1。這樣做最大的好處是空間滯后項(xiàng) W·y 從“鄰居的總和”變成“鄰居的平均值”參數(shù)的可解釋性好很多。如果不做行標(biāo)準(zhǔn)化一個(gè)被 8 個(gè)鄰居包圍的區(qū)域和一個(gè)只有 2 個(gè)鄰居的區(qū)域即使鄰居取值完全相同算出來的 W·y 也差好幾倍回歸系數(shù)會(huì)因此失真。GeoDa 的 Moran’s I 和回歸面板都會(huì)讀取權(quán)重文件的標(biāo)準(zhǔn)化屬性如果你用 .gwt 格式的距離權(quán)重更要在權(quán)重創(chuàng)建時(shí)就確認(rèn)行標(biāo)準(zhǔn)化被勾選。我個(gè)人的習(xí)慣是不管用什么權(quán)重類型全部統(tǒng)一行標(biāo)準(zhǔn)化如果為了穩(wěn)健性比較不同權(quán)重也會(huì)把標(biāo)準(zhǔn)化方式固定為同一種避免把“權(quán)重類型不同”和“標(biāo)準(zhǔn)化方式不同”兩個(gè)因素混在一起。空間計(jì)量里很多令人困惑的差異追到根上都是這種細(xì)節(jié)沒固定住。3. Moran’s I 與 LISA全局自相關(guān)的顯著性檢驗(yàn)和散點(diǎn)圖讀法3.1 全局 Moran’s I一個(gè)數(shù)衡量全域空間自相關(guān)空間自相關(guān)檢驗(yàn)的核心工具就是全局 Moran’s I。它衡量同一個(gè)變量在相鄰區(qū)域之間是趨向于相似、相反還是完全隨機(jī)。公式寫出來是這個(gè)樣子I (n / S0) * [∑∑ w_ij (x_i - x?)(x_j - x?)] / [∑ (x_i - x?)2]其中 S0 是所有 w_ij 之和如果權(quán)重做了行標(biāo)準(zhǔn)化S0 就等于 n公式會(huì)簡化不少??粗鴱?fù)雜但它做的事就是“把相鄰區(qū)域之間的協(xié)方差歸一化”。這里有一個(gè)非常值得說的細(xì)節(jié)在原假設(shè)“空間隨機(jī)分布”下Moran 指數(shù)的數(shù)學(xué)期望是 -1/(n-1)不是 0。只有當(dāng)區(qū)域個(gè)數(shù)特別大時(shí)這個(gè)期望才趨近于 0。所以你看到結(jié)果里 Moran0.02、p0.3不代表分析沒意義而是變量在當(dāng)前權(quán)重定義下沒有顯著的空間自相關(guān)。如果 Moran 指數(shù)顯著為正說明相鄰區(qū)域取值傾向相似也就是存在正空間自相關(guān)熱點(diǎn)和冷點(diǎn)會(huì)成片出現(xiàn)。顯著為負(fù)則說明相鄰區(qū)域取值傾向相反比如高值被低值包圍這種情況在現(xiàn)實(shí)中多見于行政邊界跨界的污染或稅收競爭數(shù)據(jù)。要判斷顯著與否不是看指數(shù)絕對(duì)值大小而是看基于置換的偽 p 值。3.2 在 GeoDa 里運(yùn)行全局 Moran 并讀懂四個(gè)象限操作路徑是 Space → Univariate Moran’s I中文界面會(huì)顯示“單變量莫蘭指數(shù)”。在彈出的對(duì)話框里選擇要分析的變量下面的權(quán)重文件選 2.3 節(jié)生成的那份 .gal點(diǎn)擊 OK 后會(huì)同時(shí)出現(xiàn)兩個(gè)窗口Moran 散點(diǎn)圖和統(tǒng)計(jì)報(bào)告。散點(diǎn)圖的橫軸是變量標(biāo)準(zhǔn)化值縱軸是空間滯后值 W·y四個(gè)象限分別對(duì)應(yīng)四種局部格局右上角的 HH 表示高值區(qū)和相鄰高值區(qū)聚集左下角 LL 是低值與低值相鄰左上角 LH 表示低值被高值包圍右下角 HL 表示高值被低值包圍。散點(diǎn)圖回歸線的斜率就是全局 Moran 指數(shù)本身。有一點(diǎn)必須提醒散點(diǎn)圖里的點(diǎn)越分散回歸線斜率越受異常點(diǎn)影響所以報(bào)告里要同時(shí)看 p 值和剔除明顯離群點(diǎn)后的結(jié)果。在統(tǒng)計(jì)報(bào)告窗口里重點(diǎn)看三個(gè)字段Moran’s I 值、pseudo p-value偽 p 值、permutations置換次數(shù)。GeoDa 默認(rèn)使用隨機(jī)置換檢驗(yàn)一般默認(rèn) 999 次。我做論文時(shí)會(huì)拉到 9999 次并且把置換次數(shù)直接寫在結(jié)果描述里因?yàn)?9999 次得到的偽 p 值穩(wěn)定得多審稿人也不會(huì)問“為什么換個(gè)隨機(jī)種子結(jié)果就變了”。這里穿插一個(gè)解釋偽 p 值的含義是把變量取值隨機(jī)打亂后再計(jì)算 Moran 指數(shù)重復(fù)上千次后看真實(shí)觀察到的 Moran 在隨機(jī)分布中的位置。如果只有 2% 的隨機(jī)結(jié)果比真實(shí)值更大那 p 值就是 0.02。所以置換次數(shù)越少p 值本身的隨機(jī)性越大。3.3 LISA從“一個(gè)數(shù)”到“一張分布地圖”全局 Moran 只給你一個(gè)總體數(shù)值。如果全局檢驗(yàn)顯著你自然會(huì)追問哪些區(qū)域是真正的高值集聚區(qū)這就是局部 Moran LISA 要解決的問題。在 GeoDa 里運(yùn)行 Space → Univariate LISA選擇同樣的變量和權(quán)重文件置換次數(shù)同樣建議設(shè)為 9999。運(yùn)行結(jié)果會(huì)同時(shí)打開集聚圖、顯著性地圖、散點(diǎn)圖等多個(gè)窗口。集聚圖的每個(gè)區(qū)域按局部自相關(guān)類型著色集聚類型含義常見解讀高-高HH該區(qū)域本身高值鄰居也高值熱點(diǎn)區(qū)帶動(dòng)效應(yīng)強(qiáng)低-低LL該區(qū)域和鄰居都低值冷點(diǎn)區(qū)容易被忽視高-低HL該區(qū)域高值鄰居低值極化點(diǎn)虹吸或統(tǒng)計(jì)離群低-高LH該區(qū)域低值鄰居高值凹陷點(diǎn)統(tǒng)計(jì)離群需要理解的是集聚圖里所有有顏色的區(qū)域都是局部 Moran 指數(shù)對(duì)應(yīng)的偽 p 值小于設(shè)定水平通常是 0.05。LISA 分析本質(zhì)上涉及多次檢驗(yàn)所以不應(yīng)該把 0.1 這種寬松水平拿來做結(jié)論。如果樣本量很大反而要更嚴(yán)格。這里有兩個(gè)判斷標(biāo)準(zhǔn)供參考全局 Moran 顯著 LISA 圖能看出來成片的熱點(diǎn)和冷點(diǎn)基本可以判定變量有可靠的空間結(jié)構(gòu)如果全局顯著但 LISA 全是散點(diǎn)、沒有一個(gè)像樣的集聚區(qū)就回去檢查權(quán)重矩陣或數(shù)據(jù)里的離群值大概率是某個(gè)異常區(qū)域在拖著全體結(jié)果。3.4 用 PySAL 復(fù)核 GeoDa 算出的數(shù)GeoDa 是個(gè)圖形界面很多同學(xué)在論文里被追問“這個(gè) p 值是怎么算出來的”回答不上來。其實(shí) GeoDa 的結(jié)果完全可以用 Python 的 PySAL 復(fù)核。下面是復(fù)核全局 Moran 和 LISA 的最小腳本import geopandas as gpd import libpysal as lp from esda.moran import Moran, Moran_Local # 讀取邊界和權(quán)重 gdf gpd.read_file(province.shp, encodingutf-8) w lp.io.open(province_weight.gal).read() w.transform r # 行標(biāo)準(zhǔn)化對(duì)應(yīng) GeoDa 里的 Row-standardize # 全局 Moran y gdf[gdp_percap] moran Moran(y, w, permutations9999) print(fMorans I {moran.I:.4f}, pseudo p {moran.p_sim:.4f}) # 局部 LISA lisa Moran_Local(y, w, permutations9999) print(lisa.q) # 四個(gè)象限分類結(jié)果 print(lisa.p_sim) # 每個(gè)區(qū)域的偽 p 值說明三點(diǎn)一是 geopandas 的 read_file 需要正確指定編碼中文屬性表建議先做編碼檢查二是 w.transform r 必須和 GeoDa 里創(chuàng)建權(quán)重時(shí)的行標(biāo)準(zhǔn)化保持一致三是 permutations 指定 9999這個(gè)參數(shù)直接影響偽 p 值穩(wěn)定性。如果 GeoDa 和 PySAL 的結(jié)果差異在小數(shù)點(diǎn)后兩位以內(nèi)說明分析沒跑偏如果對(duì)不上先檢查權(quán)重的樣本數(shù)是否一致再檢查 ID 是否對(duì)齊。4. 空間回歸模型從 OLS 到空間滯后/空間誤差模型的選擇邏輯4.1 為什么 OLS 在空間數(shù)據(jù)上不靠譜回歸分析的第一步永遠(yuǎn)是 OLS。空間數(shù)據(jù)里經(jīng)常出現(xiàn)兩個(gè)問題殘差存在空間自相關(guān)或者解釋變量存在空間溢出。只要有一個(gè)出現(xiàn)OLS 的系數(shù)標(biāo)準(zhǔn)誤就是錯(cuò)的顯著性檢驗(yàn)也失去意義。所以空間回歸不是“換個(gè)高級(jí)模型”而是讓回歸結(jié)果在空間依賴存在時(shí)依然可信??臻g依賴的兩種典型結(jié)構(gòu)對(duì)應(yīng)兩種模型。第一種是空間滯后模型SAR被解釋變量 y 本身會(huì)受到相鄰區(qū)域 y 的影響寫成 y ρW·y Xβ ε。ρ 是空間自回歸系數(shù)它刻畫的是“鄰居的結(jié)果會(huì)傳染到本地”。第二種是空間誤差模型SEM空間依賴進(jìn)入擾動(dòng)項(xiàng)寫成帶 λ 的誤差結(jié)構(gòu)它刻畫的是“鄰居那邊未觀測到的因素傳導(dǎo)到了本地”。選擇哪一種不能靠拍腦袋要靠檢驗(yàn)。GeoDa 的 OLS 輸出里有一個(gè)專門的板塊報(bào)告 LM 檢驗(yàn)拉格朗日乘數(shù)檢驗(yàn)及穩(wěn)健版判斷該用哪種空間結(jié)構(gòu)。經(jīng)驗(yàn)上如果被解釋變量有明顯的擴(kuò)散、傳染、示范效應(yīng)比如房價(jià)、技術(shù)采用率、犯罪率優(yōu)先懷疑 SAR如果主要是遺漏變量或區(qū)域沖擊導(dǎo)致的空間關(guān)聯(lián)優(yōu)先懷疑 SEM。4.2 先跑 OLS再看 LM 檢驗(yàn)決定后一步在 GeoDa 里跑 OLS 的操作Methods → Regression部分版本菜單位置略有差異但名稱不變在回歸對(duì)話框中把 Y 變量選為被解釋變量加入若干 X 解釋變量運(yùn)行后先看回歸結(jié)果和殘差同時(shí)把 LM 檢驗(yàn)數(shù)據(jù)留好。LM 檢驗(yàn)輸出四行關(guān)鍵結(jié)果LM-Lag、LM-Err、Robust LM-Lag、Robust LM-Err。它們是兩兩配對(duì)的決策規(guī)則歸納如下LM-LagLM-Err選型建議顯著不顯著空間滯后模型 SAR不顯著顯著空間誤差模型 SEM兩者都顯著兩者都顯著看穩(wěn)健版中更顯著的那個(gè)兩者都不顯著兩者都不顯著維持 OLS不必強(qiáng)加空間項(xiàng)這條規(guī)則是空間計(jì)量里公認(rèn)的操作順序不是玄學(xué)。要注意的是若 LM-Lag 和 LM-Err 都顯著而各版本也分不出高下就需要考慮空間杜賓模型SDM做進(jìn)一步檢驗(yàn)。GeoDa 的標(biāo)準(zhǔn)面板里沒有 SDM通常轉(zhuǎn)入 R 的 spdep 包或 Python 處理入門階段先掌握 SAR 和 SEM 就夠了。4.3 在 GeoDa 里運(yùn)行空間滯后/空間誤差模型明確了選型之后回到回歸對(duì)話框把模型從 OLS 切換為 Spatial Lag 或 Spatial Error并在空間權(quán)重欄選擇 2.3 節(jié)生成的權(quán)重文件。GeoDa 在這個(gè)面板里會(huì)顯示權(quán)重文件名稱和具體模型設(shè)置。運(yùn)行前再確認(rèn)三件事一是權(quán)重文件已經(jīng)行標(biāo)準(zhǔn)化二是樣本量與權(quán)重矩陣一致三是解釋變量不要包含因變量的線性組合比如 Y 和 Y 的滯后項(xiàng)不能同時(shí)放。GeoDa 對(duì)這三項(xiàng)沒有強(qiáng)制報(bào)錯(cuò)但它們都會(huì)讓輸出出現(xiàn)奇怪的不可讀結(jié)果。運(yùn)行結(jié)束后輸出會(huì)多出幾項(xiàng)關(guān)鍵統(tǒng)計(jì)量對(duì)空間滯后模型直接看 ρ對(duì)空間誤差模型直接看 λ。如果 ρ 或 λ 不顯著說明加入空間結(jié)構(gòu)后并未改進(jìn)模型這時(shí)應(yīng)該回到 LM 檢驗(yàn)重新審視選型而不是強(qiáng)行保留一個(gè)不顯著的空間項(xiàng)??臻g回歸模型的 R2 也不能直接和 OLS 的 R2 對(duì)比因?yàn)榭臻g模型用極大似然估計(jì)MLE提供的是偽 R2。真正用于比較的是 log-likelihood 和 AIC/SC哪個(gè)數(shù)值更優(yōu)說明模型解釋力更強(qiáng)。很多新手拿 OLS 的 R2 和空間模型的偽 R2 直接比較得出“空間模型不如 OLS”的結(jié)論這是錯(cuò)誤比較。4.4 讀懂輸出里的“直接效應(yīng)”和“間接效應(yīng)”空間滯后模型里ρ 顯著不為零時(shí)解釋變量的系數(shù) β 不能再按普通線性回歸的語氣解釋。以房價(jià)數(shù)據(jù)為例解釋變量就業(yè)密度提高 1 個(gè)單位不僅直接抬升本地區(qū)房價(jià)還會(huì)通過空間滯后項(xiàng)把影響傳導(dǎo)到鄰居鄰居又反過來影響本地區(qū)形成反饋循環(huán)。所以嚴(yán)格意義上要把效應(yīng)分解成直接效應(yīng)和間接效應(yīng)空間溢出效應(yīng)。GeoDa 的回歸輸出本身不直接給分解表但很多研究者會(huì)把 ρ 和 β 代入公式用 R 的 spatialreg 包求均值。入門階段至少要做到不把 β 孤立地念成“每增加一個(gè)單位Y 增加多少”而是說“在 ρ 顯著的情況下存在空間反饋”??臻g誤差模型則不同雖然 λ 顯著但解釋變量的系數(shù)解釋與 OLS 基本相同因?yàn)榭臻g結(jié)構(gòu)在誤差項(xiàng)里不改變 X 對(duì) Y 的邊際效應(yīng)。寫論文時(shí)SAR 模型談溢出SEM 模型談濾波后的關(guān)系二者解釋方式不一樣。回看一遍 4.2 的選型規(guī)則比直接在結(jié)果里挑一個(gè)好看的 ρ 靠譜得多。5. 避坑清單GeoDa 數(shù)據(jù)分析和 zip 解壓里最常翻車的五個(gè)細(xì)節(jié)5.1 中文路徑與 zip 解壓亂碼GeoDa 直接打不開 shp現(xiàn)象zip 解壓后雙擊或用 File → Open 選路徑GeoDa 報(bào)錯(cuò)或地圖窗口空白同一個(gè)文件在 QGIS 里卻能正常打開。原因壓縮包里的中文目錄名在 Windows 默認(rèn)解壓后可能變成亂碼GeoDa 對(duì)路徑中的中文、全角空格、特殊字符兼容性不好老的壓縮包用 GBK 編碼打包在 macOS 或 Linux 上解壓后目錄名也可能亂掉。解決把解壓目標(biāo)目錄改成純英文比如 C:\geo_lab 或 ~/spatial_lab內(nèi)部文件名也盡量改成 province.shp 這種短名稱。命名的第一原則就是路徑中不要出現(xiàn)中文zip 包本身是中文名沒關(guān)系解壓后的頂層目錄一定要重命名為英文。5.2 屬性表中文亂碼CSV/DBF 編碼不一致現(xiàn)象在 GeoDa 屬性表窗口看到的省名、市名全是亂碼用 CSV 做表連接時(shí)連接鍵明明一樣卻匹配不上。原因?qū)傩詳?shù)據(jù)是 GBK/GB2312 編碼保存的GeoDa 默認(rèn)按 UTF-8 讀取或者反過來文件是 UTF-8但舊的編輯工具保存時(shí)落了 BOM 標(biāo)記導(dǎo)致第一列名稱異常。解決用 VS Code 或 Notepad 打開 CSV重新編碼為 UTF-8 后保存注意保存時(shí)帶 BOM 而不是純 UTF-8GeoDa 對(duì)帶 BOM 的 UTF-8 識(shí)別更穩(wěn)定。DBF 文件則盡量用數(shù)據(jù)管理工具轉(zhuǎn)存為 CSV 再做關(guān)聯(lián)。每次拿到新數(shù)據(jù)先花半分鐘檢查編碼能省下后面一個(gè)小時(shí)的排查時(shí)間。5.3 ID 不匹配權(quán)重矩陣對(duì)不上數(shù)據(jù)現(xiàn)象創(chuàng)建權(quán)重時(shí)一切正常但做 Moran 或回歸時(shí)GeoDa 提示權(quán)重與數(shù)據(jù)觀測數(shù)不一致或者結(jié)果窗口里全是缺失值。原因shapefile 屬性表里的 ID 字段和權(quán)重文件里的 ID 編號(hào)不是同一套比如數(shù)據(jù)里用省名“北京”權(quán)重里卻用代碼 11或者 CSV 合并時(shí)兩個(gè)表的連接字段類型不一致一個(gè)是整數(shù)一個(gè)是字符串。解決先統(tǒng)一 ID。推薦做法是創(chuàng)建一個(gè)整數(shù)型 ID 列比如行政區(qū)劃代碼讓 shp 和 CSV 都用這個(gè)字段做主鍵。在 GeoDa 的表窗口可以右鍵新增變量并重新編碼導(dǎo)入 CSV 后用 Table → Merge 合并再檢查唯一性和缺失值。權(quán)重文件里的 ID 順序必須與主表一致這是所有空間分析能跑通的前提。5.4 孤島單元鄰接權(quán)重整行是零現(xiàn)象Weights Manager 里創(chuàng)建權(quán)重后顯示連通性異常Moran 結(jié)果出現(xiàn) NaN空間回歸里某個(gè)區(qū)域的擬合值空掉。原因某個(gè)多邊形與其他區(qū)域不共邊比如海島縣、飛地在 Queen 鄰接下鄰居數(shù)為 0權(quán)重矩陣中這一行全為 0局部自相關(guān)無法計(jì)算。解決先識(shí)別孤島——在 Weights Manager 里打開權(quán)重編輯器GeoDa 會(huì)把沒有鄰居的單元高亮顯示。然后改用 K 近鄰比如 K4或距離閾值權(quán)重保證每個(gè)區(qū)域至少有一個(gè)鄰居也可以在分析中剔除這個(gè)區(qū)域。對(duì)面板數(shù)據(jù)要格外小心不同年份行政區(qū)劃若有變動(dòng)一個(gè)穩(wěn)定存在的島縣會(huì)持續(xù)影響模型。5.5 莫蘭 p 值兩次不一樣置換次數(shù)太少現(xiàn)象今天跑全局 Moranp0.04明天同一份數(shù)據(jù)重跑變成 p0.06LISA 圖上顯著區(qū)域也略有變化。原因GeoDa 的顯著性是基于隨機(jī)置換得到的偽 p 值。默認(rèn)置換次數(shù)較少時(shí)隨機(jī)波動(dòng)會(huì)直接影響結(jié)果不同版本對(duì)隨機(jī)種子處理也不一致所以重復(fù)運(yùn)行會(huì)得到細(xì)微差異。解決把置換次數(shù)固定下來一般設(shè) 9999論文里寫明“基于 9999 次隨機(jī)置換”。如果對(duì)可復(fù)現(xiàn)性要求更高就在同一次會(huì)話內(nèi)完成所有核心分析并記錄 GeoDa 的版本號(hào)和隨機(jī)種子設(shè)置。從那以后我每次輸出莫蘭結(jié)果都會(huì)同時(shí)寫下置換次數(shù)避免過幾天自己都說不清這個(gè) p 值是怎么來的。6. 復(fù)核與收尾技巧三個(gè)數(shù)字確認(rèn)你跑的不是黑匣子6.1 用統(tǒng)計(jì)量本身驗(yàn)證分析結(jié)果跑完空間回歸和莫蘭指數(shù)后先核對(duì)三個(gè)地方。第一Moran 指數(shù)是否落在合理范圍內(nèi)一般情況下取值在 -1 到 1 之間如果出現(xiàn) 0.8 以上的極端值先懷疑離群值再懷疑權(quán)重矩陣而不是急著宣布“強(qiáng)空間自相關(guān)”。第二偽 p 值和置換次數(shù)要成對(duì)記錄一份結(jié)果里寫了 p0.02就必須寫著 9999 permutations缺一個(gè)都不完整。第三LISA 顯著單元的數(shù)量和 Moran 散點(diǎn)圖四個(gè)象限的落點(diǎn)數(shù)量要能對(duì)上如果集聚圖標(biāo)出十幾個(gè) HH 區(qū)域散點(diǎn)圖右上角卻只有兩三個(gè)點(diǎn)多半是權(quán)重文件或者數(shù)據(jù)版本選錯(cuò)了。6.2 一個(gè)固定下來的檢查流程我每次拿到新的案例數(shù)據(jù)都會(huì)強(qiáng)制走一遍這套流程解壓到英文路徑 → 打開 shp 和 CSV 檢查字段類型與編碼 → 創(chuàng)建權(quán)重并打開 .gal 看孤島和鄰居數(shù) → 跑全局 Moran設(shè) 9999 次置換并記錄偽 p 值 → 跑 LISA 對(duì)照集聚圖 → 最后做 LM 檢驗(yàn)并選型空間回歸。整個(gè)流程在 GeoDa 里不會(huì)超過半小時(shí)但它能過濾掉絕大多數(shù)“結(jié)果看著正常換個(gè)數(shù)據(jù)就崩”的隱患。有一次我跳過權(quán)重文件檢查直接跑空間回歸出來的 ρ 顯著得漂亮后來發(fā)現(xiàn) ID 字段在 CSV 里被讀成了字符串整體匹配錯(cuò)位整個(gè)結(jié)果作廢重來。從那以后權(quán)重矩陣的鄰居數(shù)和 ID 唯一性檢查就成了我雷打不動(dòng)的第一步。如果你也在入門空間計(jì)量希望這套流程幫到你少走一段我走過的彎路。本文還有配套的精品資源點(diǎn)擊獲取