計量地理學及實習  期中考二參考答案

助教 杜承軒 2018.12.01

Part A:Ripley’s K function的觀念與計算 (共30%)

  1. [10%] 請指出以下圖片的 Points A, B and C 的空間型態,分別對應 Ripley’s K function 的三類型曲線 (a), (b) and (c),並說明判斷的理由。(判斷理由需正確才會給分)

Points A: (b)。
隨機分布下,\(K(r)=\pi r^2,L(r)=0\)
Points B: (a)。
群聚分布下,在短距離的環域中,包含到其他點個數會較多,因此線條落在圖形(包絡區間)上方。
Points C: (c)。
均勻分布下,在短距離的環域中,包含到其他點個數會較少,因此線條落在圖形(包絡區間)下方。


  1. [20%] 圖1是某研究區內的犯罪地點位置分布。請計算d = 100 公尺的Ripley’s K Function:K(d) 以及 L(d) 的函數值 (不進行邊緣校正)

\(d=100時,\)
\(右上方的點(1個)環域會包含0個鄰居,\)
\(中間區域的點(6個)環域會包含5個鄰居,\)
\(下方點(2個)環域會包含1個鄰居。\)
\(因此,點的個數:9個,\)
\(加總點的數量=0+5+5+5+5+5+5+1+1=32\)
\(研究區面積=250*250=62500\)
\(K(d)=平均鄰居\div點密度=\frac{32}{9} \div \frac{9}{62500}\approx24691\)
\(L(d)=\sqrt{\frac{K(d)}{\pi}}-d=\sqrt{\frac{24691}{\pi}}-100\approx-11.35\)

用程式實作方法

pt=SpatialPoints(cbind(c(100,100,125,125,137.5,137.5,150,150,250),c(0,150,150,125,137.5,112.5,0,150,250)))
dist=gDistance(pt,pt,byid=T)
count=sum(dist<100)-9
K_100=count/9*250*250/9
L_100=sqrt(K_100/pi)-100
cat("K(100)=",K_100,"; L(100)=",L_100)
## K(100)= 24691.36 ; L(100)= -11.34616

Part B:實作題 (警力資源佈署計畫) (共70%)

由於近年恐怖活動地點都集中在全球的主要都市,台北市政府決定要擬定「台北市恐怖攻擊應變計劃」的標準作業程序。因情報顯示,恐怖攻擊通常都會鎖定人潮眾多的交通或商業機構,台北市政府挑出了台北101(TP101.shp),作為假想的恐怖攻擊目標,並且針對犯罪資料(crime.shp)進行空間分析,以利後續的警力資源(PoliceStation.shp)的佈署與規劃。假設你是台北市政府的幕僚人員,請協助以下的分析。

library(GISTools);library(rgdal);library(sp);library(aspace);library(spatstat)
setwd("D:/1071QG/Mid2")
Crime=readOGR(dsn = "Data", layer = "Crime", encoding="utf8")
TP101=readOGR(dsn = "Data", layer = "TP101", encoding="utf8")
Police=readOGR(dsn = "Data", layer = "PoliceStation", encoding="utf8")
TP=readOGR(dsn = "Data", layer = "Taipei", encoding="utf8")

  1. [10%] 市政府想要比較北市犯罪地點和警力資源的空間分布,請繪製Standard Deviational Ellipse進行空間分布的描述與比較。
plot(TP)
points(Crime,cex=0.2,pch=20,col='red')
points(Police,cex=0.4,pch=20,col='blue')
Crime.pt=cbind(Crime@coords[,1],Crime@coords[,2])
Police.pt=cbind(Police@coords[,1],Police@coords[,2])
calc_sde(points=Crime.pt)
plot_sde(plotnew=F, plotcentre=T, titletxt="",cex=2,plotpoints=F,sde.col="red",centre.col="red")
calc_sde(points=Police.pt)
plot_sde(plotnew=F, plotcentre=T, titletxt="",cex=2,plotpoints=F,sde.col="blue",centre.col="blue")
text(315000,2787500,"● 犯罪地點",cex=0.5,col="red")
text(315000,2784500,"● 警力資源",cex=0.5,col="blue")


  1. 市政府定義台北101方圓1公里內為潛在危險區,並想要進一步探討犯罪事件在潛在危險區中的分布狀況。需進行以下的分析:
    (a) [20%] 建立100公尺x 100公尺的均勻網格,利用Quadrat Analysis的方法,在95%信心水準下,檢定潛在危險區中的犯罪地點是否為群聚的型態。若潛在危險區中有犯罪群聚現象,可進行更深入的犯罪偵查調查與投入更多的警力資源。
Buf101=gBuffer(TP101,width = 1000)
grd=GridTopology(c(TP101@coords[1,1]-950,TP101@coords[1,2]-950),c(100,100),c(20,20))
grd=as.SpatialPolygons.GridTopology(grd,proj4string =TP@proj4string)
CR101=gIntersection(Buf101,Crime)

#Intersect法
#Inter=gIntersection(grd,Buf101,byid = T)
#InterName=strsplit(names(Inter)," ")
#Pix=lapply(InterName,function(x) substring(x[1],2))
#Pix=as.numeric(unlist(Pix))
#grd=grd[Pix,]

#Distance法
pix=c()
for(i in 1:400){if(gDistance(grd[i,],Buf101)==0) pix=c(pix,i)}
grd=grd[pix,]

num=poly.counts(Crime,grd)
S.m=mean(num);S.v=var(num)
S.vmr=S.v/S.m
S.se=sqrt(2/(length(grd)-1))
S.t=(S.vmr-1)/S.se
pt(S.t,length(grd)-1)
## [1] 0.325781

\(虛無假設 H_{0}:s^2\leq\lambda,空間分布是隨機(或均勻)的情況\)
\(對立假設 H_{1}:s^2>\lambda,空間分布是群聚分布的情況\)
\(在顯著水準\alpha=0.05下,p-vaule > \alpha,表示無法拒絕假設檢定\)
\(因此認定這個潛在危險區內的犯罪點不是群聚分布\)

(b) [20%] 市府長官建議改以第三鄰近距離作為空間鄰近的定義,並利用G function進行分析,在99%信心水準下,檢定潛在危險區中的犯罪地點是否為群聚的型態。

par(mar=c(4,4,2,2),cex=1)
CR101.ppp=ppp(CR101@coords[,1],CR101@coords[,2],as.owin(Buf101))
ND=nndist(CR101.ppp,k=3)
plot(ecdf(ND),verticals = T,lwd=3,cex=0,col="red",main="G function",xlab="distance",ylab="G(d)",xlim=c(0,600))
for(i in 1:100) {lines(ecdf(nndist(rpoint(length(CR101),win=as.owin(Buf101)),k=3)),col="grey",cex=0,verticals = T)}
lines(ecdf(ND),verticals = T,lwd=3,cex=0,col="red")

進行100次模擬,事件落在包絡區間之內
因此在99%信心水準下,無法拒絕假設檢定,因此潛在危險區內的犯罪點不是群聚分布


  1. [20%] 警力設施(PoliceStation.shp)包括:分局與派出所。利用F function分析,分別評估犯罪地點是否群聚於分局?或群聚於派出所?並針對其分析結果,進行解釋與說明。
par(mar=c(4,4,2,2),cex=1)
Right2=function(s) substring(s,nchar(s)-1)
Police$TYPE=Right2(as.vector(Police$單位))
Div=subset(Police,Police$TYPE=="分局")
Sta=subset(Police,Police$TYPE=="出所")
Crime.p=ppp(Crime@coords[,1],Crime@coords[,2],as.owin(TP))
Div.p=ppp(Div@coords[,1],Div@coords[,2],as.owin(TP))
Sta.p=ppp(Sta@coords[,1],Sta@coords[,2],as.owin(TP))
CD=nncross(Crime.p,Div.p)
F_CD=ecdf(CD[,1])
CS=nncross(Crime.p,Sta.p)
F_CS=ecdf(CS[,1])
plot(F_CD,col="red",main="F function",xlab="distance",ylab="F(d)")
plot(F_CS,col="blue",add=T)
text(0,0.9,"派出所",col="blue")
text(4000,0.6,"分局",col="red")

犯罪與派出所的關係,比犯罪與分局的關係更有群聚的現象。約六成的犯罪點在派出所一公里以內的範圍,九成在派出所兩公里內的範圍。相較之下,犯罪與分局之間的空間分布的群聚性就沒有這麼密切。