파이썬에서 변수간의 상관 관계를 계산하는 방법
데이터 세트의 변수 간에 복잡하고 알 수 없는 관계가 있을 수 있습니다.
데이터 세트의 변수가 서로 의존하는 정도를 발견하고 정량화하는 것이 중요합니다. 이 지식은 선형 회귀와 같은 머신러닝 알고리즘의 기대치를 충족하도록 데이터를 더 잘 준비하는 데 도움이 될 수 있으며, 이러한 상호 종속성이 있을 경우 성능이 저하됩니다.
이 자습서에서는 상관 관계가 변수 간의 관계에 대한 통계적 요약이며 다양한 유형의 변수 및 관계에 대해 상관 관계를 계산하는 방법을 알 수 있습니다.
이 자습서를 완료하면 다음을 알 수 있습니다.
- 둘 이상의 변수 간의 선형 관계를 요약하기 위해 공분산 행렬을 계산하는 방법.
- 두 변수 간의 선형 관계를 요약하기 위해 Pearson의 상관 계수를 계산하는 방법.
- 두 변수 간의 단조 관계를 요약하기 위해 Spearman의 상관 계수를 계산하는 방법.
튜토리얼 개요
이 튜토리얼은 5 부분으로 나뉩니다.
- 상관 관계란 무엇입니까?
- 테스트 데이터 세트
- 공분산
- 피어슨의 상관 관계
- 스피어맨의 상관관계
상관 관계란 무엇입니까?
데이터 세트 내의 변수는 여러 가지 이유로 관련될 수 있습니다.
예를 들어:
- 한 변수가 다른 변수의 값을 유발하거나 종속될 수 있습니다.
- 한 변수는 다른 변수와 가볍게 연결될 수 있습니다.
- 두 변수는 세 번째 알 수 없는 변수에 종속될 수 있습니다.
데이터 분석 및 모델링에서 변수 간의 관계를 더 잘 이해하는 데 유용할 수 있습니다. 두 변수 간의 통계적 관계를 상관 관계라고 합니다.
상관 관계는 양수(두 변수가 같은 방향으로 이동함을 의미)이거나 음수(한 변수의 값이 증가하면 다른 변수의 값이 감소함을 의미)일 수 있습니다. 상관 관계는 중립이거나 0일 수도 있으며, 이는 변수가 서로 관련이 없음을 의미합니다.
- 양의 상관 관계: 두 변수가 같은 방향으로 변경됩니다.
- 중립 상관: 변수 변경에 관계가 없습니다.
- 음의 상관 관계: 변수가 반대 방향으로 변합니다.
일부 알고리즘의 성능은 둘 이상의 변수가 밀접하게 관련되어 있는 경우(다중 공선성이라고 함) 저하될 수 있습니다. 예를 들어 선형 회귀는 모델의 기술을 향상시키기 위해 문제가 되는 상관 변수 중 하나를 제거해야합니다.
또한 모델 개발을 위한 입력으로 관련되거나 관련되지 않을 수 있는 변수에 대한 통찰력을 제공하기 위해 입력 변수와 출력 변수 간의 상관 관계에 관심이 있을 수 있습니다.
관계의 구조는 알려져 있을 수 있습니다(예: 선형일 수도 있고, 두 변수 사이에 관계가 존재하는지 또는 어떤 구조를 취할 수 있는지 전혀 모를 수 있습니다. 변수의 관계와 분포에 대해 알려진 내용에 따라 다른 상관 관계 점수를 계산할 수 있습니다.
이 튜토리얼에서는 가우스 분포와 선형 관계가 있는 변수에 대한 점수와 분포를 가정하지 않고 단조(증가 또는 감소) 관계에 대해 보고하는 변수에 대한 점수를 살펴보겠습니다.
테스트 데이터 세트
상관 관계 방법을 살펴보기 전에 방법을 테스트하는 데 사용할 수 있는 데이터 세트를 정의해 보겠습니다.
강한 양의 상관 관계를 가진 두 개의 두 변수에 대한 1,000개의 샘플을 생성합니다. 첫 번째 변수는 평균이 100이고 표준 편차가 20인 가우스 분포에서 추출한 난수입니다. 두 번째 변수는 가우스 잡음이 추가된 첫 번째 변수의 값이며 평균은 50이고 표준 편차는 10입니다.
randn() 함수를 사용하여 평균이 0이고 표준 편차가 1 인 임의의 가우스 값을 생성 한 다음 결과에 자체 표준 편차를 곱하고 평균을 추가하여 값을 원하는 범위로 이동합니다.
의사 난수 생성기는 코드가 실행될 때마다 동일한 숫자 샘플을 얻을 수 있도록 시드됩니다.
먼저 예제를 실행하면 각 변수에 대한 평균과 표준 편차가 인쇄됩니다.
두 변수의 산점도가 생성됩니다. 데이터 세트를 고안했기 때문에 두 변수 사이에 관계가 있음을 알 수 있습니다. 이는 증가하는 추세를 볼 수 있는 생성된 산점도를 검토할 때 분명합니다.
상관 관계 점수를 계산하기 전에 먼저 공분산이라는 중요한 통계 빌딩 블록을 살펴봐야 합니다.
공분산
변수는 선형 관계로 관련될 수 있습니다. 이는 두 데이터 샘플에서 일관되게 가산되는 관계입니다.
이 관계는 공분산이라고 하는 두 변수 간에 요약될 수 있습니다. 각 샘플의 값 사이의 곱 평균으로 계산되며, 값이 중앙에 위치합니다 (평균을 뺍니다).
표본 공분산의 계산은 다음과 같습니다.
계산에서 평균을 사용하면 각 데이터 샘플이 가우스 또는 가우스와 같은 분포를 가져야 함을 알 수 있습니다.
공분산의 부호는 두 변수가 같은 방향으로 변하는지(양수) 또는 다른 방향으로 변하는지(음수)로 해석할 수 있습니다. 공분산의 크기는 쉽게 해석되지 않습니다. 공분산 값이 0이면 두 변수가 모두 완전히 독립적이라는 것을 나타냅니다.
cov()NumPy 함수를 사용하여 둘 이상의 변수 간의 공분산 행렬을 계산할 수 있습니다.
행렬의 대각선에는 각 변수와 자체 간의 공분산이 포함됩니다. 행렬의 다른 값은 두 변수 간의 공분산을 나타냅니다. 이 경우 나머지 두 값은 두 변수에 대해서만 공분산을 계산한다는 점을 감안할 때 동일합니다.
검정 문제에서 두 변수에 대한 공분산 행렬을 계산할 수 있습니다.
전체 예제는 다음과 같습니다.
공분산 및 공분산 행렬은 둘 이상의 변수 간의 관계를 특성화하기 위해 통계 및 다변량 분석에서 널리 사용됩니다.
이 예제를 실행하면 공분산 행렬이 계산되고 인쇄됩니다.
데이터 집합은 가우스 분포에서 추출한 각 변수로 구성되었고 변수는 선형 상관 관계가 있기 때문에 공분산은 관계를 설명하는 합리적인 방법입니다.
두 변수 간의 공분산은 389.75입니다. 변수가 예상과 같은 방향으로 변한다는 것을 암시하는 양수임을 알 수 있습니다.
통계 도구로서의 공분산만의 문제는 해석하기 어렵다는 것입니다. 이것은 다음으로 피어슨의 상관 계수로 이어집니다.
피어슨의 상관 관계
Pearson 상관 계수(Karl Pearson의 이름을 따서 명명됨)는 두 데이터 샘플 간의 선형 관계의 강도를 요약하는 데 사용할 수 있습니다.
Pearson의 상관 계수는 두 변수의 공분산을 각 데이터 표본의 표준 편차의 곱으로 나눈 값으로 계산됩니다. 해석 가능한 점수를 제공하기 위해 두 변수 사이의 공분산을 정규화하는 것입니다.
계산에서 평균 및 표준 편차를 사용하면 두 데이터 샘플이 가우스 또는 가우스와 같은 분포를 가질 필요가 있음을 시사합니다.
계산 결과, 상관 계수는 관계를 이해하도록 해석될 수 있습니다.
계수는 -1과 1 사이의 값을 반환하며, 이 값은 완전 음의 상관 관계에서 완전 양의 상관 관계로의 상관 한계를 나타냅니다. 값 0은 상관 관계가 없음을 의미합니다. 이 값은 해석되어야 하며, 종종 -0.5 미만 또는 0.5 이상의 값은 주목할 만한 상관 관계를 나타내고 이러한 값보다 낮은 값은 덜 주목할만한 상관 관계를 나타냅니다.
pearsonr()SciPy 함수를 사용하여 길이가 같은 두 데이터 샘플 간의 Pearson 상관 계수를 계산할 수 있습니다.
테스트 문제에서 두 변수 간의 상관 관계를 계산할 수 있습니다.
전체 예제는 다음과 같습니다.
예제를 실행하면 Pearson의 상관 계수가 계산되고 인쇄됩니다.
두 변수가 양의 상관 관계가 있고 상관 관계가 0.8임을 알 수 있습니다. 이는 높은 수준의 상관 관계(예: 0.5 이상 1.0에 가까운 값)를 나타냅니다.
Pearson의 상관 계수는 둘 이상의 변수 간의 관계를 평가하는 데 사용할 수 있습니다.
이는 데이터 세트의 각 변수 쌍 간의 관계 행렬을 계산하여 수행할 수 있습니다. 결과는 상관 행렬이라고 하는 대칭 행렬이며, 각 열은 항상 자신과 완벽하게 상관되므로 대각선을 따라 값이 1.0입니다.
스피어맨의 상관관계
두 변수는 비선형 관계로 관련될 수 있으며, 따라서 변수 분포 전체에서 관계가 더 강하거나 약합니다.
또한, 고려되는 두 변수는 비가우스 분포를 가질 수 있습니다.
이 경우 Spearman의 상관 계수(Charles Spearman의 이름을 따서 명명됨)를 사용하여 두 데이터 샘플 간의 강도를 요약할 수 있습니다. 이 관계 검정은 변수 간에 선형 관계가 있는 경우에도 사용할 수 있지만 검정력이 약간 낮습니다(예: 계수 점수가 낮아질 수 있음).
Pearson 상관 계수와 마찬가지로 점수는 완벽하게 음의 상관 관계가 있는 변수와 완벽하게 양의 상관관계가 있는 변수에 대해 -1과 1 사이입니다.
표본 자체에 대한 공분산 및 표준 편차를 사용하여 계수를 계산하는 대신 이러한 통계량은 각 표본에 대한 값의 상대적 순위에서 계산됩니다. 이것은 비모수 통계에서 사용되는 일반적인 접근 방식입니다(예: 가우스와 같은 데이터의 분포를 가정하지 않는 통계 방법).
변수 간의 선형 관계는 가정되지 않지만 단조 관계가 가정됩니다. 이것은 두 변수 간의 증가 또는 감소 관계에 대한 수학적 이름입니다.
두 변수 간의 분포와 가능한 관계가 확실하지 않은 경우 Spearman 상관 계수를 사용하는 것이 좋습니다.
spearmanr()SciPy 함수를 사용하여 길이가 같은 두 데이터 샘플 간의 스피어맨 상관 계수를 계산할 수 있습니다.
테스트 문제에서 두 변수 간의 상관 관계를 계산할 수 있습니다.
전체 예제는 다음과 같습니다.
예제를 실행하면 Spearman의 상관 계수가 계산되고 인쇄됩니다.
데이터가 가우스이고 변수 간의 관계가 선형이라는 것을 알고 있습니다. 그럼에도 불구하고 비모수 순위 기반 접근 방식은 0.8의 변수 간에 강한 상관 관계를 보여줍니다.
Pearson의 상관 계수와 마찬가지로 계수는 데이터 세트의 각 변수에 대해 쌍별로 계산되어 검토를 위한 상관 행렬을 제공할 수 있습니다.
Python의 비모수 상관 관계 메서드에 대한 자세한 도움말은 다음을 참조하세요.
확장
이 섹션에는 탐색할 수 있는 자습서를 확장하기 위한 몇 가지 아이디어가 나열되어 있습니다.
- 양수 및 음수 관계로 자체 데이터 세트를 생성하고 두 상관 계수를 모두 계산합니다.
- 제공된 데이터 세트에 대한 Pearson 또는 Spearman 상관 행렬을 계산하는 함수를 작성합니다.
- 표준 머신러닝 데이터 세트를 로드하고 모든 실제 값 변수 쌍 간의 상관 계수를 계산합니다.
추가 정보
이 섹션에서는 더 자세히 알아보려는 경우 주제에 대한 더 많은 리소스를 제공합니다.
게시물
API
- numpy.random.seed() API
- numpy.random.randn() API
- numpy.mean() API
- numpy.std() API
- matplotlib.pyplot.scatter() API
- numpy.cov() API
- scipy.stats.pearsonr() API
- scipy.stats.spearmanr() API
기사
요약
이 자습서에서는 상관 관계가 변수 간의 관계와 다양한 유형의 변수 및 관계에 대해 이를 계산하는 방법에 대한 통계적 요약이라는 것을 발견했습니다.
특히 다음 내용을 배웠습니다.
- 둘 이상의 변수 간의 선형 관계를 요약하기 위해 공분산 행렬을 계산하는 방법.
- 두 변수 간의 선형 관계를 요약하기 위해 Pearson의 상관 계수를 계산하는 방법.
- 두 변수 간의 단조 관계를 요약하기 위해 Spearman의 상관 계수를 계산하는 방법.