2013-03-19 4 views
2

geoR 패키지가 공분산 함수를 계산하는 방법을 설명 할 수 있는지 궁금합니다. 나는 당신이 그것을 손으로 어떻게 할 것인지를 의미합니까?공분산 행렬

library(geoR) 
#suppose I have the following coordinates 
X = c(60,30,20,40) 
Y = c(50,20,50,50) 
my_coordinates = cbind(X,Y) 
print(my_coordinates) 

#computing covariance 
my_cov= varcov.spatial(my_coordinates,cov.model="exp", cov.pars=c(0.2,25)) 
print(my_cov) 

은 당신이 얻을 :

  [,1]  [,2]  [,3]  [,4] 
[1,] 0.20000000 0.03664442 0.04037930 0.08986579 
[2,] 0.03664442 0.20000000 0.05645288 0.05645288 
[3,] 0.04037930 0.05645288 0.20000000 0.08986579 
[4,] 0.08986579 0.05645288 0.08986579 0.20000000 

그러나 한뿐만 아니라 매트랩을 수행 할 수 있습니다.

+0

출처를 확인한 적이 있습니까? R 명령 프롬프트에 함수 이름을 입력하면됩니다. 이 함수는 제공된 args에 따라 몇 가지 변형을 포함하지만 개별 코드 경로가 특히 흐릿하게 보이지는 않습니다. – walkytalky

+0

아래와 같이 거리 매트릭스'h'는 귀하의 데이터와 일치하지 않습니다. – mnel

답변

3

패키지 또는 기능이 어떻게 작동 하는지를 확인하는 가장 좋은 방법은 소스 코드를 보는 것입니다. 이것은 오픈 소스 프로젝트에 대한 멋진 것들 중 하나입니다.

시도 varcov.spatial를 입력하거나 (점 사이의 거리에 따라 달라집니다) 공분산을 계산하려면 함수 정의

의 압축을 푼 패키지 타르 볼을 통해 검색, 당신은

  • 의 거리를 계산해야 귀하의 포인트 사이에 (대칭이되므로 실제로는 아래 삼각형 만 필요합니다.
  • 각 거리에서 공분산 함수의 값
  • 은 완전 대칭 v 이 계산 된 공분산으로부터 ariance 공분산 행렬을 계산한다.

공분산 함수는 ?cov.spatial에 정의됩니다. cov.spatial으로 전화하여 R (정확히 geoR::varcov.spatial)에서 계산하십시오.

+0

@ToNoY - 예제 거리가 예제 데이터와 다릅니다. 거리 매트릭스의 하위 트라이앵글은'[1] 42.42641 40.00000 20.00000 31.62278 31.62278 20.00000' – mnel

+0

을주는 as.vector (dist (my_coordinates))입니다. @ToNoY - 기본값은 [euclidian distance]입니다 (http : // en .wikipedia.org/wiki/Euclidean_distance) -'? dist'를보세요. 네가 어디에서 전화 번호를 얻었는지 모르겠다. – mnel

+0

그건 유감이야. 내 계산으로 바보 같은 실수를 했어. – ToNoY