- [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)。
均勻分布下,在短距離的環域中,包含到其他點個數會較少,因此線條落在圖形(包絡區間)下方。
- [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
由於近年恐怖活動地點都集中在全球的主要都市,台北市政府決定要擬定「台北市恐怖攻擊應變計劃」的標準作業程序。因情報顯示,恐怖攻擊通常都會鎖定人潮眾多的交通或商業機構,台北市政府挑出了台北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")
- [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")
- 市政府定義台北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%信心水準下,無法拒絕假設檢定,因此潛在危險區內的犯罪點不是群聚分布
- [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")
犯罪與派出所的關係,比犯罪與分局的關係更有群聚的現象。約六成的犯罪點在派出所一公里以內的範圍,九成在派出所兩公里內的範圍。相較之下,犯罪與分局之間的空間分布的群聚性就沒有這麼密切。