본문으로 바로가기

잔차 플롯 완전 정복: 회귀 모형 가정 점검 방법

잔차 플롯이 무엇인지, 흔한 패턴을 해석하는 법, 그리고 잔차 플롯이 비선형성, 이분산성, 이상치 및 기타 회귀 문제를 식별하는 데 어떻게 도움이 되는지 알아보세요.
업데이트됨 2026년 9월 10일  · 9분 읽다

AI로 탐색하기

ChatGPTClaudePerplexity

회귀 모형을 적합했고 R²도 그럴싸하며 계수 역시 직관에 맞습니다. 하지만 보기 좋은 요약 표 뒤에 심하게 잘못 지정된 모형이 숨어 있을 수 있습니다. 숫자가 놓치는 것을 포착하는 산점도가 하나 있습니다. 바로 잔차 플롯입니다.

이 글에서는 잔차 플롯이 무엇인지, 읽는 방법, 알아둘 가치가 있는 패턴, 그리고 Python과 R에서 만드는 법을 다룹니다. 많은 초보자는 진단 단계를 통째로 건너뜁니다. 글을 다 읽고 나면, 그러지 않게 될 것입니다.

잔차 플롯이란?

잔차는 모형이 예측한 값과 실제 값 사이의 차이입니다: 잔차 = 관측값 − 예측값. 잔차 플롯은 그 차이를 시각화합니다. x축에는 예측(적합)값 또는 설명 변수가, y축에는 잔차가 놓입니다. 0에 수평 기준선이 있어 완벽한 예측을 나타냅니다.

0을 중심으로 무작위로 흩어진 산점도: 이상적인 잔차 플롯. 이미지: 필자 제작. 

핵심 개념은 이렇습니다. 모형이 관계를 잘 포착했다면 잔차는 잡음처럼 보여야 합니다. 0을 중심으로 무작위로 흩어져 뚜렷한 패턴이 없어야 합니다. 형태가 보이는 순간, 모형은 계수만으로는 말하지 못한 무언가를 말하고 있는 것입니다.

잔차 플롯 해석 방법

패턴을 찾으세요. 이상적으로는 뚜렷한 패턴이 없어야 합니다. 그게 전부입니다. 잔차의 위치, 분산, 형태가 드러내는 내용이 흥미로워지는 지점입니다.

위치: 산점도가 0을 중심으로 모여 있나요?

일부 적합값 구간에서는 0 위에, 다른 구간에서는 0 아래에 잔차가 주로 위치한다면 모형에 편향이 있다는 뜻입니다. 특정 구간에서 일관되게 과대(또는 과소) 예측하고 있습니다. 이는 누락된 변수가 있거나, 직선 모형이 잡아내지 못한 비선형 관계가 있음을 시사합니다.

분산: 분산이 대체로 일정한가요?

왼쪽에서 오른쪽으로 훑어보세요. 잔차의 분산이 모든 적합값에서 대체로 비슷하면 좋은 신호입니다. 적합값이 커질수록 점들이 부채꼴로 퍼지면 분산이 변하고 있는 것입니다. 이를 이분산성(heteroscedasticity)이라고 합니다. 계수 추정치를 망치지는 않지만 표준 오차를 신뢰할 수 없게 만들어, 가설 검정을 한다면 문제가 됩니다.

형태: 곡선이나 추세가 보이나요?

평평하고 패턴이 없는 것이 바람직합니다. U자형이나 아치형은 모형에 비선형 항이 빠져 있음을 말합니다. 군집이나 띠 모양은 모형이 하나로 취급한 하위 집단이 있음을 시사합니다. 모든 것에서 떨어져 있는 단일 점은 조사할 가치가 있습니다.

흔한 잔차 플롯 패턴과 그 의미

모형 문제를 알리는 네 가지 잔차 플롯 패턴. 이미지: 필자 제작.

0을 중심으로 무작위 산점

이상적인 결과입니다. 0선 위아래로 대체로 고르게 분포하고, 뚜렷한 추세가 없는 점 분포는 모형이 관계를 비교적 잘 포착했음을 의미합니다. 어느 정도의 무작위성은 당연합니다.

곡선형 패턴

곡선 또는 아치형 패턴은 보통 모형에 반영되지 않은 비선형 관계를 의미합니다. 데이터가 굽어 있는데 직선을 끼워 맞춘 셈입니다. 해결책은 대개 다항 항(예: x²)을 추가하거나 설명 변수에 변환을 적용하는 것입니다. 주택 가격이나 생물학적 성장처럼 실제에서 흔히 나타나는 패턴입니다.

깔때기 또는 부채꼴 모양

적합값이 커질수록 잔차가 더 넓게 퍼지면 이분산성으로, 분산이 일정하지 않다는 뜻입니다. 결과의 크기에 따라 예측 오차가 자연스럽게 커지는 금융 데이터에서 흔합니다. 반응 변수에 로그 변환이 첫 단계로 자주 합리적이며, 가중 최소제곱도 또 다른 선택지입니다.

군집 또는 그룹

잔차 플롯에 뚜렷한 그룹이 보이면 모형이 반영하지 못한 하위 집단이 데이터에 있음을 뜻합니다. 모형에 포함해야 할 범주형 변수(지역, 처치군, 제품 유형 등)가 있을 가능성이 큽니다. 두세 개의 촘촘한 띠가 보인다면 그 지점부터 살펴보세요.

큰 고립 잔차

다른 점들과 멀찍이 떨어진 단일 점은 주목할 만합니다. 진짜 이상치일 수도, 데이터 입력 오류일 수도, 특이한 특성을 가진 관측치일 수도 있습니다. 자동으로 삭제하지 마세요. 먼저 이해해야 합니다. 유지하거나 제거할지는 편의가 아니라 맥락에 달려 있습니다.

이러한 각 패턴에 대해 잔차 플롯은 증상을 식별할 뿐 진단을 내리지는 않습니다. 무언가 이상하다는 것을 알려줄 뿐, 왜 그런지는 여전히 파악해야 합니다.

잔차 플롯로 점검할 수 있는 회귀 가정은?

위의 패턴을 염두에 두고, 잔차 플롯이 점검할 수 있는 회귀 가정과 그렇지 않은 가정을 분명히 해 두는 것이 좋습니다.

  • 선형성: 예측 변수와 결과 간의 관계가 진정으로 선형이라면, 적합값에 대한 잔차 도표에서 추세가 없어야 합니다. 곡선이나 아크는 선형성이 성립하지 않음을 보여주는 직접적인 시각 신호입니다.
  • 등분산성: 깔때기 패턴은 이분산성이 어떻게 보이는지 그대로입니다. 적합값과 함께 분산이 커지면 등분산이 위배됩니다. 잔차-적합값 플롯은 이를 포착하는 가장 흔한 도구입니다.
  • 독립성: 관측치에 자연스러운 순서(시간, 공간, 피험자 군집)가 있다면 그 순서에 대해 잔차를 그려 패턴을 점검할 수 있습니다. 시간 순으로 정렬한 플롯에서 잔차가 추세를 보이면 자기상관을 시사합니다. 단순한 잔차-적합값 플롯만으로는 항상 드러나지 않으므로, 전용 잔차-순서 플롯이 필요할 때가 있습니다.
  • 이상치와 영향점: 큰 고립 잔차는 모형이 잘 예측하지 못한 관측치를 표시합니다. 특히 회귀선을 과도하게 끌어당기는 관측치를 찾으려면, 기본 잔차 플롯보다 Residuals vs. Leverage 플롯이 더 유용합니다.

잔차 플롯으로 신뢰성 있게 평가할 수 없는 한 가지는 정규성입니다. 평평한 잔차-적합값 플롯이 오차가 정규분포를 따른다는 것을 보장하지는 않습니다. 이를 위해서는 Q-Q 플롯이 필요합니다. 흔한 혼동이니 분명히 해 두세요.

Python에서 잔차 플롯 만드는 법

표준 워크플로는 scikit-learn으로 모형을 적합하고 잔차를 계산한 뒤, matplotlib로 시각화합니다. 주택 데이터에 단순 선형 회귀를 적용한 완전한 예시는 다음과 같습니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Sample data: square footage predicting home price
sqft = np.array([800, 1000, 1200, 1500, 1800, 2000, 2200, 2500, 3000, 3500])
price = np.array([150, 180, 210, 260, 300, 330, 370, 420, 500, 560])

# Reshape for sklearn and fit the model
X = sqft.reshape(-1, 1)
model = LinearRegression()
model.fit(X, price)

# Generate predictions and calculate residuals
predicted = model.predict(X)
residuals = price - predicted

# Plot residuals against fitted values
plt.figure(figsize=(8, 5))
plt.scatter(predicted, residuals, color='steelblue', edgecolors='white', s=80)
plt.axhline(y=0, color='red', linestyle='--', linewidth=1.2)
plt.xlabel('Fitted Values')
plt.ylabel('Residuals')
plt.title('Residual Plot')
plt.tight_layout()
plt.show()

핵심 코드는 residuals = price - predicted입니다. axhline() 호출은 0 기준선을 추가합니다. 이것이 없으면 플롯을 읽기 훨씬 어렵습니다. 출력이 대체로 패턴이 없어 보인다면 비교적 괜찮은 상태입니다. 적합값이 큰 구간에서 잔차가 커지는 점에 주목하세요. 10개 점만으로 확신하긴 어렵지만, 앞서 말한 부채꼴 형태의 힌트일 수 있습니다.

Python에서의 회귀를 더 깊이 살펴보려면 Introduction to Regression with statsmodels in Python 강의에서 모형 적합, 가정 점검, 해석을 자세히 다룹니다.

R에서 잔차 플롯 만드는 법

R은 기본 제공 기능만으로도 조금 더 수월합니다. lm()으로 모형을 적합하면 내장 plot() 함수가 잔차-적합값 플롯을 포함한 진단 패널을 자동으로 생성합니다.

# Same housing data in R
sqft <- c(800, 1000, 1200, 1500, 1800, 2000, 2200, 2500, 3000, 3500)
price <- c(150, 180, 210, 260, 300, 330, 370, 420, 500, 560)

# Fit the model and view diagnostics
housing_model <- lm(price ~ sqft)
plot(housing_model, which = 1) # which = 1 gives residuals vs. fitted

which = 1 인수는 잔차-적합값 플롯만 표시합니다. 이를 생략하면 표준 진단 플롯 네 가지(잔차-적합값, Q-Q, 척도-위치, 잔차-레버리지)가 모두 나옵니다. 전체 그림을 빠르게 파악할 때 유용합니다. R은 또한 가장 극단적인 세 점에 인덱스를 표시해 수동으로 이상치를 찾는 수고를 덜어줍니다.

R에서의 회귀를 처음부터 끝까지 살펴보려면 Introduction to Regression in R 강의에서 모형 구축과 진단을 체계적으로 배울 수 있습니다.

잔차 플롯과 다른 회귀 진단 플롯 비교

잔차-적합값 플롯은 출발점이지 전부가 아닙니다. 몇 가지 관련 플롯은 서로 다른 질문에 답합니다.

잔차 플롯 vs. Q-Q 플롯

잔차-적합값 플롯은 선형성과 등분산성을 점검합니다. Q-Q 플롯은 잔차가 정규분포를 따르는지, 즉 정규성을 점검합니다. 이는 별개의 질문입니다. 깨끗해 보이는 잔차 플롯이 정규성을 보장하지 않으며, Q-Q 플롯은 분산에 대해 아무것도 알려주지 않습니다. 일반적으로 둘 다 필요합니다.

서로 다른 플롯, 모형에 대한 서로 다른 질문. 이미지: 필자 제작.

잔차 플롯 vs. 척도-위치 플롯

척도-위치 플롯(확산-위치 플롯이라고도 함)은 표준화 잔차의 절댓값 제곱근을 적합값에 대해 그립니다. 이분산성을 탐지하도록 설계되었으며, 잔차의 부호를 제거하고 확산에만 집중하므로 원시 잔차 플롯보다 깔때기 패턴을 더 쉽게 드러내는 경우가 많습니다.

잔차 플롯 vs. 잔차-레버리지 플롯

레버리지는 모형이 그 관측치를 얼마나 못 맞췄는지가 아니라, 그 관측치의 예측 변수 값이 얼마나 특이한지를 측정합니다. 높은 레버리지와 큰 잔차가 결합되면 잠재적으로 영향력이 큰 관측치입니다. 잔차-레버리지 플롯은 이러한 조합을 식별하고 보통 가장 문제가 되는 점을 이름으로 표시합니다. 영향점이 모형을 왜곡할까 걱정된다면 이 플롯을 확인하세요.

잔차 플롯에 문제가 보일 때 무엇을 할까

잔차 플롯은 진단일 뿐, 판결이 아닙니다. 패턴이 보인다고 해서 모형이 쓸모없다는 뜻은 아닙니다. 흔한 패턴별 다음 단계는 다음과 같습니다.

  • 곡선형 패턴: 다항 항을 추가하거나 설명 변수에 변환을 고려하세요. x의 로그 변환이나 x² 항이 관계를 곧게 펴는 데 자주 도움이 됩니다.
  • 깔때기 모양: 반응 변수에 로그 또는 제곱근 변환을 시도하세요. 효과가 없으면, 가중 최소제곱으로 잡음이 큰 관측치의 영향을 줄일 수 있습니다.
  • 큰 고립 잔차: 해당 관측치를 조사하세요. 먼저 데이터 입력 오류를 확인합니다. 값이 정당하다면, 그 특이성을 모형이 반영해야 하는지 검토하세요.
  • 군집 또는 그룹: 포함하지 않은 범주형 변수를 찾아보세요. 경우에 따라 하위 집단별로 별도 모형을 세우는 것이 맞을 수 있습니다.

잔차 플롯은 증상을 보여줄 뿐입니다. 정확한 원인을 알려주지 않으며, 하나의 패턴에 여러 설명이 가능할 때도 있습니다. 더 나은 질문을 던지게 하는 계기로 활용하세요.

잔차 플롯을 읽을 때 흔한 실수

  • 완벽히 무작위인 플롯을 기대하기: 현실의 데이터는 지저분합니다. 몇몇 비일관 점, 약간의 비대칭, 극단에서의 군집은 정상입니다. 질문은 플롯이 완벽히 무작위인가가 아니라, 더 나은 모형이 제거할 수 있는 체계적 패턴이 있는가입니다.
  • 모든 이상치를 나쁜 데이터로 간주하기: 큰 잔차는 모형이 그 관측치를 잘못 예측했다는 뜻이지, 관측치가 틀렸다는 뜻은 아닙니다. 때로는 이상치가 데이터셋에서 가장 흥미로운 점입니다. 무엇인지 이해하기 전에는 삭제하지 마세요.
  • 잔차 플롯이 정규성을 보장한다고 생각하기: 그렇지 않습니다. 깨끗한 잔차-적합값 플롯은 선형성과 등분산성에 대해 알려줍니다. 정규성은 Q-Q 플롯이 필요합니다. 두 진단은 상호 보완적이지, 대체 관계가 아닙니다.
  • 맥락 없이 플롯만 보는 것: 시계열 모형의 잔차 플롯은 횡단면 데이터의 플롯과 다르게 읽어야 합니다. 우려할 만한 패턴의 기준은 데이터 구조, 표본 크기, 모형의 용도에 따라 달라집니다. 예측 모형에서 고쳐야 할 패턴이 탐색 분석에서는 무시해도 될 수 있습니다.

결론

모형을 적합하고 요약을 확인하며 R²에 만족하는 지점에서 대부분 멈춥니다. 그다음에 봐야 할 것이 잔차 플롯이며, 종종 전혀 다른 이야기를 들려줍니다. 0을 중심으로 무작위 산점이 이상적입니다. 곡선, 깔때기, 군집, 극단적이고 고립된 점은 각각 모형이 반영하지 못한 무언가를 시사합니다.

단 하나의 플롯이 전체 그림을 보여주진 않습니다. 정규성은 Q-Q 플롯으로, 분산은 척도-위치 플롯으로, 영향점이 걱정된다면 레버리지 플롯으로 잔차-적합값 플롯과 함께 보세요. 각 플롯은 서로 다른 질문에 답합니다.

더 깊이 학습하려면 Intermediate Regression with statsmodels in Python 강의에서 진단 결과에 대응하는 방법을 포함해 가정 점검을 자세히 다룹니다. 회귀 가정과 모형 평가를 폭넓게 익히려면 Assumptions of Linear Regression in Python 튜토리얼을 이어서 읽어보세요.


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chugani는 도쿄에서 JPMorgan의 최연소 헤지펀드 세일즈 데스크 책임자로 커리어를 시작했으며, 이후 리먼 브라더스에서 개인 판매 실적 기록을 세웠고, 이어서 30개국에 걸친 전자제품 유통 사업을 구축하여 매출을 SG$1억을 넘어 성장시킨 뒤 데이터 분야로 방향을 틀었습니다. 듀크대학교 경제학 졸업생이자 NYC Data Science Academy 출신인 그는 Maven의 Hugo Bowne-Anderson가 진행한 Building AI Applications 과정에서 100명+ 지원자 중 세 명뿐인 장학생 가운데 한 명이었습니다. 현재는 DataCamp, KDnuggets, Machine Learning Mastery, Statology에 통계부터 에이전트형 AI까지 폭넓은 주제로 글을 기고하고 있으며, NYC Data Science Academy에서 데이터 전문가들을 멘토링하고 있습니다. 지금까지 1,000회가 넘는 일대일 멘토링 세션을 진행했습니다.

 

FAQs

잔차 플롯에 곡선 패턴이 보이면 무엇을 의미하나요?

곡선 또는 아치형 패턴은 일반적으로 예측 변수와 결과 사이의 비선형 관계를 모형이 포착하지 못했음을 나타냅니다. 선형 회귀는 직선을 적합하기 때문에, 실제 관계가 굽어 있으면 잔차에 체계적인 곡선으로 드러납니다. 보통의 해결책은 다항 항(예: x²)을 추가하거나 예측 변수에 로그 또는 제곱근 변환을 적용하는 것입니다.

정규 데이터셋에서 얼마나 많은 잔차가 이상치처럼 보일 수 있나요?

오차가 정규분포인 잘 맞는 모형에서는 표준화 잔차의 약 5%가 우연히 ±2 바깥에, 0.3% 미만이 ±3 바깥에 위치합니다. 그러니 몇몇 극단 점은 예상 범위이며 자동으로 문제가 아닙니다. 주의할 점은 그 점들이 패턴을 이루는지, 또는 단일 점의 잔차가 데이터 이슈를 의심할 만큼 유별난지 여부입니다.

잔차 플롯만으로 모든 회귀 가정을 점검할 수 있나요?

아니요. 그리고 이는 흔한 혼동입니다. 잔차-적합값 플롯은 선형성, 등분산성, 그리고 관측 순서로 잔차를 그릴 경우 잠재적 독립성을 점검하는 데 도움을 줍니다. 정규성을 신뢰성 있게 평가할 수는 없습니다. 이를 위해서는 Q-Q 플롯이 필요합니다. 영향점은 잔차-레버리지 플롯이 더 유용합니다. 잔차 플롯은 첫 번째 진단일 뿐, 유일한 진단이 아닙니다.

잔차 플롯과 척도-위치 플롯의 차이는 무엇인가요?

둘 다 분산을 평가하지만 방식이 다릅니다. 잔차 플롯은 원시 잔차(양수와 음수)를 적합값에 대해 표시해, 곡선이나 군집 등 전반적 패턴을 찾는 데 유용합니다. 척도-위치 플롯은 표준화 잔차의 제곱근(모두 양수)을 적합값에 대해 그려 이분산성을 분리해 보기 좋습니다. 깔때기 패턴이 미묘하다면 척도-위치 플롯이 더 쉽게 드러내는 경우가 많습니다.

잔차 플롯에 큰 고립 잔차가 보이면 이상치를 제거해야 하나요?

자동으로 그렇지 않습니다. 큰 잔차는 모형이 그 관측치를 잘 예측하지 못했다는 뜻이지, 관측치가 틀렸다는 뜻은 아닙니다. 제거하기 전에 데이터 입력 오류인지, 특이하지만 정당한 사례인지, 모형의 범위를 벗어난 것인지 확인하세요. 잔차 플롯을 개선하려고 정당한 데이터를 제거하는 것은 모형 조작의 한 형태입니다. 관측치가 정당하다면, 모형의 한계를 인정하거나 다른 모형 구조를 검토하는 편이 더 정직합니다.

잔차 플롯의 이분산성은 실제로 무엇에 영향을 미치나요?

깔때기나 부채꼴 패턴은 계수 추정치에 편향을 주지 않습니다. 평균 효과는 여전히 올바릅니다. 문제가 되는 것은 표준 오차의 신뢰성, 따라서 p-값과 신뢰구간입니다. 회귀를 순수 예측 용도로만 쓰면 덜 중요할 수 있습니다. 가설 검정이나 신뢰구간을 구축한다면, 반응 변수 변환이나 불균등 분산에 대한 표준 오차 보정을 사용해야 합니다.

잔차 플롯은 단순 회귀뿐 아니라 다중 회귀에도 유효한가요?

네, 그리고 다중 회귀에서는 모형이 잘못될 방법이 더 많기 때문에 어쩌면 더 중요합니다. 표준 접근은 전체적인 관점을 위해 잔차를 적합값에 대해 그린 다음, 각 예측 변수에 대해서도 별도로 그려 모형이 놓친 비선형 관계가 있는지 점검하는 것입니다. 해석 규칙은 같습니다. 패턴을 찾고, 체계적인 무언가를 조사하세요.

시계열 회귀와 횡단면 회귀에서 잔차 플롯 해석은 어떻게 다른가요?

횡단면 회귀에서는 잔차-적합값 플롯에서 곡선, 깔때기, 군집 등 공간적 패턴을 찾습니다. 시계열 회귀에서는 시간에 따라 잔차가 상관되는지도 확인해야 합니다. 자기상관은 독립성 가정을 위반하고 표준 오차를 신뢰할 수 없게 만듭니다. 잔차를 시간 인덱스에 대해 그리고 추세나 진동 패턴을 확인하세요. Durbin-Watson 통계로 1차 자기상관을 검정할 수도 있습니다. 단순 잔차-적합값 플롯만으로는 이러한 현상을 포착하지 못합니다.

주제
데이터 분석
데이터 사이언스

DataCamp로 학습하세요

courses

통계적 사고 사례 연구

4
16.2K
통계적 사고를 실제 데이터 세트에 적용해 실행 가능한 인사이트를 도출하며 숙련에 한 걸음 더 다가가세요.
자세히 보기Right Arrow
강좌 시작
더 보기Right Arrow