109-2 空間分析  期末考

助教 杜承軒 2021.06.06

基礎:問答題 [25%]

  1. 研讀教材 Temporal land use pattern analysis with the use of nearest neighbor and quadrat methods 一文中,請解釋Table 2的數據意涵。[5%]
不同時間的前三鄰近R值(事件平均距離除以隨機理論值),從1910~1950第一鄰近能看到點較群聚,但隨時間越來越不明顯。但不管哪個時間到第二、第三鄰近就趨於隨機。

  1. 研讀教材 Defining spatial neighborhoods and weights一文中,說明何謂adjacency-based以及 distance-based neighborhoods,並說明文中建議這兩種設定的合適情境。[10%]
adjacency:接觸(共邊共點)相鄰,常用於連續面或網格;適用於有區域特徵的現象(僅受到距離相近、接觸的行政區影響)。如:人口密度、投票率等有和行政區相關,可能會因為在都市地區或鄉村地區而有所差異(區域化即都市緊鄰都市的特性)。
distance:距離相鄰,可用離散或連續圖徵;適用於有個明確影響範圍的,或影響隨距離有遞減效果。如:定義汙染擴散或地震的影響範圍為10公里內等。

  1. 研讀教材 Local Statistics一文中,說明作者解釋local statistics近年在空間分析領域成為重要議題的原因(至少說明兩個原因)。[10%]
1.GIS繪製地圖能力提升,能觀察空間視覺化的地圖,並給出更多區域特性的計算結果。
2.新興區域統計方法的出現,挑戰傳統、整體的統計方法的假設,且更加的實際、符合現實,而數值方法能解決過去的計算瓶頸。
3.對於現象在地理上變異的認知,隨著更多資料蒐集及高解析度的空間資訊,不只能回答概括整體似是而非的資訊,更能理解細緻的空間分布。
4.空間科學開始更注重某個空間型態現象下的局部面貌,區域統計強調局部的差異性,並觀察到一地與另一地分布的相似性或差異,並能給出量化的證據。

基礎:實作題 [25%]

*初步環境建置與讀取檔案

library(sf);library(tmap);library(spdep);library(spatstat);library(SpatialKDE);library(dplyr)
setwd("D:/1092SA/Fin/Data")
TW=st_read("GTMA.shp")
hostipal=st_read("hospital.shp")
BND=st_read("BND.shp")

TWc=st_centroid(TW)
MC=hostipal[hostipal$TYPE=="醫學中心",]
RH=hostipal[hostipal$TYPE=="區域醫院",]
DH=hostipal[hostipal$TYPE=="地區醫院",]
.f=tm_layout(frame = F)
  1. 定義行政區確診比例=行政區確診人數÷行政區總人數;定義相鄰相接(只要兩行政區有至少一點接觸)為鄰近關係。

4-1. 計算行政區確診比例的Moran’s I指數(請列出數值結果,而不是整個報表)。[5%]

prop=TW$Cases/TW$POP
TW.q=TW%>%poly2nb%>%nb2listw
moran.test(prop,TW.q)$estimate[1]
## Moran I statistic 
##         0.2633607

4-2. 設定顯著水準α=0.05,找出確診比例的局部空間自相關在FDR校正後,呈現顯著正相關的行政區,依照以下指示繪製地圖:顯著H-H─紅色、顯著L-L─藍色、不顯著─白色。[10%]

LISA=localmoran(prop,TW.q)
p=p.adjust(LISA[,5],"fdr")
diff=prop-mean(prop)
TW$col[diff>0]="red"
TW$col[diff<0]="blue"
TW$col[p>.05]="white"
qtm(TW,'col')+.f


  1. 欲知地區醫院是否為隨機分布,設定顯著水準 α=0.1,定義L(d)=sqrt(K(d)/π)-d。透過 spatstat 套件中 envelope 函數實作蒙地卡羅模擬,以BND.shp作為邊界,繪製 L(d) 函數曲線及模擬99次隨機信賴包絡(需依照上述假設來設定包絡),並給出點分布的結論。[10%]
win = as.owin(BND)
DHp=DH%>%st_coordinates%>%as.ppp(win)
CI=envelope(DHp, Lest, nsim=99, nrank=5)
plot(CI,.-r~r,legend=NA,lwd=2,xlab="Distance(m)",ylab="L(d)",main="")


→ 不落在信賴包絡中,因此地區醫院分布不為為隨機分布。


進階:實作題 [50%]

  1. 以行政區藥局密度(藥局數量÷行政區面積)作為防疫資源指標,針對行政區確診比例與藥局密度,以行政區中心點之間距離為準則,定義前五近行政區為鄰近,計算Gi*數值並以Bonferroni校正,設定顯著水準α=0.05,觀察顯著群聚的分布。
PhDy=TW$Pharmacy/st_area(TW)%>%as.vector
TW.k=TWc%>%st_coordinates%>%knearneigh(k=5)%>%knn2nb%>%include.self%>%nb2listw
Gi.case=localG(prop,TW.k)>=qnorm(1-.05/nrow(TW))
Gi.phar=localG(PhDy,TW.k)>=qnorm(1-.05/nrow(TW))

6-1. 繪製出確診群聚熱區地圖。(顯著熱區─紅色、不顯著─白色)[5%]

TW$colc="white"
TW$colc[Gi.case]="red"
qtm(TW,'colc')+.f

6-2. 哪些行政區是確診熱區但非防疫資源熱區?(回答行政區名稱)[5%]

TW$TOWN[Gi.case&!Gi.phar]
## [1] "新莊區"

6-3. 依照下列顏色繪製出熱區地圖。[5%]
(確診病例熱區,防疫資源熱區)→(Y,Y)=紅/(Y,N)=橘/(N,Y)=綠/(N,N)=白

TW$colG="white"
TW$colG[Gi.case&Gi.phar]="red"
TW$colG[!Gi.case&Gi.phar]="green3"
TW$colG[Gi.case&!Gi.phar]="orange"
qtm(TW,'colG')+.f


  1. 利用F function 的概念,分析地區醫院到醫學中心之間的空間關係。理解地區醫院到前三近醫學中心的距離關係,繪製如研讀教材Geodemographic analysis and the identification of potential business partnerships enabled by transit smart cards一文中的Figure 4。[15%]
dist=st_distance(DH,MC)%>%apply(1,function(.) sort(./1000,decreasing=F))
plot(0,type='n',xlim=c(0,30),ylim=c(0,1),xaxs="i",yaxs="i",main="",xlab="Distance(km)",ylab="F(d)")
for(i in 1:3) lines(ecdf(dist[i,]),verticals=T,cex=0,lwd=2)


  1. 藉由KDE方法,計算醫院服務的密集度。透過create_grid_rectangular函數,以BND.shp設定網格邊界,邊長為1公里,核密度函數為 quartic,搜尋半徑依不同醫院類型:醫學中心、區域醫院、地區醫院分別設定為20公里、10公里、5公里,並以各自密度最高 10% 的網格為高度醫療服務密度的定義。利用行政區中心所在網格來判斷該行政區獲得的服務。
grid=create_grid_rectangular(BND,1000)
MC.kde=kde(MC,20000,grid=grid)
RH.kde=kde(RH,10000,grid=grid)
DH.kde=kde(DH,5000,grid=grid)

MC.kde$high=MC.kde$kde_value>quantile(MC.kde$kde_value,0.9)
RH.kde$high=RH.kde$kde_value>quantile(RH.kde$kde_value,0.9)
DH.kde$high=DH.kde$kde_value>quantile(DH.kde$kde_value,0.9)

KDE=MC.kde
KDE$all= MC.kde$high& RH.kde$high&DH.kde$high
KDE$odh=!MC.kde$high&!RH.kde$high&DH.kde$high

8-1. 哪些行政區在三種類型醫院都具有高度服務密度?[10%]

TWc[KDE[KDE$all,],]%>%mutate(NAME=paste0(COUNTY,TOWN))%>%.$NAME
##  [1] "臺北市松山區" "臺北市信義區" "臺北市大安區" "臺北市中山區" "臺北市中正區"
##  [6] "臺北市大同區" "臺北市萬華區" "臺北市內湖區" "新北市板橋區" "新北市三重區"
## [11] "新北市中和區" "新北市永和區"

8-2. 哪些行政區在僅在地區醫院具有高度服務密度?[10%]

TWc[KDE[KDE$odh,],]%>%mutate(NAME=paste0(COUNTY,TOWN))%>%.$NAME
## [1] "基隆市中正區" "基隆市仁愛區" "基隆市中山區" "基隆市信義區" "新北市土城區"