第五章 偵測點事件的空間群聚

讀取資料與初步整理

library(sf);library(spatstat);library(shotGroups)
setwd("D:/SA_Book/Lab_Data_Ch5")
school=st_read(dsn="Tainan_schools.shp")
town=st_read(dsn="Tainan_county.shp")
grid=st_read(dsn="grid5X5.shp")
# P.S.可以利用st_make_grid函數,建立5x5的網格,如 grid = st_sf(st_make_grid(school, n=c(5,5)))

問題5-1:樣方分析

請使用樣方分析並以VMR來檢定台南市學校的分布型態是否群聚。

# 計算均勻網格內的學校總數(poly.counts:點在多邊形的數量)
num=lengths(st_contains(grid, school))
#VMR檢定──t統計量單尾檢定
S.vmr=var(num)/mean(num)
S.se=sqrt(2/(nrow(grid)-1))
S.t=(S.vmr-1)/S.se
sprintf("VMR統計量為%.4f,t值為%.4f。當顯著水準為0.05,右尾檢定的臨界值為%.3f,因此落入拒絕域,表空間上有顯著群聚特徵。",S.vmr,S.t,qt(0.95,(nrow(grid)-1)))
## [1] "VMR統計量為21.2249,t值為70.0612。當顯著水準為0.05,右尾檢定的臨界值為1.711,因此落入拒絕域,表空間上有顯著群聚特徵。"

問題5-2:最鄰近分析

在沒有網格圖層之下,我們也可以考慮所有學校點位與其最近學校點位的平均距離來檢驗群聚特徵。如果多數學校都離其鄰近學校很近,則代表學校在空間上可能存在群聚。

# 點轉換成ppp格式
school.ppp=as.ppp(school)
#計算研究區面積,以最小包圍矩形為範圍(需要安裝shotGroups套件)
MBR=getMinBBox(st_coordinates(school))
school.area=MBR$width*MBR$height
# nndist函數:計算k階鄰近點之距離,預設k=1
r_obs=mean(nndist(school.ppp))
r_exp=sqrt(school.area/nrow(school))/2
se=0.26136*sqrt(school.area)/nrow(school)
R=r_obs/r_exp
z=(r_obs-r_exp)/se
sprintf("R值為%.4f,z值為%.4f。",R,z)
## [1] "R值為0.7893,z值為-8.2995。"

問題5-3:距離函數的分析方法-G函數及F函數

問題5-2中,我們從平均的最近距離來判斷整體的點空間型態是否群聚,然而,當我們以平均最短距離進行統計檢定時,並無法看到所有點其最近距離的變異程度。若改以所有最近距離的累積頻率圖表來描述空間型態的變異,有哪兩種方法?這兩種方法產生的結果是否一致?

#envelope函數:進行蒙地卡羅模擬,得到信賴包絡曲線,灰色範圍為隨機分布
#G函數:Gest
G.CI=envelope(school.ppp, Gest)
plot(G.CI)

#F函數:Fest
F.CI=envelope(school.ppp, Fest)
plot(F.CI)

問題5-4:距離函數的分析方法-Ripley’s K函數

另一種檢驗點事件全域的群聚特徵的距離函數為Ripley’s K函數。以Ripley’s K函數檢定空間型態有什麼優缺點?若以此方法檢定台南市學校的空間分布,結果為何?

#K函數:Kest
K.CI=envelope(school.ppp, Kest)
plot(K.CI)

#L函數:Lest
#此套件的L函數是沒有減去距離的,可以自行減去
L.CI=envelope(school.ppp, Lest)
plot(L.CI,.-r~r)