2013-08-29 2 views
1

나는 R.에서 시계열의 계층 그룹에 대한 질문이에 그룹화 나는 현재이 행렬이 있습니다시계열 계층 구조/R

  A  B  C  F  G  H  I 
[1,] -33.697 8.610 42.31 17.465 24.84 14.210 10.632 
[2,] -4.698 15.993 20.69 6.222 14.47 3.423 11.047 
[3,] -37.458 9.687 47.14 14.659 32.49 12.759 19.726 
[4,] -23.851 16.517 40.37 14.392 25.98 9.438 16.538 
[5,] 3.329 15.629 12.30 3.449 8.85 2.635 6.215 
[6,] -38.071 5.746 43.82 15.932 27.89 14.113 13.772 

그냥 검사를 통해서, 나는 알아낼 수 :

  • G = H + I
  • C = F + G
  • A = B - C
,536,

R의 큰 시계열에서 이러한 합계 관계 (양수 및 음수)를 자동으로 찾을 수있는 방법이 있습니까? 나는 관계를 이해하기 위해 작품()을 사용해 보았지만 모든 시리즈에서 그렇게하기에는 너무 시간이 많이 걸린다. 공선 성 문제가있는 것은 말할 것도 없습니다.

많은 감사!

structure(list(A = c(-33.6970557915047, -4.69841752527282, -37.457728596637, 
-23.8508993089199, 3.32904924079776, -38.0712462896481), B = c(8.60984595282935, 
15.9929901333526, 9.68719404516742, 16.5167794595473, 15.6285679822322, 
5.74573907931335), C = c(42.306901744334, 20.6914076586254, 47.1449226418044, 
40.3676787684672, 12.2995187414344, 43.8169853689615), F = c(17.4649945173878, 
6.22195235290565, 14.6593122615013, 14.3921482057776, 3.44929573708214, 
15.9315551938489), G = c(24.8419072269462, 14.4694553057197, 
32.4856103803031, 25.9755305626895, 8.8502230043523, 27.8854301751126 
), H = c(14.2098777298816, 3.42268325854093, 12.7592747195158, 
9.43778987810947, 2.63517117220908, 14.1129822209477), I = c(10.6320294970647, 
11.0467720471788, 19.7263356607873, 16.5377406845801, 6.21505183214322, 
13.7724479541648)), .Names = c("A", "B", "C", "F", "G", "H", 
"I"), row.names = c(NA, -6L), class = "data.frame") 
+0

당신이 제안하는 것은 가설 생성 접근법입니다. 과학은 대개 다른 방법으로 작동합니다. 가설을 가정하고 데이터가이를 지원하는지 확인하십시오. 또한 나는 G = H + K가 당신의 데이터에 존재하지 않기 때문에 관계가 될 수있는 방법을 볼 수 없습니까? 또 다른주의 사항은 데이터를 dput 명령과 함께 제공하면 우리가 당신을 도울 수 있다는 것입니다. –

+0

@ Dr.Mike 힌트를 보내 주셔서 감사합니다. 그리고 내가 편집 한 H + I를 의미했습니다. 가설을 생성하는 접근법을 사용하는 이유는 하루에 다시 추가 된 광고 항목이 많기 때문입니다. 그러나 지금은 구조화되지 않았으므로 관련성을 확인하고 싶습니다. – user2728814

답변

0

계층 적 클러스터링 방법을 시도 할 수 있습니다. 이것은 정확한 관계와 계수를 제공하지 않지만 테스트해야 할 관계에 대한 아이디어를 줄 수 있습니다. 먼저 데이터를 준비합니다.

a<-rbind(c(-33.697,8.610,42.31, 17.465, 24.84, 14.210, 10.632), 
    c(-4.698,15.993,20.69,6.222, 14.47,3.423, 11.047), 
    c(-37.458,9.687, 47.14, 14.659, 32.49, 12.759, 19.726), 
    c(-23.851,16.517,40.37,14.392,25.98,9.438,16.538), 
    c(3.329,15.629,12.30,3.449,8.85,2.635,6.215), 
    c(-38.071,5.746,43.82,15.932,27.89,14.113,13.772)) 
colnames(a)<-c("A", "B", "C", "F", "G", "H", "I") 

그런 다음 우리는 당신의 변수 간의 상관 관계를 계산하는 우리는 다음 클러스터 거리를 만들 수 있습니다.

dd <- as.dist((1 - cor(a))/2) 
plot(hclust(dd)) 

다른 시계열 간의 관계에 대한 아이디어를 제공해야합니다. 그 결과의 플롯이 아래에 나와 있습니다.

The plot of the cluster dendrogram

0

당신은 MASS::Null 선형 의존 관계를 찾을 수 있습니다. 그들은 육안 검사에서 발견 된 것과 같지 만 드문 경우는 아닙니다.

library(MASS) 
Null(t(d)) # One relation per column 
#    [,1]  [,2]  [,3] 
# [1,] 0.41403998 -0.04178588 0.45582586 
# [2,] -0.41403998 0.04178588 -0.45582586 
# [3,] -0.02626794 -0.52439443 0.49812649 
# [4,] 0.44030792 0.48260856 -0.04230063 
# [5,] 0.62687195 -0.01159430 -0.36153375 
# [6,] -0.18656403 0.49420285 0.31923312 
# [7,] -0.18656403 0.49420285 0.31923312 
as.matrix(d) %*% Null(t(d)) # zero 
1

이것은 또한 회귀 분석을 사용하지만

  • lm보다 빠른 lm.fit를 사용합니다. (또한 당신은뿐만 아니라 시도 할 수 rcppArmadillo 및 rcppEigen에서 fastLm 이 존재한다.)

  • 에만 고유 한 조합을 사용하여 회귀 분석을 중복 방지 할 수 있습니다.

  • 은 세배가

  • 모든 계수 출력을 정리 정수를 가정한다 (즉, 포스트 경우를 보이기 때문에) 연산량을 삭감 조사 할 필요가 있다고 가정

코드는 : 이후에이 데이터를 제공

eps <- .1 
combos <- combn(ncol(DF), 3) 
for(j in 1:ncol(combos)) { 
    ix <- combos[, j] 
    fit <- lm.fit(as.matrix(DF[ix[-1]]), DF[[ix[1]]]) 
    SSE <- sum(resid(fit)^2) 
    if (SSE < eps) { 
     ecoef <- round(c(-1, coef(fit))) 
     names(ecoef)[1] <- names(DF)[ix[1]] 
     print(ecoef) 
    } 
} 

:

,174,
A B C 
-1 1 -1 
C F G 
-1 1 1 
G H I 
-1 1 1