상관계수란? 공식·계산법·해석 기준 총정리 (피어슨·결정계수)

상관계수(correlation coefficient)는 두 변수의 선형 관계가 어느 방향으로 얼마나 강한지를 -1부터 1 사이의 값으로 나타낸 지표입니다. 표본에서는 보통 r, 모집단에서는 ρ(로, rho)를 사용합니다. r이 1에 가까우면 강한 양의 선형관계, -1에 가까우면 강한 음의 선형관계이며, 0에 가까우면 선형관계가 약하다는 뜻입니다.

피어슨 표본상관계수 공식은 다음과 같습니다.

r = Σ[(xᵢ − x̄)(yᵢ − ȳ)] ÷ √{Σ(xᵢ − x̄)² · Σ(yᵢ − ȳ)²}

이 글에서는 상관계수의 뜻과 공식, 손으로 계산하는 예제, 값의 해석 기준, 피어슨과 스피어만 선택법, 결정계수와의 차이, R·Python·Excel 계산법을 순서대로 설명합니다.

블로그 글을 작성함에 있어서 최대한 정확한 정보를 제공하고자 노력하고 있습니다만, 간혹 오류가 있을 수 있습니다. 발견시 댓글 달아주시면 정정하겠습니다. 블로그의 링크들을 통하여 구매하시면 소정의 커미션이 슬통에 들어옵니다.

상관계수란?

상관계수는 키와 몸무게처럼 두 수치형 변수가 함께 움직이는 패턴을 하나의 값으로 요약합니다. 피어슨 상관계수는 특히 직선에 가까운 관계의 방향과 강도를 측정합니다. NIST도 상관계수를 두 변수의 선형 관계를 측정하는 값으로 정의합니다.

  • 범위: -1 ≤ r ≤ 1
  • 양수: X가 커질수록 Y도 커지는 경향
  • 음수: X가 커질수록 Y는 작아지는 경향
  • 절대값: 1에 가까울수록 직선 관계가 강함
  • r = 0: 선형관계가 없다는 뜻이며, 비선형 관계까지 없다는 뜻은 아님

공분산과 상관계수의 관계

공분산은 두 변수가 같은 방향으로 움직이는지 반대 방향으로 움직이는지를 보여주지만, cm와 kg처럼 측정 단위가 바뀌면 값의 크기도 달라집니다. 공분산을 두 변수의 표준편차로 나누어 단위를 없앤 값이 상관계수입니다.

모상관계수: ρXY = Cov(X,Y) ÷ (σXσY)

따라서 상관계수는 단위가 없고, 서로 단위가 다른 변수 쌍의 선형 관계도 같은 -1~1 척도에서 비교할 수 있습니다.

피어슨 상관계수 공식

n개의 관측값 쌍 (x₁,y₁), …, (xₙ,yₙ)이 있을 때 표본상관계수는 다음과 같이 계산합니다.

r = Σ[(xᵢ − x̄)(yᵢ − ȳ)] ÷ √{Σ(xᵢ − x̄)² · Σ(yᵢ − ȳ)²}

기호뜻
xᵢ, yᵢi번째 관측값
x̄, ȳX와 Y의 표본평균
Σ모든 관측값에 대한 합
r표본 피어슨 상관계수
ρ모집단 상관계수

분자는 두 변수가 평균에서 같은 방향 또는 반대 방향으로 벗어나는 정도를 합한 값입니다. 분모는 각 변수의 퍼짐을 표준화합니다. 이 때문에 r은 원래 단위와 무관하고 항상 -1과 1 사이에 놓입니다.

상관계수 공식의 직관적 형태

각 관측값을 표준점수 z로 바꾸면 공식은 더 직관적으로 보입니다.

r = [1 ÷ (n − 1)] · Σ(zxi · zyi)

X와 Y가 모두 평균보다 크거나 모두 평균보다 작으면 두 표준점수의 곱은 양수가 됩니다. 한 변수만 평균보다 크면 곱은 음수가 됩니다. 이 곱들을 모두 더해 평균낸 값이 피어슨 상관계수입니다.

표본상관계수를 손으로 계산하는 과정

상관계수 계산 예제

X = (1, 2, 3), Y = (1, 2, 4)인 간단한 자료를 공식에 넣어 보겠습니다. 평균은 x̄ = 2, ȳ = 7/3입니다.

ixᵢyᵢxᵢ−x̄yᵢ−ȳ(xᵢ−x̄)(yᵢ−ȳ)
111-1-1.3331.333
2220-0.3330
33411.6671.667
합계3
  1. 교차곱의 합: Σ(xᵢ−x̄)(yᵢ−ȳ) = 3
  2. X 편차 제곱합: Σ(xᵢ−x̄)² = 2
  3. Y 편차 제곱합: Σ(yᵢ−ȳ)² ≈ 4.667
  4. r = 3 ÷ √(2 × 4.667) ≈ 0.982

0.982는 X가 증가할 때 Y도 거의 직선에 가깝게 증가하는 매우 강한 양의 선형관계를 뜻합니다. 관측값이 세 개뿐이므로 실제 분석에서는 이 숫자만 보고 일반화하면 안 되며, 산점도와 표본 수를 함께 확인해야 합니다.

상관계수 해석 기준

먼저 부호로 방향을, 절대값으로 강도를 해석합니다. 아래 구간은 빠른 설명을 위한 대략적인 참고 기준이며 모든 분야에 공통으로 적용되는 절대 규칙은 아닙니다. 의학, 사회과학, 공학처럼 연구 분야와 측정 오차가 다르면 같은 r도 의미가 달라질 수 있습니다.

|r| 범위선형관계 강도에 대한 대략적 표현
0.00~0.19매우 약함
0.20~0.39약함
0.40~0.59중간
0.60~0.79강함
0.80~1.00매우 강함
상관계수 -0.99부터 0.99까지 산점도 패턴 비교
상관계수 값에 따른 두 변수의 선형관계 변화

예를 들어 r = -0.70이면 관계가 약하다는 뜻이 아니라, 강한 음의 선형관계를 뜻합니다. 부호는 방향이고 강도는 절대값 |r| = 0.70으로 판단합니다.

r이 0이면 두 변수는 관계가 없을까?

아닙니다. 피어슨 r이 0에 가깝다는 것은 선형 관계가 약하다는 뜻입니다. U자형처럼 강한 비선형 관계가 있어도 양쪽 방향이 상쇄되어 r은 0에 가까울 수 있습니다. NIST의 산점도 가이드처럼 상관계수를 계산하기 전에는 산점도로 선형성, 이상치, 집단별 패턴을 확인해야 합니다.

피어슨과 스피어만 상관계수 선택

구분피어슨(Pearson)스피어만(Spearman)
측정 대상원래 수치의 선형관계순위의 단조관계
잘 맞는 자료연속형 수치 자료순서형 자료 또는 순위로 바꿀 수 있는 수치 자료
관계 형태직선에 가까운 관계계속 증가하거나 계속 감소하는 관계
이상치 영향상대적으로 큼순위를 사용해 상대적으로 작음
대표 사용 상황키와 몸무게, 시험점수 두 과목만족도 순위, 비선형이지만 단조인 관계

R의 공식 문서에 따르면 cor()는 Pearson, Spearman, Kendall 방법을 지원하며, Spearman은 기본적으로 각 변수의 순위 사이 상관을 계산합니다. 어떤 방법을 쓰더라도 산점도와 자료의 측정 수준을 먼저 확인하세요.

상관계수와 결정계수 차이

상관계수 r은 관계의 방향과 선형 강도를 나타냅니다. 결정계수 R²은 회귀모형이 종속변수의 변동을 얼마나 설명하는지를 나타냅니다.

설명변수가 하나이고 절편을 포함한 단순선형회귀에서는 R² = r²입니다. 앞의 예제에서 r ≈ 0.982이므로 r² ≈ 0.964입니다. 이 회귀모형에서는 Y 변동의 약 96.4%가 X와의 선형 관계로 설명된다고 표현할 수 있습니다.

하지만 “X가 Y의 96.4%를 원인으로 만들었다”는 뜻은 아닙니다. 상관관계와 회귀의 설명력만으로 인과관계를 증명할 수 없으며, 다중회귀나 절편이 없는 모형에서는 R²을 단순히 r²로 해석할 수 없습니다.

R·Python·Excel에서 상관계수 계산

기존 실습을 따라 하려면 중간고사·기말고사 예제 데이터(examscore.csv)를 사용할 수 있습니다. 이 자료의 피어슨 상관계수는 약 0.677입니다.

중간고사와 기말고사 점수 상관계수 계산 예제 데이터
30명 학생의 중간고사·기말고사 점수 예제

R에서 계산

mydata <- read.csv("examscore.csv")

# 피어슨 상관계수
cor(mydata$midterm, mydata$final,
    use = "complete.obs",
    method = "pearson")

# 상관계수, 신뢰구간, p-value
cor.test(mydata$midterm, mydata$final,
         method = "pearson")

# 스피어만 순위상관계수
cor(mydata$midterm, mydata$final,
    use = "complete.obs",
    method = "spearman")

결측값 처리 방식은 분석 전에 결정해야 합니다. use = "complete.obs"는 두 변수 중 하나라도 결측인 행을 제외하고 계산합니다.

Python에서 계산

import pandas as pd
from scipy.stats import pearsonr, spearmanr

mydata = pd.read_csv("examscore.csv")
clean = mydata[["midterm", "final"]].dropna()

pearson = pearsonr(clean["midterm"], clean["final"])
print(pearson.statistic)  # 상관계수
print(pearson.pvalue)     # 무상관 검정 p-value

spearman = spearmanr(clean["midterm"], clean["final"])
print(spearman.statistic)

SciPy의 pearsonr()는 피어슨 상관계수와 무상관 가설검정의 p-value를 함께 반환합니다. p-value는 관계의 크기가 아니라 표본에서 관찰된 r이 모집단 무상관 가설과 얼마나 양립하기 어려운지를 판단하는 값입니다.

Excel에서 계산

=CORREL(A2:A31, B2:B31)

A열과 B열에 두 변수의 값이 있다면 CORREL 함수로 피어슨 상관계수를 계산할 수 있습니다. 숫자를 보기 전에 산점도를 함께 만들어 이상치와 비선형 패턴을 확인하세요.

상관계수 해석에서 자주 하는 실수

  • 상관관계를 인과관계로 해석: 제3의 변수나 반대 방향의 인과가 있을 수 있습니다.
  • 산점도를 보지 않음: 비선형 관계나 한두 개의 이상치가 r을 왜곡할 수 있습니다.
  • 절대 기준만 적용: 같은 r이라도 분야, 측정 신뢰도, 표본 범위에 따라 의미가 달라집니다.
  • 표본 수를 무시: 같은 r이라도 표본 수에 따라 신뢰구간과 p-value가 달라집니다.
  • 집단을 무조건 합침: 집단별 관계가 다른데 데이터를 합치면 전체 상관계수가 왜곡될 수 있습니다.

표준점수 곱으로 보는 각 관측값의 기여

각 점의 zxzy가 양수이면 양의 상관에, 음수이면 음의 상관에 기여합니다. 곱의 절대값이 클수록 최종 r에 미치는 영향도 커집니다. 이 구조를 시각화하면 이상치가 상관계수를 크게 움직이는 이유도 이해하기 쉽습니다.

표준점수 곱의 부호와 크기로 상관계수 기여도를 표현한 산점도
각 관측값의 표준점수 곱이 상관계수에 기여하는 방향
표본별 상관계수 기여도를 시각화하는 방법

자주 묻는 질문

상관계수의 범위는 왜 -1부터 1인가요?

공분산을 두 변수의 표준편차 곱으로 나누어 표준화하기 때문입니다. 코시-슈바르츠 부등식에 의해 표준화한 값의 절대값은 1을 넘을 수 없습니다.

상관계수가 0.7이면 높은 편인가요?

일반적인 참고표에서는 |r| = 0.7을 강한 선형관계로 표현하는 경우가 많습니다. 하지만 분야, 표본 수, 측정 오차와 산점도를 함께 보고 판단해야 합니다.

상관계수가 음수이면 나쁜 관계인가요?

아닙니다. 음수는 좋고 나쁨이 아니라 방향을 나타냅니다. r = -0.8은 한 변수가 증가할 때 다른 변수가 감소하는 강한 선형관계를 뜻합니다.

피어슨 상관계수와 스피어만 상관계수 중 무엇을 써야 하나요?

연속형 자료에서 직선 관계를 측정하려면 피어슨을 우선 검토합니다. 순서형 자료이거나 관계가 직선은 아니지만 계속 증가·감소하고 이상치 영향도 줄이고 싶다면 스피어만을 검토합니다.

상관계수와 p-value는 어떻게 함께 해석하나요?

r은 관계의 방향과 크기를 나타내고 p-value는 무상관 가설에 대한 통계적 판단을 돕습니다. 효과 크기, 신뢰구간, 표본 수와 산점도를 함께 보고 결론을 내려야 합니다.

참고한 공식 문서

최종 업데이트: 2026년 8월 24일


당신이 좋아할 만한 콘텐츠

by Google Adsense


관련 글 보기