세상만사 관심/기술

산점도(Scatter Plot) 정리: 개념, 해석법, 엑셀·파이썬 활용

내가그리는인생 2025. 11. 30. 16:56
반응형

통계 산점도(Scatter Plot)의 개념부터 해석 방법, 상관관계, 엑셀·R·파이썬으로 그리는 법까지 한 번 알아보았습니다. 데이터 분석 입문자 가이드.

1. 산점도(Scatter Plot)란 무엇인가?

두 변수의 관계를 나타낸 기본 통계 산점도 예시 그래프

1-1. 산점도의 기본 개념

산점도는 두 개의 수치형 변수(연속형 변수)의 값을 좌표계 위에 점으로 찍어 나타낸 그래프입니다.

  • x축: 독립 변수(원인, 설명 변수 등)
  • y축: 종속 변수(결과, 반응 변수 등)
  • 각 점: 한 개체(사람, 제품, 실험 단위 등)의 (x값, y값) 쌍

예를 들어,

  • 공부 시간(x)과 시험 점수(y)
  • 광고비(x)와 매출액(y)
  • 나이(x)와 수면시간(y)

과 같은 데이터를 산점도로 그리면, 두 변수 사이에 어떤 패턴이나 관계가 있는지 직관적으로 볼 수 있습니다.


1-2. 산점도가 중요한 이유

산점도는 통계 분석에서 거의 항상 등장하는 기본 도구입니다. 이유는 간단합니다.

  1. 관계의 방향을 보여줍니다.
    • x가 커질수록 y도 함께 커지는지(양의 관계)
    • x가 커질수록 y는 줄어드는지(음의 관계)
    • 전혀 일정한 패턴이 없는지(무관계)
  2. 관계의 형태를 알려줍니다.
    • 직선형(선형 관계)인지
    • 곡선형(비선형 관계)인지
    • 혹은 전혀 관계가 없는지
  3. **이상치(outlier)**를 찾게 해줍니다.
    • 다른 점들과 동떨어져 있는 특이한 점들을 발견하고,
    • 데이터 오류인지, 정말 의미 있는 특이 케이스인지 판단할 수 있습니다.

2. 산점도에서 읽어야 할 핵심 요소 5가지

산점도를 해석할 때는 단순히 “올라간다/내려간다”만 보지 말고, 다음 다섯 가지를 함께 보는 것이 좋습니다.

2-1. 관계의 방향: 양의 상관 vs 음의 상관 vs 무상관

양의 상관, 음의 상관, 상관 없는 산점도 비교

  1. 양의 상관(positive association)
    • x가 증가하면 y도 증가하는 경향
    • 점들이 왼쪽 아래에서 오른쪽 위로 올라가는 패턴
    • 예: 공부 시간이 길수록 시험 점수가 올라가는 경우
  2. 음의 상관(negative association)
    • x가 증가하면 y는 감소하는 경향
    • 점들이 왼쪽 위에서 오른쪽 아래로 내려가는 패턴
    • 예: 운동량이 많을수록 체지방률이 줄어드는 경우
  3. 거의 상관 없음(no association)
    • 점들이 흩어져서 아무런 패턴이 보이지 않음
    • 예: 신발 사이즈와 영어 시험 점수처럼 관련이 없는 변수들

2-2. 관계의 강도: 얼마나 일관된 패턴인가?

  • 점들이 일직선에 매우 가깝게 모여 있다면 → 강한 상관
  • 점들이 대충 대각선 방향이긴 하지만 퍼져 있다면 → 중간 정도 상관
  • 점들이 넓게 퍼져 있고 방향이 모호하면 → 약한 상관

상관의 강도는 나중에 **상관계수(correlation coefficient)**라는 숫자로도 표현합니다(예: 피어슨 상관계수 r).

  • r이 1에 가까울수록 → 강한 양의 선형 관계
  • r이 -1에 가까울수록 → 강한 음의 선형 관계
  • r이 0에 가까울수록 → 선형 관계가 거의 없다는 뜻

⚠️ 주의: 상관계수는 “직선형(선형) 관계”의 강도만 보여줍니다. 곡선형 관계는 산점도로 직접 확인해야 합니다.


2-3. 관계의 형태: 직선 vs 곡선

산점도는 단순히 직선형 관계만 보여주는 도구가 아닙니다.

  • 점들이 대각선 직선을 따라가면 → 선형 관계
  • 점들이 U자, 역U자, S자 모양을 그리면 → 비선형(곡선형) 관계
  • 회귀 분석을 할 때, 산점도를 먼저 보고
    • 단순 선형 회귀를 쓸지
    • 다항 회귀나 다른 비선형 모델을 쓸지
      를 결정하는 데 큰 도움이 됩니다.

2-4. 분포의 패턴: 클러스터, 범위, 밀도

산점도를 확대해서 보면, 점들이 **여러 덩어리(cluster)**로 모여 있는 경우도 있습니다.

  • 서로 다른 그룹(예: 남/녀, 제품 라인 A/B 등)이 섞인 데이터일 수 있음
  • 클러스터마다 따로 분석해야 더 정확한 결과를 얻을 수 있습니다.

또한,

  • x축과 y축 각각에서 값이 어느 범위에 분포하는지
  • 어느 구간에 점이 많이 모여 있는지(밀도)
    를 보는 것도 중요합니다.

2-5. 이상치(outlier) 탐지

산점도의 가장 큰 장점 중 하나는 이상치 탐지입니다.

  • 다른 점들과 멀리 떨어진 점 → 이상치 가능성이 높음
  • 이상치는
    • 단순 데이터 입력 오류일 수도 있고,
    • 정말 중요한 “특이 현상”일 수도 있습니다.

예:

  • 광고비는 거의 100~500만 원 사이인데, 매출이 갑자기 10억으로 찍힌 점이 하나 있다면?
    • 데이터 입력 실수인지 확인
    • 혹은 특정 이벤트/프로모션의 영향인지 분석 포인트가 됩니다.

3. 산점도와 상관관계, 그리고 인과관계의 오해

3-1. 상관관계(correlation)와 인과관계(causation)는 다르다

산점도를 보면 두 변수 사이에 분명한 패턴이 보일 수 있습니다.
하지만 **“함께 움직인다” = “원인과 결과”**는 아닙니다.

  • 예: 아이스크림 매출과 익사 사고 수는 같이 증가하는 경향이 있을 수 있습니다(여름철).
    → 둘 사이에 양의 상관은 있지만,
    → 아이스크림이 익사 사고를 “유발”했다고 말할 수는 없습니다.
    → 둘 다 “기온 상승”이라는 제3의 변수(교란 변수)에 영향을 받는 것입니다.

산점도는 **관계가 있는지 탐색(exploratory)**하는 도구이지,
인과관계를 증명하는 도구는 아닙니다.


3-2. 산점도 + 상관계수 + 회귀선

산점도 분석은 보통 다음 세 가지가 패키지처럼 같이 쓰입니다.

  1. 산점도: 데이터 모양과 패턴을 직관적으로 확인
  2. 상관계수: 관계의 방향과 강도를 수치로 확인
  3. 회귀선(regression line): 두 변수 사이의 평균적인 관계를 선형 모델로 표현

산점도 위에 회귀선을 그려보면,

  • 전체적인 증가/감소 추세
  • 예측값과 실제값의 차이(잔차)
    를 동시에 시각적으로 볼 수 있어서 분석에 큰 도움이 됩니다.

4. 엑셀(Excel)에서 산점도 그리는 방법

엑셀에서 데이터로 산점도 차트를 생성하는 과정 화면

엑셀은 실무에서 가장 자주 사용되는 도구이기도 하죠.
간단한 예를 들어 볼게요.

4-1. 데이터 준비

예를 들어,

A열(공부 시간)B열(시험 점수)
1.5 65
2.0 70
3.0 78
4.5 88
5.0 90

이런 식으로 x축 변수와 y축 변수를 열 단위로 정리해 둡니다.


4-2. 산점도 삽입 절차 (Excel 기준)

  1. 데이터 범위 선택 (예: A1:B6 전체 선택)
  2. 상단 메뉴에서 [삽입] → [차트] → [산점형(Scatter)] 선택
  3. 산점도 유형 중 기본 산점도 선택

그러면 각 (x, y) 값이 점으로 찍힌 그래프가 생성됩니다.


4-3. 회귀선(추세선) 추가하기

  1. 산점도에서 아무 점이나 클릭
  2. 마우스 오른쪽 클릭 → “추세선 추가” 선택
  3. 선형(Linear) 선택
  4. 필요하다면
    • “차트에 수식 표시”
    • “차트에 R² 값 표시”
      등을 체크해서 회귀식과 설명력을 같이 확인할 수 있습니다.

SMALL

5. 파이썬(Python)에서 산점도 그리기 (Matplotlib / Seaborn)

데이터 분석에서 파이썬을 많이 쓰는 분들을 위해 기본 예제를 정리해볼게요.

5-1. Matplotlib 예제

 
import matplotlib.pyplot as plt # 예시 데이터 study_time = [1.5, 2.0, 3.0, 4.5, 5.0] score = [65, 70, 78, 88, 90] plt.scatter(study_time, score) plt.title("공부 시간과 시험 점수의 관계") plt.xlabel("공부 시간(시간)") plt.ylabel("시험 점수") plt.grid(True) plt.show()
  • plt.scatter(x, y) : 기본 산점도 함수
  • grid(True) : 그리드를 추가해서 읽기 쉽게 만듦

5-2. Seaborn으로 더 예쁘게 그리기

파이썬 Seaborn으로 그린 산점도와 예제 코드

 
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd data = pd.DataFrame({ "study_time": [1.5, 2.0, 3.0, 4.5, 5.0], "score": [65, 70, 78, 88, 90] }) sns.scatterplot(data=data, x="study_time", y="score") plt.title("공부 시간과 시험 점수의 관계") plt.show()
  • 범주형 변수를 색상으로 나누고 싶다면 hue 인자를 추가할 수 있습니다.
  •  
    sns.scatterplot(data=data, x="study_time", y="score", hue="gender")

5-3. 회귀선(회귀 직선)까지 같이 그리기 – regplot

 
sns.regplot(data=data, x="study_time", y="score") plt.title("공부 시간과 시험 점수의 관계 (회귀선 포함)") plt.show()
  • regplot은 산점도 + 회귀선을 한 번에 그려줍니다.
  • 데이터 개수가 많을 때는 산점도 대신 jointplot, lmplot 등 다양한 시각화도 활용 가능합니다.

6. R에서 산점도 그리기 (기본 plot / ggplot2)

R에서도 아주 간단히 산점도를 그릴 수 있습니다.

6-1. 기본 plot 함수

 
x <- c(1.5, 2.0, 3.0, 4.5, 5.0) y <- c(65, 70, 78, 88, 90) plot(x, y, main = "공부 시간과 시험 점수의 관계", xlab = "공부 시간(시간)", ylab = "시험 점수", pch = 19, col = "blue")

6-2. ggplot2 활용 예제

 
library(ggplot2) data <- data.frame( study_time = c(1.5, 2.0, 3.0, 4.5, 5.0), score = c(65, 70, 78, 88, 90) ) ggplot(data, aes(x = study_time, y = score)) + geom_point(color = "blue") + ggtitle("공부 시간과 시험 점수의 관계") + xlab("공부 시간(시간)") + ylab("시험 점수")

6-3. ggplot2로 회귀선 추가하기

 
ggplot(data, aes(x = study_time, y = score)) + geom_point(color = "blue") + geom_smooth(method = "lm", se = TRUE, color = "red") + ggtitle("공부 시간과 시험 점수 (회귀선 포함)")
  • geom_smooth(method = "lm")가 선형 회귀선을 추가
  • se = TRUE는 회귀선 주변에 신뢰구간을 그려줍니다.

7. 산점도 해석 시 주의사항과 실무 팁

7-1. 스케일(단위)과 축 범위에 속지 말 것

축 범위를 어떻게 설정하느냐에 따라 산점도의 느낌이 크게 달라집니다.

  • 축 범위가 너무 넓으면 → 관계가 약해 보임
  • 축 범위가 너무 좁으면 → 관계가 과장되어 보임

그래서 실무에서는

  1. 기본 자동 축을 한 번 보고
  2. 필요하면 x축, y축 범위를 직접 지정해서
  3. 여러 버전의 산점도를 비교해 보는 것이 좋습니다.

7-2. 데이터 수가 너무 많을 때: 점 겹침(overplotting)

데이터가 수천, 수만 개 이상일 때는 산점도 점들이 한 곳에 겹쳐서 제대로 보이지 않을 수 있습니다.

이때는

  • 점의 투명도(alpha) 조절
  • 점 크기 줄이기
  • 2D 히스토그램, hexbin plot, 밀도 그래프와 병행
  • 샘플링해서 일부만 그리기

와 같은 방식으로 시각화 품질을 높일 수 있습니다.


7-3. 범주형 변수와 함께 사용하기

산점도는 본질적으로 수치형 vs 수치형 변수에 적합한 그래프이지만, 범주형 변수를 색깔이나 모양으로 표현할 수 있습니다.

예:

  • 남/녀에 따라 색을 다르게
  • 제품군 A/B/C에 따라 모양(pch, marker)을 다르게

이렇게 하면 “동일한 x–y 관계”도 그룹별로 패턴이 다른지 한 번에 볼 수 있습니다.


7-4. 산점도 + 요약 통계 함께 보자

산점도 하나만 보고 결론 내리기보다는, 다음과 함께 보는 것이 좋습니다.

  • 각 변수의 평균, 표준편차
  • 상관계수(r)
  • 단순 선형 회귀 결과 (기울기, 절편, p-value 등)

시각적 직관 + 수치적 검증을 함께 사용하면 훨씬 더 믿을 수 있는 결론을 얻을 수 있습니다.


8. 산점도의 실전 활용 예시

8-1. 마케팅 분석

  • 광고 집행 금액 vs 당일/일평균 매출
  • 캠페인 도달 수 vs 전환 수
  • 고객 방문 횟수 vs 구매 금액

산점도로 그려보면,

  • 광고비가 일정 수준 이상일 때부터 효율이 떨어지는지
  • 특정 채널에서만 이상하게 패턴이 다른지
    등을 쉽게 파악할 수 있습니다.

8-2. 품질 관리(QC)

  • 생산 라인 온도 vs 불량률
  • 작업자 숙련도 점수 vs 작업 시간
  • 기계 가동 시간 vs 고장 빈도

산점도를 통해 어떤 요인이 품질에 영향을 많이 주는지를 시각적으로 후보군으로 뽑은 뒤,
추가 통계 분석(회귀 분석, 실험 설계 등)을 진행할 수 있습니다.


8-3. 교육/학습 데이터 분석

  • 과제 제출 횟수 vs 기말고사 성적
  • 출석률 vs 평균 점수
  • 자기주도 학습 시간 vs 학업 성취도

교육 데이터에서 산점도는 학생들의 학습 패턴을 이해하는 데 매우 유용한 도구입니다.


9. 결론: 산점도는 “모든 데이터 분석의 출발점”

정리하면, **산점도(Scatter Plot)**는

  • 두 수치형 변수 사이의 관계를
  • 방향, 강도, 형태, 이상치까지
    한 번에 보여주는 기본이자 필수 도구입니다.

데이터 분석을 할 때,

  1. 숫자만 잔뜩 보기 전에
  2. 복잡한 모델을 돌리기 전에
  3. 무조건 먼저 산점도부터 그려보는 습관을 들이면,

실수도 줄고, 인사이트도 훨씬 빨리 얻을 수 있습니다.


10. 자주 묻는 질문(FAQ)

Q1. 산점도는 언제 쓰고, 언제 쓰지 말아야 하나요?

  • 쓸 때: 두 변수 모두 **수치형(연속형)**이고, 관계를 탐색하고 싶을 때
  • 주의할 때: 한쪽이 명목형(예: 남/녀, 지역 등)인 경우에는 산점도보다는 박스플롯(box plot)이나 막대그래프가 더 적합할 수 있습니다.

Q2. 산점도만 보고 상관계수를 알 수 있나요?

정확한 숫자는 직접 계산해야 합니다.
하지만 산점도를 보면

  • 패턴이 직선에 가깝고 점들이 조밀하면 → |r|이 클 가능성이 높고
  • 패턴이 거의 없고 점들이 넓게 퍼져 있으면 → |r|이 작을 가능성이 높습니다.

Q3. 산점도에서 이상치가 보이면 무조건 제거해야 하나요?

무조건 제거하면 안 됩니다.

  1. 데이터 오류인지 먼저 확인 (입력 실수, 측정 오류 등)
  2. 오류라면 제거 또는 수정
  3. 오류가 아니라면
    • 분석 목적에 따라 포함/제외를 결정하고
    • 보고서에는 이상치 처리 방법을 반드시 명시하는 것이 좋습니다.

Q4. 변수가 많으면 산점도를 어떻게 사용하나요?

변수가 2개가 아니라 5개, 10개 이상이 되면 **산점도 행렬(scatter plot matrix)**을 사용할 수 있습니다.

  • R의 pairs(), Python의 seaborn.pairplot 등
  • 여러 변수 쌍에 대한 산점도를 한 번에 그려서
  • 어떤 변수끼리 관계가 강한지 빠르게 훑어볼 수 있습니다.

Q5. 상관계수가 0이면 두 변수는 완전히 무관한가요?

반드시 그렇지는 않습니다.

  • 비선형 관계(예: U자 형태)를 가지면, 상관계수는 0에 가깝지만 실제로는 강한 관계가 있을 수 있습니다.
  • 그래서 상관계수만 믿지 말고, 항상 산점도도 함께 보는 것이 중요합니다.
반응형