ArcGIS, Python 및 SPSS / R을 사용하여 지리적 가중치 기반 주성분 분석을 수행하려면 어떻게해야합니까?


32

Geographically Weighted Principal Components Analysis (GWPCA) 를 수행하기위한 설명 / 방법론을 따릅니다. 나는이 부분에 파이썬을 사용하는 것을 기쁘게 생각하며 SPSS 또는 R이 지리적으로 가중치가 부여 된 변수에서 PCA를 실행하는 데 사용된다고 상상합니다.

내 데이터 세트는 ~ 550 인구 조사 지역 (벡터 기하학)에서 측정되는 약 30 개의 독립 변수로 구성됩니다.

나는 이것이로드 된 질문이라는 것을 알고있다. 그러나 검색 및 검색 할 때 해결책이없는 것 같습니다. 내가 만난 것은 GWPCA (및 GWR)의 기본 구성을 설명하는 수학 방정식입니다. 내가 추구하는 것은 원시 데이터에서 GWPCA 결과에 이르기 위해 달성해야 할 주요 단계를 찾고 있다는 의미에서 더 많이 적용됩니다.


아래에 접수 된 의견으로 인해이 수정 사항으로 첫 번째 부분을 확장하고 싶습니다.

바울에게 연설하기 위해 ...

나는 다음 논문에서 GWPCA에 관심을 가지고있다.

로이드, CD, (2010). 지리적으로 가중치를 둔 주요 구성 요소 분석을 사용하여 인구 특성 분석 : 2001 년 북 아일랜드 사례 연구. 컴퓨터, 환경 및 도시 시스템, 34 (5), p.389-399.

문헌에 접근 할 수없는 사람들을 위해 아래 수학을 설명하는 특정 섹션의 스크린 샷을 첨부했습니다.

조

그리고 whuber를 해결하기 위해 ...

세부 사항 (기밀성)에 들어 가지 않고, 우리는 30 개 변수를 (전 세계적으로는) 아주 좋은 지표라고 생각하는 고유 값이 1보다 큰 구성 요소 집합으로 줄이기 위해 노력하고 있습니다. 지리적으로 가중 된 구성 요소를 계산하여 이러한 구성 요소에 의해 설명 된 지역 차이를 이해합니다.

우리의 주요 목표는 GWPCA의 개념을 증명하는 것, 즉 데이터의 공간적으로 명백한 특성을 보여주고 모든 독립 변수를 글로벌 규모로 설명 할 수는 없다고 생각합니다. 오히려 각 구성 요소가 식별 할 수있는 지역적 규모 (이웃)는 데이터의 다차원 적 특성을 이해하는 데 도움이 될 것입니다 (변수가 서로 결합되어 연구 지역의 특정 이웃을 설명하는 방법).

문제의 구성 요소가 설명하는 주변의 범위를 이해하기 위해 (구성 요소의 로컬 공간성을 이해하는 데 도움이 됨) 각 구성 요소에 의해 계산 된 분산의 백분율 (별도)을 매핑하기를 희망합니다. 아마도 다른 매핑 예제 일지 모르지만 지금은 아무 것도 생각하지 않습니다.

또한 :

GWPCA 배후의 수학은 지리 분석 및 사회 통계에 대한 배경 지식을 바탕으로 내가 이해 한 것 이상입니다. 수학을 적용하는 것이 가장 중요합니다. 즉, 이러한 변수 / 수식에 무엇을 연결해야합니까?


1
나는 R의 기본 솔루션을 모르지만 너무 어렵지 않아야합니다. "R이이 작업을 수행 할 수 있습니다"보다 더 많은 피드백을 원하는 경우 관련 수학을 게시하십시오.
Paul Hiemstra

2
어떤 종류의 결과를 찾고 있습니까? 가장 큰 고유 값? 주요 구성 요소는 몇 개입니까? 주요 단계는 한 지점에서 가중치를 선택하고 가중 공분산 (또는 상관) 행렬을 계산하고 해당 행렬의 SVD에서 PCA를 확보하기에 충분히 명확해야합니다. 많은 포인트에 대해 반복하십시오. 이 단계에 대한 자세한 내용을 찾고 있습니까?
whuber

나의 기쁨, whuber. 내 요점을 설명하기 위해. n.rows = 20 n.cols = 30 sq = seq (1,600) rast = 래스터 (매트릭스 (sq, nrow = n.rows, byrow = T)) rast2 = 래스터 (매트릭스 (sq, nrow = n.cols)) rast2가 뒤집 힙니다. 지도를 보면 실제로 30 개가 아닌 20 개의 열이있는 것을 볼 수 있습니다 (x 축의 넓은 셀 중 20 개만 있음). 그냥 도와주고 싶었습니다.

GW PCA를 포함하여 R에 대한 새로운 향상된 GW 방법 패키지가 곧 출시 될 것이라는 사실을 알고 싶을 것입니다. 지난 달 GISRUK 2013에서 발표되었습니다.
AnserGIS

원하는 분석에 대한 OP의 확장 된 설명을 바탕으로 "인접 행렬의 주 좌표"(AKA, Moran 's Eigenvectors)에 관한 문헌을 조사 할 것을 강력히 권장합니다. 이 방법은 원래 'Borcard D. & P. ​​Legendre (2002) 이웃 매트릭스의 주요 좌표에 의한 생태 데이터의 전체 공간 분석에서 제안되었다. Ecological Modeling 153 : 51-68 '이며 GWPCA가하지 않는 여러 공간 규모 영역에서 데이터를 평가하는 데 매우 강력합니다. 이 방법은 spaceMaker 및 PCNM R 라이브러리에서 구현됩니다.
Jeffrey Evans

답변:


29

"지리학 적으로 가중치가 부여 된 PCA"는 매우 설명 적입니다.에서 R프로그램은 실제로 자체적으로 작성합니다. 실제 코드 줄보다 많은 주석 줄이 필요합니다.

이 가중치는 PCA 자체에서 지리적으로 가중치가 부여 된 PCA 부품 회사이기 때문에 가중치부터 시작할 수 있습니다. "지리적"이라는 용어는 가중치가 기준점과 데이터 위치 사이의 거리에 의존한다는 것을 의미합니다. 가중치는 가우스 함수이지만 표준은 아닙니다. 즉, 제곱 거리에 따른 지수 붕괴입니다. 사용자는 붕괴율 또는보다 직관적으로 고정 된 양의 붕괴가 발생하는 특성 거리를 지정해야합니다.

distance.weight <- function(x, xy, tau) {
  # x is a vector location
  # xy is an array of locations, one per row
  # tau is the bandwidth
  # Returns a vector of weights
  apply(xy, 1, function(z) exp(-(z-x) %*% (z-x) / (2 * tau^2)))
}

PCA는 공분산 또는 상관 행렬 (공분산에서 파생)에 적용됩니다. 여기에서 가중 공분산을 수치 적으로 안정적인 방식으로 계산하는 함수입니다.

covariance <- function(y, weights) {
  # y is an m by n matrix
  # weights is length m
  # Returns the weighted covariance matrix of y (by columns).
  if (missing(weights)) return (cov(y))
  w <- zapsmall(weights / sum(weights)) # Standardize the weights
  y.bar <- apply(y * w, 2, sum)         # Compute column means
  z <- t(y) - y.bar                     # Remove the means
  z %*% (w * t(z))  
}

각 변수의 측정 단위에 대한 표준 편차를 사용하여 일반적인 방식으로 상관 관계가 도출됩니다.

correlation <- function(y, weights) {
  z <- covariance(y, weights)
  sigma <- sqrt(diag(z))       # Standard deviations
  z / (sigma %o% sigma)
}

이제 PCA를 할 수 있습니다 :

gw.pca <- function(x, xy, y, tau) {
  # x is a vector denoting a location
  # xy is a set of locations as row vectors
  # y is an array of attributes, also as rows
  # tau is a bandwidth
  # Returns a `princomp` object for the geographically weighted PCA
  # ..of y relative to the point x.
  w <- distance.weight(x, xy, tau)
  princomp(covmat=correlation(y, w))
}

(지금까지는 순 10 줄의 실행 가능한 코드입니다. 분석을 수행 할 그리드를 설명하고 나면 아래에 하나만 더 필요합니다.)


질문에 설명 된 것과 비교할 수있는 임의의 샘플 데이터 (550 개 위치의 30 개 변수)를 예로 들어 보겠습니다.

set.seed(17)
n.data <- 550
n.vars <- 30
xy <- matrix(rnorm(n.data * 2), ncol=2)
y <- matrix(rnorm(n.data * n.vars), ncol=n.vars)

지리적으로 가중 된 계산은 종종 횡단 선을 따라 또는 정규 그리드의 점과 같은 선택된 위치 세트에서 수행됩니다. 거친 격자를 사용하여 결과에 대한 관점을 살펴 보겠습니다. 나중에 모든 것이 작동한다고 확신하고 원하는 것을 얻는다면 그리드를 세분화 할 수 있습니다.

# Create a grid for the GWPCA, sweeping in rows
# from top to bottom.
xmin <- min(xy[,1]); xmax <- max(xy[,1]); n.cols <- 30
ymin <- min(xy[,2]); ymax <- max(xy[,2]); n.rows <- 20
dx <- seq(from=xmin, to=xmax, length.out=n.cols)
dy <- seq(from=ymin, to=ymax, length.out=n.rows)
points <- cbind(rep(dx, length(dy)),
                as.vector(sapply(rev(dy), function(u) rep(u, length(dx)))))

각 PCA에서 어떤 정보를 보유하고 싶은지에 대한 질문이 있습니다. 일반적으로, n 개의 변수에 대한 PCA는 n 개의 고유 값 의 정렬 된 목록 과 다양한 형식으로 각각 길이가 nn 개의 벡터에 해당하는 목록을 리턴합니다 . 그것은 n * (n + 1) 개의 숫자입니다. 질문에서 힌트를 얻어 고유 값을 매핑 해 봅시다. 이들은 속성 을 통한 출력에서 추출 됩니다. 속성은 내림차순으로 고유 값 목록입니다.gw.pca$sdev

# Illustrate GWPCA by obtaining all eigenvalues at each grid point.
system.time(z <- apply(points, 1, function(x) gw.pca(x, xy, y, 1)$sdev))

이 컴퓨터에서 5 초 이내에 완료됩니다. 에 대한 호출에서 1의 특성 거리 (또는 "대역폭")가 사용되었습니다 gw.pca.


나머지는 정리의 문제입니다. raster라이브러리를 사용하여 결과를 매핑합시다 . (대신, GIS를 사용한 후 처리를 위해 결과를 그리드 형식으로 기록 할 수 있습니다.)

library("raster")
to.raster <- function(u) raster(matrix(u, nrow=n.cols), 
                                xmn=xmin, xmx=xmax, ymn=ymin, ymx=ymax)
maps <- apply(z, 1, to.raster)
par(mfrow=c(2,2))
tmp <- lapply(maps, function(m) {plot(m); points(xy, pch=19)})

지도

이들은 30 개의지도 중 첫 번째 4 개이며 4 개의 가장 큰 고유 값을 보여줍니다. (모든 위치에서 1을 초과하는 크기로 너무 흥분하지 마십시오. 이러한 데이터는 완전히 무작위로 생성 되므로 상관 관계 구조가있는 경우 이러한 맵의 고유 한 값이 표시되는 것처럼 보입니다. -전적으로 우연이며 데이터 생성 프로세스를 설명하는 "실제"를 반영하지 않습니다.)

대역폭을 변경하는 것이 유익합니다. 너무 작 으면 소프트웨어가 특이점에 대해 불평합니다. (이 베어 본 구현에서는 오류 검사를 작성하지 않았습니다.) 그러나 1에서 1/4로 줄이고 이전과 동일한 데이터를 사용하면 흥미로운 결과가 나타납니다.

지도 2

경계 주변의 점이 비정상적으로 큰 주 고유 값 (왼쪽 위지도의 녹색 위치에 표시됨)을 제공하는 경향이있는 반면, 다른 모든 고유 값은 보정하기 위해 눌려져 있습니다 (다른 세 맵의 연 분홍색으로 표시됨) . 이러한 현상과 PCA 및 지리적 가중치의 다른 많은 미묘한 점은 지리적으로 가중치가 부여 된 PCA 버전을 안정적으로 해석하기 전에 이해해야합니다. 그리고 고려해야 할 다른 30 * 30 = 900 고유 벡터 (또는 "부하")가 있습니다 ....


1
평소 @whuber처럼 대단합니다. 대단히 감사합니다!
Michael Markieta

1
to.raster 함수에서 matrix (u, nrow = n.cols) 대신 matrix (u, nrow = n.rows, byrow = TRUE)가 필요하다는 것을 알고 싶었습니다.

1
@cqh이 코드를주의 깊게 읽어 주셔서 감사합니다! 합법적 인 문제를 지적합니다. 이 문제를 해결해야한다는 것을 기억합니다. 그러나 코드가 정상이라고 생각합니다. 열 / 열 순서를 섞어 놓으면 그림이 완전히 엉망이됩니다. (따라서 다른 행과 열 수로 테스트 한 이유입니다.) 불행한 표현에 대해 사과 nrow=n.cols하지만 그것이 어떻게 작동했는지 ( points생성 방법 에 따라 ) 돌아가고 모든 것을 바꾸고 싶지 않았습니다.
whuber

14

최신 정보:

CRAN- GWmodel 에는 다른 툴 중에서도 지리적으로 가중치가 부여 된 PCA가 포함 된 특수 R 패키지가 있습니다 . 저자의 웹 사이트에서 :

GWmodel 인 Geographically Weighted Modelling을위한 새로운 R 패키지가 최근 CRAN에 업로드되었습니다. GWmodel은 설명 통계, 상관 관계, 회귀 분석, 일반 선형 모형 및 주요 구성 요소 분석을 포함하여 단일 패키지 내에서 다양한 지리적 가중치 데이터 분석 방법을 제공합니다. 회귀 모형에는 가우시안, 로지스틱 및 포아송 구조의 데이터에 대한 다양한 데이터와 상관 된 예측 변수를 처리하기위한 능선 회귀가 포함됩니다. 이 패키지의 새로운 기능은 각 기술의 강력한 버전을 제공하는 것입니다. 이러한 기술은 특이 치의 영향을받지 않습니다.

모델링 위치는 투영 된 좌표계에 있거나 지리적 좌표를 사용하여 지정할 수 있습니다. 거리 측정 항목에는 위도 / 경도 좌표로 지정된 위치의 유클리드, 택시 (맨해튼) 및 민코프 스키 및 그레이트 서클 거리가 포함됩니다. 다양한 자동 보정 방법도 제공되며 대체 예측 변수를 선택하는 데 도움이되는 유용한 모델 작성 도구가 있습니다.

예시적인 데이터 세트가 또한 제공되며, 다양한 기술의 사용을 예시하는 첨부 문서에서 사용된다.

향후 논문 미리보기에 대한 자세한 내용 .


'사용 준비, 데이터를 연결하십시오'솔루션이 있는지 의심 스럽습니다. 그러나 일부 데이터 로이 방법을 테스트하고 싶기 때문에 잘못 입증되기를 바라고 있습니다.

고려해야 할 몇 가지 옵션 :


Marí-Dell'Olmo와 동료 들은 베이지안 요인 분석을 사용하여 스페인의 작은 지역에 대한 박탈 지수를 계산했습니다.

박탈 지수와 그 불확실성을 계산하기위한 베이지안 요인 분석. Marí-Dell'Olmo M, Martínez-Beneito MA, Borrell C, Zurriaga O, Nolasco A, Domínguez-Berjón MF. 역학 . 2011 년 5 월; 22 (3) : 356-64.

이 기사에서는 R에서 실행 된 WinBUGS 모델의 사양을 제공합니다.


adegenet R 패키지는spca기능을구현합니다. 그것은 유전 데이터에 중점을 두지 만, 가능한 한 문제에 대한 해결책에 가깝습니다. 이 패키지 / 함수를 직접 사용하거나 코드를 수정하십시오. 문제를 해결하기위한 비 네트 가 있습니다.


Strategic Research Cluster의 연구원들은 이 주제에 대해 활발히 연구하고있는 것 같습니다. 특히 Paul HarrisChris Brunsdon (여기서 프레젠테이션은 우연히 발견되었습니다). Paul과 Urska의 최근 간행물 ( 전문 )도 유용한 리소스가 될 수 있습니다.

Demšar U, Harris P, Brunsdon C, Fotheringham AS, McLoone S (2012) 공간 데이터의 주요 성분 분석 : 개요. 미국 지리학자 협회 연대기

그들에게 연락하여 정확히 어떤 솔루션을 사용하고 있는지 물어 보지 않겠습니까? 그들은 기꺼이 자신의 작업을 공유하거나 좋은 방향으로 당신을 가리킬 수 있습니다.


Cheng, Q. (2006) 이미지 처리를위한 공간 및 공간 가중 주성분 분석. IGARSS 2006 : 972-975

GeoDAS GIS 시스템 사용에 관한 논문 . 다른 리드가 될 수 있습니다.


2
+1 Brunsdon 프레젠테이션은 지역 다변량 특이 치를 찾기위한 탐색 도구로 PCA 사용을 강조합니다. (이 사용은 spca비 네트에도 나와 있습니다.) 이는 GWPCA에 강력하고 합법적으로 사용됩니다. (그러나 PCA
가보다

대안은 커널 PCA 인 것 같습니다. tribesandclimatechange.org/docs/tribes_450.pdf
Jeffrey Evans

1
업데이트 된 정보에 감사드립니다 GWmodel. 획득 할 가치가있는 패키지처럼 보입니다.
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.