【MATLAB】상관 계수 행렬을 히트 맵 표시
상관 계수 행렬은?
특정 데이터 $\mathit{\mathbf{x}}=\left\lbrace x_1 ,x_2 ,\cdots ,x_n\right\rbrace$,$\mathit{\mathbf{y}}=\left\lbrace y_1 ,y_2 ,\cdots ,y_n\right\rbrace$ 가 있을 때, 각각의 조합으로 상관을 계산할 수 있습니다. 계산식은 wikipedia에서 다음과 같습니다.
r=\frac{\sum_{i=1}^n \left(x_i -\bar{x} \right)\left(y_i -\bar{y} \right)}{\sqrt{\sum_{j=1}^n {\left(x_j -\bar{x} \right)}^2 }\sqrt{\sum_{k=1}^n {\left(y_k -\bar{y} \right)}^2 }}
여러 데이터 열 ${\mathit{\mathbf{x}}}_1 ,{\mathit{\mathbf{x}}}_2 ,\cdots ,{\mathit{\mathbf{x}}}_n$ 때때로 이러한 모든 조합에서 상관 계수를 계산하고 행렬화할 수 있습니다. 행렬의 각 요소는 다음과 같습니다.
R\left(i,j\right)=r_{i,j} \;\;\;\;\left(i=1,2,\cdots ,n\right)
이것이 상관 계수 행렬입니다. 말할 필요도 없는 $R\left(i,j\right)=R\left(j,i\right)$로, $R\left(i,i\right)=1$가 됩니다.
상관 계수 행렬의 matlab 코드
이것을 matlab에서 실현하는 것은 간단합니다. 우선 먼저 데이터를 읽습니다. 이번은 아야메입니다.
코드load fisheriris.mat
size(meas)
Outputans = 1x2
150 4
4개의 설명 변수 각각에 대해 150개의 데이터가 있네요.
각 설명 변수별 상관 계수 행렬은 다음 코드로 계산할 수 있습니다.
코드R = corrcoef(meas)
OutputR = 4x4
1.0000 -0.1176 0.8718 0.8179
-0.1176 1.0000 -0.4284 -0.3661
0.8718 -0.4284 1.0000 0.9629
0.8179 -0.3661 0.9629 1.0000
이제 각 변수의 상관 계수 행렬을 만들었습니다. 세 번째와 네 번째 변수의 상관 관계가 매우 높습니다. 아무튼 상관은 단순히 선형의 관계가 있는지 보고 있을 뿐이므로 반드시 산포도를 보는 것을 잊지 말아야 한다고는 생각합니다.
코드% おまけ
plotmatrix(meas)
이것을 보면 네 번째 필요 없어요.
행렬을 히트맵으로 시각화
여기에는 heatmap 함수라는 것이있었습니다.
코드h = heatmap(R);
···색이 좋지 않다
파랑이 상관 max는 뭔가 거꾸로 느끼지 않겠습니까 .... 색상지도 물론 당황합니다.
코드h.Colormap = parula(64);
처음 사용했기 때문에 몰랐습니다만, GUI로 행, 열의 교환을 할 수 있네요~.
추가 (2020/7/2)
@sanmojih 씨로부터 코멘트 받았습니다. 색의 범위를 지정하는 것과, 부의 상관도 상관 개미로서 히트 맵으로 알도록(듯이) 하는 것으로, 한층 더 보기 쉽게 오해가 없는 가시화가 됩니다.
코드h.ColorLimits = [-1,1];
h.Colormap = [flipud(parula(64));parula(64)]; % parulaの場合
결론
조금 조사한 내용의 점유율이었습니다. 이번은 짧습니다.
감사의 말
언제나처럼 eigs씨 의 livescript2markdown 사용하고 있습니다.
Reference
이 문제에 관하여(【MATLAB】상관 계수 행렬을 히트 맵 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shun-kusano/items/4d928aab64010cac980a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
r=\frac{\sum_{i=1}^n \left(x_i -\bar{x} \right)\left(y_i -\bar{y} \right)}{\sqrt{\sum_{j=1}^n {\left(x_j -\bar{x} \right)}^2 }\sqrt{\sum_{k=1}^n {\left(y_k -\bar{y} \right)}^2 }}
R\left(i,j\right)=r_{i,j} \;\;\;\;\left(i=1,2,\cdots ,n\right)
이것을 matlab에서 실현하는 것은 간단합니다. 우선 먼저 데이터를 읽습니다. 이번은 아야메입니다.
코드
load fisheriris.mat
size(meas)
Output
ans = 1x2
150 4
4개의 설명 변수 각각에 대해 150개의 데이터가 있네요.
각 설명 변수별 상관 계수 행렬은 다음 코드로 계산할 수 있습니다.
코드
R = corrcoef(meas)
Output
R = 4x4
1.0000 -0.1176 0.8718 0.8179
-0.1176 1.0000 -0.4284 -0.3661
0.8718 -0.4284 1.0000 0.9629
0.8179 -0.3661 0.9629 1.0000
이제 각 변수의 상관 계수 행렬을 만들었습니다. 세 번째와 네 번째 변수의 상관 관계가 매우 높습니다. 아무튼 상관은 단순히 선형의 관계가 있는지 보고 있을 뿐이므로 반드시 산포도를 보는 것을 잊지 말아야 한다고는 생각합니다.
코드
% おまけ
plotmatrix(meas)
이것을 보면 네 번째 필요 없어요.
행렬을 히트맵으로 시각화
여기에는 heatmap 함수라는 것이있었습니다.
코드h = heatmap(R);
···색이 좋지 않다
파랑이 상관 max는 뭔가 거꾸로 느끼지 않겠습니까 .... 색상지도 물론 당황합니다.
코드h.Colormap = parula(64);
처음 사용했기 때문에 몰랐습니다만, GUI로 행, 열의 교환을 할 수 있네요~.
추가 (2020/7/2)
@sanmojih 씨로부터 코멘트 받았습니다. 색의 범위를 지정하는 것과, 부의 상관도 상관 개미로서 히트 맵으로 알도록(듯이) 하는 것으로, 한층 더 보기 쉽게 오해가 없는 가시화가 됩니다.
코드h.ColorLimits = [-1,1];
h.Colormap = [flipud(parula(64));parula(64)]; % parulaの場合
결론
조금 조사한 내용의 점유율이었습니다. 이번은 짧습니다.
감사의 말
언제나처럼 eigs씨 의 livescript2markdown 사용하고 있습니다.
Reference
이 문제에 관하여(【MATLAB】상관 계수 행렬을 히트 맵 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shun-kusano/items/4d928aab64010cac980a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
h = heatmap(R);
파랑이 상관 max는 뭔가 거꾸로 느끼지 않겠습니까 .... 색상지도 물론 당황합니다.
코드
h.Colormap = parula(64);
처음 사용했기 때문에 몰랐습니다만, GUI로 행, 열의 교환을 할 수 있네요~.
추가 (2020/7/2)
@sanmojih 씨로부터 코멘트 받았습니다. 색의 범위를 지정하는 것과, 부의 상관도 상관 개미로서 히트 맵으로 알도록(듯이) 하는 것으로, 한층 더 보기 쉽게 오해가 없는 가시화가 됩니다.
코드h.ColorLimits = [-1,1];
h.Colormap = [flipud(parula(64));parula(64)]; % parulaの場合
결론
조금 조사한 내용의 점유율이었습니다. 이번은 짧습니다.
감사의 말
언제나처럼 eigs씨 의 livescript2markdown 사용하고 있습니다.
Reference
이 문제에 관하여(【MATLAB】상관 계수 행렬을 히트 맵 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shun-kusano/items/4d928aab64010cac980a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
h.ColorLimits = [-1,1];
h.Colormap = [flipud(parula(64));parula(64)]; % parulaの場合
조금 조사한 내용의 점유율이었습니다. 이번은 짧습니다.
감사의 말
언제나처럼 eigs씨 의 livescript2markdown 사용하고 있습니다.
Reference
이 문제에 관하여(【MATLAB】상관 계수 행렬을 히트 맵 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shun-kusano/items/4d928aab64010cac980a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【MATLAB】상관 계수 행렬을 히트 맵 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shun-kusano/items/4d928aab64010cac980a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)