2017-12-03 1 views
-1

이식 센터의 약 208 개의 우편 번호가있는 전체 주에 대한 이식 케이스 데이터가 있습니다. 위도와 경도 정보도 있습니다. 나는 이식 센터의 공간 효과를보기 위해 공간 생존 분석을 수행하려고 노력하고있다. 이 코드를 가지고 있으며 근접성을 위해 adj.mtx를 만드는 방법을 모르겠습니다.우편 번호로 adjacancy 행렬을 만드는 방법

+1

질문에 답하려고했지만 질문 자체에 형식 및 문법이 약간 편집되어있어 사용자가 묻는 것이 더 명확합니다. –

답변

2

내가 실제 우편 번호는 반드시 물리적 인접성에 해당하지 않는 숫자 인접로서 유용하다 생각하지 않는다 : 여기

survregbayes(formula=Surv(time,cens)~age+sex + +frailtyprior("car",transplantcenter),data=d,survmodel="PO", + dist="loglogistic",mcmc=mcmc,prior=prior,Proximity=adj.mtx) 

내 데이터가 어떻게 생겼는지입니다. 당신이 묻는 것은 우편 번호에 대한 이웃 행렬을 얻는 방법이지만, 더 많은 정보가 필요하다고 생각합니다. 예를 들어, 각 우편 번호의 중심 (주어진 위도와 경도)과 임계 값으로부터 거리를 계산할 수 있지만, 일부 고밀도 영역은 우편 번호의 상대적 크기로 인해 더 작은 거리를 갖습니다.

geosphere package.이 패키지에는 distHaversine이라는 함수 호출이 있습니다.이 함수는 인수로 두 개의 점과 선택적 구면 반경 인수를 취하고 점의 곡률을 고려하여 점 사이의 거리를 제공합니다. 지구와 모든 것.

모든 것이 더 나은 접근 방법은 아마도 우편 번호 경계에서 데이터를 다운로드하고 경계가 교차하는 곳을 바라 보는 것입니다. 내가 (무료로) 찾을 수있는 최신 데이터는 here입니다. 그것은 꽤 오래되었다. 액세스하려면 드롭 다운 메뉴를 클릭하고 우편 번호 탭 영역을 선택하십시오. 파일은 약 500MB입니다.

압축 해제 된 데이터에는 .shp 파일이 있고 this post에는 모양 데이터 작업을위한 좋은 자습서가 있습니다. this 대답과 함께 다음

# Install dependencies 
install.packages("rgeos") 
install.packages("maptools") 
library(rgeos) 
library(maptools) 
# Define the projection to be used 
crswgs84=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") 
# Load the shapes 
postal.codes=readShapePoly("tl_2013_us_zcta510.shp",proj4string=crswgs84,verbose=TRUE) 

에서, rgeos 패키지에 다각형 모양에서 인접 행렬을 구성하는 기능이라고 gTouches있다 : 노골적으로 그 사람의 게시물에서 몇 가지 물건을 가지고, 다음 코드는 메모리에 모양 파일을 얻는다 경계. 모든 우편 번호에 대한 해당 코드를 실행

# Get adjacency matrix, returnDense=FALSE is to get a sparse matrix for memory purposes 
adj.mat <- gTouches(postal.codes, byid=TRUE, returnDense=FALSE) 

매우 시간이 소모 될 (인해 위치에 극단적 인 차이로 아마도 약간의 오차가 발생합니다),하지만 사람 당신이 행에 색인 할 수있는에 관심을 액세스 할 수 있습니다 형상 객체 예를 들어, 제 200 개 우편 번호에 대한 인접 수행하여 수행 방법 : 자체 형상 객체 내의 데이터 프레임에

adj.mat.sub <- gTouches(postal.codes[1:200,], byid=TRUE, returnDense=TRUE) 

실제 우편 코드. 당신은 수행하여 액세스 할 수 있습니다 : 당신은 당신의 자신의 데이터에 존재하는 우편 번호에 대한 인덱스를 얻기 위해이를 사용하고, 더 빠르게 그 작은 관련, 일부에 인접 행렬을 계산할 수

[email protected]$ZCTA5CE10 

. 이 모든 작업에는 센서스 데이터와 자신의 데이터 프레임에 대한 부기가 필요합니다.

아마도 현재 구입할 수있는 우편 번호 기하학이 더 많을 수도 있지만 (무료 일 수도 있지만) 인구 조사 데이터는 사용 가능하고 작업하기 쉬운 조합입니다.

2

Ryan Warnick이 아마도 다각형이 필요하다는 데 동의합니다.그러나 maptools :: readShapePoly를 사용하면 안됩니다. 그것은 구식이고 불완전한 기능입니다.

사용을 (래스터 패키지를 통해보다 쉽게이 경우) sf 패키지 (sf_read)이나 rgdal에서 하나의 기능

library(raster) 
library(rgdal) 

postal.codes <- shapefile("tl_2013_us_zcta510.shp") 

라이언 Warnick에 의해 제안 당신은 당신의 자신의 인접 행렬을 출시 할 시도 할 수 있습니다 , 그러나 그것을 위해 잘 확립 된 기능들이있다. 주목할 만하게 spdep 포장에서.

library(spdep) 
nb <- poly2nb(postal.codes) 

당신은 spdep::nb2mat 및 spdep :: sp2listw

P.S. 등의 기능을 nb을 변환 할 수 있습니다 geosphere에는 몇 가지 거리 함수가 있지만 distGeo이 가장 정확합니다.

+0

Upvoted. 나는 그것을하는 더 좋은 방법이 있다고 생각했습니다. 난 그냥 당신이 아마 어떤 외부 데이터 세트에 액세스해야 할 것이라고 가로 질러 가고 싶었어요. –

관련 문제