地理加權回歸模型(GWR, Geographically Weighted Regression)

2021-02-22 空間數據分析學習筆記

  GWR是局部模型,公式如下所示。回歸係數隨位置發生變化,針對每個給定的位置分別進行求解。求解時確定以下三件事:確定帶寬(即以任意一點為中心,鄰域的範圍);鄰域對該點影響的大小即權重,通過核函數確定。遵循原則為越近的數據點所待估計點的權重越高;距離類型,如歐式距離。

常用的核函數如下所示,其中參數b為核函數的帶寬(bandwidth)。

帶寬選擇:使偏差和方差達到均衡最優

‍交叉驗證(cross-validation,CV):用已有觀測值位置的估算y值減去觀測值,對差值求平方和。找到差值平方和最小的b。    

赤池信息量準則(Akaike information criterion,AIC)。AIC越小越好。‍

library(GWmodel)

#加載數據包

data(DubVoter)

#線性回歸模型

lm.global<- lm(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl +

               LowEduc +Age18_24 + Age25_44 +Age45_64,

                data = Dub.voter)

summary(lm.global)

#地理加權回歸帶寬確定

bw.gwr.1<- bw.gwr(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl +

                     LowEduc +Age18_24 +Age25_44 + Age45_64,

                   data = Dub.voter, approach ="AICc",

                   kernel ="bisquare", adaptive = TRUE)

bw.gwr.1

#執行地理加權回歸

gwr.res<- gwr.basic(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl +

                   LowEduc + Age18_24 +Age25_44 + Age45_64,

                   data = Dub.voter,bw =bw.gwr.1, kernel = "bisquare",

            adaptive = TRUE, F123.test = TRUE)

#gwr.res為結果輸出

#其中每條記錄的截距和係數保存在SDF

#SDF為sp對象

gwr.res

#-以LowEduc係數可視化為例

names(gwr.res$SDF)

library(RColorBrewer)

mypalette.6<- brewer.pal(6, "Spectral")

spplot(gwr.res$SDF,"LowEduc", key.space = "right",

       col.regions = mypalette.6, at = c(-8,-6, -4, -2, 0, 2, 4),

        main = "Basic GW regressioncoefficient estimates for LowEduc")

#---根據箱線圖原理去除異常值-

rgwr.res<- gwr.robust(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl

                 +LowEduc + Age18_24 + Age25_44 +Age45_64,

               data = Dub.voter, bw = bw.gwr.1,

               kernel = "bisquare", adaptive =TRUE, F123.test = TRUE)

spplot(rgwr.res$SDF,"LowEduc", key.space = "right",

      col.regions = mypalette.6, at = c(-8, -6,-4, -2, 0, 2, 4),

       main = "Robust GW regressioncoefficient estimates for LowEduc")

#- 共線性----

DeVar<- "GenEl2004"

InDeVars<- c("DiffAdd"," LARent", "SC1","Unempl",

             "LowEduc","Age18_24", "Age25_44",

              "Age45_64")

#過多的自變量可能導致局部共線性問題

#逐步回歸,前向選擇

model.sel<- model.selection.gwr(DeVar ,InDeVars,

                                 data = Dub.voter,

                                kernel ="bisquare",

                           adaptive = TRUE, bw= 80)

#對AICc排序

sorted.models<- model.sort.gwr(model.sel, 

numVars = length(InDeVars), ruler.vector = model.sel[[2]][,2]),

model.list<- sorted.models[[1]]

#對GWR的逐步回歸過程可視化

model.view.gwr(DeVar,InDeVars, model.list = model.list)

plot(sorted.models[[2]][,2],col = "black", pch = 20, lty = 5,

      main = "Alternative view of GWRmodel selection procedure", 

      ylab = "AICc",

    xlab = "Model number", type ="b")

#獲取行數

nobs<- dim(Dub.voter)[1]

#bw為行數即為普通線性回歸模型

#條件數

lcrm1<- gwr.lcr(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl + LowEduc +Age18_24 + Age25_44 +Age45_64, 

data = Dub.voter, bw = nobs,

   kernel = "boxcar",adaptive=TRUE)

summary(lcrm1$SDF$Local_CN)

#局部條件數----

#----cv方法確定帶寬與bw.gwr計算結果相同----

lcrm2.bw<- bw.gwr.lcr(GenEl2004 ~ DiffAdd + LARent + SC1 +    Unempl +LowEduc + Age18_24 +Age25_44 + Age45_64,

data = Dub.voter, kernel ="bisquare", adaptive=TRUE)

lcrm2.bw

lcrm2<- gwr.lcr(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl +    LowEduc +Age18_24 + Age25_44 +Age45_64,

            data = Dub.voter, bw = lcrm2.bw,

             kernel ="bisquare", adaptive = TRUE)

summary(lcrm2$SDF$Local_CN)

mypalette.7<- brewer.pal(8, "Reds")

spplot(lcrm2$SDF,"Local_CN", key.space = "right",

        col.regions = mypalette.7, cuts=7,

       main="Local condition numbers frombasic GW regression")

#---對條件數>30的地區,應用嶺回歸.--

#查找帶寬。

lcrm3.bw<- bw.gwr.lcr(GenEl2004 ~ DiffAdd + LARent + SC1 +  Unempl + LowEduc + Age18_24 +Age25_44 + Age45_64,

      data = Dub.voter, kernel= "bisquare",

              adaptive = TRUE, lambda.adjust =TRUE, cn.thresh = 30)

lcrm3.bw

lcrm3<- gwr.lcr(GenEl2004 ~ DiffAdd + LARent + SC1+ Unempl + LowEduc +Age18_24 + Age25_44 + Age45_64,

data=Dub.voter, bw = lcrm3.bw,kernel ="bisquare",

 adaptive = TRUE, lambda.adjust= TRUE, cn.thresh = 30)

summary(lcrm3$SDF$Local_CN)

summary(lcrm3$SDF$Local_Lambda)

spplot(lcrm3$SDF,"Local_CN", key.space = "right",

       col.regions = mypalette.7, cuts = 7,

       main = "Local condition numbersbefore adjustment")

spplot(lcrm3$SDF,"Local_Lambda", key.space = "right",

       col.regions = mypalette.7,cuts = 7,

      main = "Local ridge terms for LCR GW regression")

相關焦點

  • Stata:地理加權回歸操作及應用教程
    在這裡,我們提出的技術從一個特殊的分支的非平穩空間統計,稱為地理加權(GW)模型。GW模型適用於一些通用或全局模型不能很好地描述空間數據的情況,但適用於一些空間區域,適當的局部模型校準可以提供更好的描述。該方法使用移動窗口加權技術,在目標位置找到局部模型。
  • 論文推薦王苗苗:無縫線性回歸與預測模型
    對此,本文提出了一種嚴格考慮所有變量觀測誤差的無縫線性回歸和預測模型,該模型將回歸模型的建立和因變量預測聯合處理,在建立回歸模型過程中對待預測自變量的觀測誤差進行估計並修正,從而提高了模型預測效果。理論證明,現有的幾種線性回歸模型都是無縫線性回歸和預測模型的特例。試驗結果表明,無縫線性回歸和預測模型的預測效果優於現有的幾種模型,尤其在變量觀測誤差相關性較大時,無縫模型對預測效果的改善更為顯著。
  • 線性回歸的幾何與概率視角
    本文是從機器學習的角度來看linear regression,即從模型和loss function的角度看,並且我們給出closed form解,關於large-scale data的aapproximate的求解方式以後再做介紹。
  • 用R進行Lasso regression回歸分析
    glmnet是由史丹福大學的統計學家們開發的一款R包,用於在傳統的廣義線性回歸模型的基礎上添加正則項,以有效解決過擬合的問題,支持線性回歸,邏輯回歸,泊松回歸,cox回歸等多種回歸模型,連結如下https://cran.r-project.org/web/packages/glmnet/index.html對於正則化,提供了以下3種正則化的方式
  • 一圖一話87:回歸-Regression,到底是什麼
    通過進一步的研究發現了:事實上子輩的平均身高是其父輩平均身高以及他們所處族群平均身高的加權平均和,他把這種趨勢平均化的現象寫到了自己1886年的論文中。論文的全名叫:Regression towards Mediocrity in Hereditary Stature(連結:http://galton.org/essays/1880-1889/galton-1886-jaigi-regression-stature.pdf).
  • 人工智慧之回歸模型(RM)
    回歸的目的是預測數值型的目標值,如預測商品價格、未來幾天的PM2.5等。最直接的辦法是依據輸入寫出一個目標值的計算公式,該公式就是所謂的回歸方程(regressionequation)。求回歸方程中的回歸係數的過程就是回歸。回歸是對真實值的一種逼近預測。回歸是統計學中最有力的算法之一。
  • 二分類、多分類、回歸任務,一個項目get競賽必備模型
    近日,有開發者在 GitHub 上開源了一個包含數據挖掘類比賽常用模型的項目,主要涵蓋二分類、多分類以及回歸任務。項目代碼全部使用 Python 實現。項目地址:https://github.com/QLMX/data_mining_models該項目包含二分類模型、多分類模型以及回歸模型,它們分別基於 lightgbm
  • 人工智慧機器學習三大類之回歸模型(RM)
    最直接的辦法是依據輸入寫出一個目標值的計算公式,該公式就是所謂的回歸方程(regressionequation)。求回歸方程中的回歸係數的過程就是回歸。回歸是對真實值的一種逼近預測。回歸是統計學中最有力的算法之一。
  • 深度研究:回歸模型評價指標R2_score
    回歸模型的性能的評價指標主要有:RMSE(平方根誤差)、MAE(平均絕對誤差)、MSE(平均平方誤差)、R2_score。但是當量綱不同時,RMSE、MAE、MSE難以衡量模型效果好壞。這就需要用到R2_score,實際使用時,會遇到許多問題,今天我們深度研究一下。預備知識 搞清楚R2_score計算之前,我們還需要了解幾個統計學概念。
  • 論文推薦| 姚宜斌:Bevis公式在不同高度面的適用性以及基於近地大氣溫度的全球加權平均溫度模型
    關鍵詞:加權平均溫度    Bevis公式    近地大氣溫度    全球模型    Applicability of Bevis formula at different height level and global weighted mean temperature model based on near-earth atmospheric temperature
  • 多元回歸中partial regression plot 與partial residual plot 有何區別?
    於是我便查了一下相關材料,真是不查不知道,一查嚇一跳,原來partial regression plot (偏回歸圖)和 partial residual plot(偏殘差圖)在實際應用中已經混淆到了令人髮指的地步了。鄙人試圖通過此文,明確這種圖的原理,意義和用法的差異, 以防止大家繼續受到此問題的困擾。
  • R筆記:多重線性回歸(二)_適用條件考察
    書接上回……我們在<<多重線性回歸(一)_模型擬合>>一文中已經建立了回歸模型lmfit
  • SPSS加權線性回歸案例實踐,解決異方差問題
    線性回歸時要求殘差方差齊次,通俗理解為所有的觀測數據在計算過程中具有相同的貢獻。但是實踐中有時候會出現殘差方差不齊的情況,此時普通最小二乘法不再適用。 通常來說,此類情況可以使用加權的最二乘法(WLS)擬合線性回歸模型。WLS會降低具有較大方差的觀測數據對分析過程的影響。
  • 農地碳排放影響因素空間差異性研究——基於STIRPAT和GWR模型的實證分析
    今日通過《農地碳排放影響因素空間差異性研究—基於STIRPAT和GWR模型的實證分析》一文的推送為大家解答以上問題。 🌿  原文摘要       論文基於2011—2013年中國31個省市區的農地碳排放量測算數據,應用環境影響評估模型(STIRPAT)和地理加權回歸方法(GWR),實證分析了人口、富裕度、技術水平等社會經濟因素對農地碳排放的影響以及係數的空間差異特徵
  • 多元回歸分析(multiple linear regression)和判別分析(discriminant analysis)
    1、  多元回歸分析(multiple linear regression)回歸分析是定量研究因變量對自變量的依賴程度研究一個因變量對幾個自變量的線性依存關係時,其模型稱為多元線性回歸。函數方程建立有四種方法:全模型法、向前選擇法、向後選擇法、逐步選擇法。其數學模型為:Yk=β0+β1X1+β2X2+…+βkXk+ε(k=1,2,…,n).
  • 啥是鏡面反射器的「太陽光加權反射率」?
    圖1, 鏡面反射模型2.鏡面加權反射率: solar-weighted specular reflectance/reflectivity. 表示僅通過鏡面材料聚集到接收器上的光線能量與鏡面接收到的太陽輻射總能量的比值,而不考慮接收器形狀尺寸誤差、對準誤差以及鏡場追蹤誤差所產生的影響。所以,鏡面加權反射率僅僅用來表徵鏡面反射器的性能!
  • 教你學Python32-預測數值型數據:數據回歸
    主要講解簡單的線性回歸和局部加權線性回歸。二、什麼是回歸?回歸的目的是預測數值型的目標值。他和我們之前做的分類是不一樣的。最直接的辦法是依據輸入寫出一個目標值的計算公式。equation),其中的0.0015和-0.99稱為回歸係數(regression weights),求這些回歸係數的過程就是回歸。
  • SPSS超詳細操作:分層回歸(hierarchical multiple regression)
    研究者擬判斷逐個增加自變量(weight和heart_rate)後對因變量(VO2max)預測模型的改變。針對這種情況,我們可以使用分層回歸分析(hierarchical multiple regression),但需要先滿足以下8項假設:那麼,進行分層回歸分析時,如何考慮和處理這8項假設呢?