비선형 상관 여부를 테스트 할 수있는 HSIC 테스트를 사용해보십시오.

소개



과거에 쓴 이 기사 에서 여러 상관 지표를 사용해 본 경위가 있습니다.
여러가지 데이터 분석을 하고 있다면 비선형 상관도 잘 추출하고 싶다는 것이 있습니다. MIC도 그 지침이 됩니다만, 다른 어프로치도 없는 것인가라고 조사해 보면, 커널법을 응용한 HSIC test라고 하는 것이 있다고 하는 것으로, 이것의 사용법을 조사해 시험한 결과를 메모 할 정도의 비망록입니다.

HSIC 테스트 정보



재생핵 힐버트 공간을 이용한 비파라메트릭 독립성 검정(Hilbert-Schmidt Independence Criterion test). 하지만 슬프게도, 나는이 근처의 수리를 이해할 수 없으며 시간이 걸릴 것 같아서 도움이 될 것 같은 링크 만.
- 후쿠미즈 켄지, 재생 핵 힐버트 공간을 이용한 비선형 데이터 해석 방법
- 후쿠미즈 켄지, 커널 법 입문 6. 커널 평균을 이용한 비 파라 메트릭 추론

일단 R에서 시도해 봅시다.



보통의 HSIC도 사용할 수 있는 패키지가 있습니다만, 순수하게 확장한 dHSIC(d variable HSIC) 패키지 )를 사용하는 것이 좋을 것 같습니다. HSIC는 2 변수 밖에 대응하고 있지 않았습니다만, 이쪽은 다변수를 사용할 수 있는 모양.

2변수로 사용할 때는 dhsic.test(x, y)$p.value로 P값을 구할 수 있다. 귀무가설은 「2 변수에는 (비)선형관계는 없다」이므로, 작으면 그것이 기각되기 때문에, 비선형관계도 포함해 상관이 있다고 말할 수 있다. 덧붙여 「토루 이마이, 21세기의 수법 대결(MIC vs HSIC)」 에 의하면, 노이즈에 강해도 관계 있음이라고 판정하기 쉬운 모양. 이 점도 시도해 보자.

선형



기본적으로는, 여기에 한정하지 않고, 모두 과거 기사 +dhsic.test를 해 보았을 뿐입니다.
그리고, 이전보다 노이즈를 증대시켜 본 것도 있습니다.


library(dHSIC)
library(minerva)
set.seed(1)
x1 <- rnorm(n=100)
set.seed(2)
e <- rnorm(n=100)
y1 <- 4 * x1 + 5 + 2*e
plot(x1, y1)
cor(x1, y1, method="pearson")
cor(x1, y1, method="spearman")
mine(x1, y1)$MIC
dhsic.test(x1, y1)$p.value

출력 결과
[1] 0.8159582 #pearson
[1] 0.8138854 #spearman
[1] 0.5862294 #MIC
[1] 0.000999001 #dHSIC p-value

3차 곡선




y2 <- 3*x1^3 + x1^2 + 2*x1+ 5 + 2*e
plot(x1, y2)
cor(x1, y2, method="pearson")
cor(x1, y2, method="spearman")
mine(x1, y2)$MIC
dhsic.test(x1, y2)$p.value

출력 결과
[1] 0.8397053 #pearson
[1] 0.8214701 #spearman
[1] 0.6140474 #MIC
[1] 0.000999001 #dHSIC p-value

2차 곡선




y3 <- 4*x1^2 + 5 + 3*e
plot(x1, y3)
cor(x1, y3, method="pearson")
cor(x1, y3, method="spearman")
mine(x1, y3)$MIC
dhsic.test(x1, y3)$p.value

출력 결과
[1] 0.003019591 #pearson
[1] 0.01570957 #spearman
[1] 0.5286332 #MIC
[1] 0.000999001 #dHSIC p-value

sin 커브



dhsic.test의 P 값이 높아지고 귀무 가설을 기각할 수 없습니다.
주기성이 있는 데이터의 검출은 서투른? 이 근처는 요 검토.


y4 <- 2*sin(5*x1) + e
plot(x1, y4)
cor(x1, y4, method="pearson")
cor(x1, y4, method="spearman")
mine(x1, y4)$MIC
dhsic.test(x1, y4)$p.value

출력 결과
[1] -0.0958496 #pearson
[1] -0.08838884 #spearman
[1] 0.638089 #MIC
[1] 0.4785215 #dHSIC p-value

난수 관계




set.seed(2)
y5 <- rnorm(n=100)
plot(x1, y5)
cor(x1, y5, method="pearson")
cor(x1, y5, method="spearman")
mine(x1, y5)$MIC
dhsic.test(x1, y5)$p.value

출력 결과
[1] -0.1537208 #pearson
[1] -0.1537954 #spearman
[1] 0.2701778 #MIC
[1] 0.1488511 #dHSIC p-value

마지막으로



sin 곡선의 dhsic.test에서 귀무 가설이 기각되지 않았던 점은 요고찰.
수리면을 모르면, 지표의 한계도 모르기 때문에, 요점 공부군요. . (당연)

그리고, HSIC는 다른 응용예도 보이기 때문에, 이런 느낌으로 사용해 보고 끝이 아니고, 비선형의 취급의 기초의 커널법이나 HSIC는 확실히 이해해, 적절한 활용을 하고 싶은 곳입니다.

참고문헌


  • R Package ‘dHSIC’
  • 후쿠미즈 켄지, 재생 핵 힐버트 공간을 이용한 비선형 데이터 해석 방법
  • 후쿠미즈 켄지, 커널 법 입문 6. 커널 평균을 이용한 비 파라 메트릭 추론
  • Toru Imai, 21세기 수법 대결 (MIC vs HSIC)

  • 실행 환경


  • MacOS 10.15.5 (19F101)
  • R 버전 4.0.0 (2020-04-24) - "Arbor Day"
  • RStudio Version 1.3.959
  • dHSIC 2.1
  • minerva 1.5.8
  • 좋은 웹페이지 즐겨찾기