기초적인 통계 개념

2026. 6. 17. 11:39·TIL/기초 통계

데이터 분석을 위한 기초 통계 정리

- 제조·공정 데이터 분석 관점에서 이해하는 기초 통계 -

글의 목적
 이 글은 데이터 분석을 시작할 때 반드시 알아야 할 기초 통계 개념을 제조·공정 데이터 관점에서 정리한 글이다. 평균, 분산, 표준편차, IQR, 왜도, 첨도 같은 개념을 공식 암기보다 데이터 해석 관점에서 이해하는 데 초점을 둔다.
목차
  • 0. 데이터 분석과 통계
    • 데이터의 상태 파악
    • 샘플을 통한 예측과 검정
  • 1. 데이터의 종류
  • 2. 도수분포표와 히스토그램
  • 3. 대표값: 평균, 중앙값, 최빈값
  • 4. 산포도: 편차, 분산, 표준편차, 변동계수
  • 5. 사분위수, IQR, Boxplot
  • 6. 왜도와 첨도
  • 7. 정규분포
  • 8. 복습 퀴즈
  • 마무리

0. 데이터 분석과 통계

 데이터 분석에서 통계는 단순히 평균이나 그래프를 계산하는 도구가 아니다. 데이터 속에 존재하는 불확실성, 무작위성, 변동성을 수치로 정리하고, 그 안에서 반복되는 패턴을 찾아 의사결정에 활용하는 방법이다.

 데이터는 겉으로 보기에는 숫자의 집합처럼 보이지만, 실제로는 생산 조건, 설비 상태, 작업 환경, 원재료 특성, 시간 변화 등 다양한 요인의 영향을 받은 결과다. 따라서 데이터를 제대로 해석하려면 단순히 숫자를 보는 것이 아니라, 그 숫자가 어떤 분포를 가지는지, 평균 주변에서 얼마나 퍼져 있는지, 특정 값이 우연인지 의미 있는 변화인지 판단해야 한다.

 통계는 이러한 판단을 가능하게 한다. 즉, 통계는 데이터 속 패턴을 객관적인 수치로 드러내어 복잡한 상황에서도 핵심을 판단할 수 있게 해준다.

 

통계가 필요한 이유

제조 현장에서는 매일 수많은 데이터가 발생한다.

예를 들어 다음과 같은 데이터가 있다.

  • 생산량
  • 불량률
  • 설비 온도
  • 압력
  • 공정 시간
  • 제품 치수
  • 센서 측정값
  • 검사 결과
  • 작업자 또는 교대조 정보

 이 데이터들을 단순히 눈으로만 확인하면 실제 원인을 오해할 수 있다. 특정 라인에서 불량이 자주 발생한다고 느껴도, 실제 데이터를 분석해보면 전체 평균과 큰 차이가 없을 수 있다. 반대로 겉보기에는 문제가 없어 보이는 공정이 장기적으로는 품질 변동이 커지는 신호를 보일 수도 있다. 따라서 데이터 분석에서는 감이나 경험에만 의존하지 않고, 통계적 기준을 통해 데이터를 해석해야 한다.

 

감 vs 데이터 : 불량률 예측 사례

특정 생산 라인에서 불량이 많이 발생한다고 느껴지는 상황을 가정해보자.

감에 의존한 판단

“요즘 B라인에서 불량이 자주 나오는 것 같다. 작업자 숙련도가 문제인가? 아니면 단순히 기분 탓인가?”

 이러한 판단은 빠르게 문제를 제기할 수 있다는 장점이 있지만, 객관적인 근거가 부족하다. 일부 불량 사례만 보고 전체 경향을 오해할 수도 있고, 실제 원인이 아닌 요소에 집중할 위험도 있다.

데이터 기반 통계 분석

 B라인의 최근 3개월치 불량 데이터를 수집하고, A라인과 C라인의 불량률과 비교한다.

 분석할 수 있는 항목은 다음과 같다.

  • 라인별 평균 불량률
  • 라인별 불량률 표준편차
  • 시간대별 불량률 변화
  • 특정 장비 사용 시 불량률 변화
  • 원재료 Lot별 불량률 차이
  • 교대조별 불량률 차이

 분석 결과, 실제로는 B라인의 전체 불량률이 다른 라인과 큰 차이가 없을 수 있다. 또는 특정 시간대에만 일시적으로 불량이 증가했을 수도 있다. 더 나아가 불량의 원인이 작업자 숙련도가 아니라 특정 장비의 노후화, 센서 이상, 원재료 품질 차이와 관련되어 있음을 확인할 수도 있다. 이처럼 통계는 단순한 추측을 수치 기반 판단으로 바꾸는 역할을 한다.

 

제조업에서 통계가 활용되는 방식

 제조 데이터 분석에서 통계는 크게 두 가지 방향으로 활용된다.

  1. 현재 데이터의 상태를 파악하는 데 사용된다.
  2. 샘플 데이터를 기반으로 전체 공정이나 미래 결과를 예측하는 데 사용된다.
 

데이터의 상태 파악

 데이터의 상태 파악은 현재 공정이 어떤 상태인지 정리하는 단계다. 평균, 중앙값, 표준편차, 히스토그램, 박스플롯 등을 활용하여 데이터의 중심, 퍼짐, 이상치, 분포 형태를 확인한다.

질문 적용 분야 통계 활용
오전조와 오후조의
생산성 차이는 어느 정도?
화학 공정 생산량 분석 - 교대조별 시간당 평균 생산량과 중앙값을 비교, 히스토그램으로 생산량 분포 확인
- 오후조의 평균 생산량이 높더라도 분포가 넓다면 생산 안정성은 낮을 수 있음
지난 3개월 동안 품질 편차가
가장 심했던 공정은 어디?
신소재 압연 공정 - 각 압연 라인별 제품 두께의 표준편차를 월별로 비교
- 표준편차가 큰 라인은 품질 편차가 크므로 집중 관리 대상
자동차 부품의 특정 치수가 규격에서 벗어나는 빈도는 어느 정도? 자동차 엔진 부품 가공 - 실린더 보어 직경 등의 치수 데이터를 수집하고 히스토그램을 그림
- 규격 상한선과 하한선을 함께 표시하여 불량 비율을 확인
- Cp, Cpk와 같은 공정능력지수를 계산
 상태 파악 단계에서는 아직 원인을 단정하지 않는다. 먼저 데이터가 어떻게 분포되어 있는지, 평균적인 수준은 어떤지, 변동성이 큰지, 이상치가 존재하는지를 확인한다.
 

샘플을 통한 예측과 검정

 제조 현장에서는 전체 제품을 모두 검사하기 어렵거나, 모든 공정 조건을 무한히 실험할 수 없는 경우가 많다. 이때 일부 샘플 데이터를 이용해 전체 공정의 특성을 추정하거나, 조건 변경의 효과를 검정한다.

질문 적용 분야 통계 활용
웨이퍼 식각 공정 조건 변경 후
후속 공정 불량률이 개선되었는가?
반도체 웨이퍼
제조
- 조건 변경 전후의 불량률을 비교
- 성공/실패 형태(0 or 1)의 비율 데이터라면 비율 검정, 카이제곱 검정 사용 가능
- 측정값의 평균 차이를 비교하는 경우에는 t-검정을 사용 가능
특정 공정 변수인 온도와 압력이
제품 품질에 어떤 영향을 미치는가?
자동차 도장 공정 - 도장 온도, 압력, 도막 두께 데이터를 수집하고 회귀분석을 수행
  ex) 온도 10℃ 증가 시 도막 두께 평균 0.5μm 증가하는 관계를 도출 가능
새로운 신소재의 강도가
기존 소재보다 정말 강한가?
신소재 개발
및 성능 평가
- 기존 소재와 신소재의 인장강도 데이터를 비교
- 두 그룹이면 t-검정, 세 그룹 이상이면 ANOVA 활용
   (평균 차이의 통계적으로 유의성 확인)
중요한 점은 샘플에서 관찰된 차이가 실제 차이인지, 아니면 우연히 발생한 차이인지 구분하는 것이다. 통계적 검정은 이 판단을 돕는다.
 

1. 데이터의 종류

 데이터 분석을 시작할 때 가장 먼저 확인해야 할 것은 데이터의 종류다. 데이터의 종류에 따라 사용할 수 있는 통계량, 시각화 방법, 분석 기법이 달라지기 때문이다. 데이터는 크게 수치형 데이터와 범주형 데이터로 나눌 수 있다.

수치형 데이터

 수치형 데이터는 숫자로 표현되며, 사칙연산이 의미를 가지는 데이터다. 수치형 데이터는 다시 연속형 데이터와 이산형 데이터로 나뉜다.

연속형 데이터

 연속형 데이터는 특정 범위 안에서 이론적으로 무한히 많은 값을 가질 수 있는 데이터다. 예시는 다음과 같다.

  • 키
  • 몸무게
  • 온도
  • 압력
  • 제품 두께
  • 반응 시간
  • 전력 소모량

 제조 데이터에서는 센서 측정값이나 치수 측정값이 대부분 연속형 데이터에 해당한다.

이산형 데이터

 이산형 데이터는 셀 수 있는 개수 형태의 데이터다. 보통 정수값으로 표현된다. 예시는 다음과 같다.

  • 불량품 개수
  • 생산된 제품 수
  • 설비 정지 횟수
  • 클레임 발생 건수
  • 결함 개수

 이산형 데이터는 개수를 세는 데이터이므로 1.5개, 2.3회와 같은 값은 일반적으로 의미를 가지지 않는다.

 

범주형 데이터

 범주형 데이터는 값을 숫자로 표현할 수 있더라도, 그 숫자가 계산의 의미를 가지지 않는 데이터다. 범주형 데이터는 명목형 데이터와 순서형 데이터로 나뉜다.

명목형 데이터

 명목형 데이터는 범주 사이에 순서가 없는 데이터다. 예시는 다음과 같다.

  • 성별
  • 설비 ID
  • 제품 종류
  • 센서 위치
  • 공정 라인명
  • 원재료 Lot 번호
  • 우편번호

예를 들어 설비 ID가 1, 2, 3으로 기록되어 있더라도 3번 설비가 1번 설비보다 크다는 의미는 없다. 단지 설비를 구분하기 위한 이름일 뿐이다.

순서형 데이터

순서형 데이터는 범주 사이에 순서가 존재하는 데이터다. 다만 각 범주 사이의 간격이 동일하다고 보장되지는 않는다. 예시는 다음과 같다.

  • 품질 등급 A/B/C
  • 위험 등급 High/Mid/Low
  • 고객 만족도 1점~5점
  • 학점 A/B/C/D/F
  • 우선순위 1순위, 2순위, 3순위

순서형 데이터는 크고 작음의 순서는 있지만, A등급과 B등급의 차이가 B등급과 C등급의 차이와 동일하다고 단정할 수 없다.

 

데이터 종류 정리

대분류 소분류 의미 예시
수치형 연속형 연속적인 값을 가지는 데이터 키, 몸무게, 온도, 압력, 제품 두께
이산형 셀 수 있는 개수 데이터 불량품 개수, 생산 수량, 설비 정지 횟수
범주형 명목형 순서가 없는 범주 데이터 성별, 설비 ID, 부품 종류, 센서 위치
순서형 순서가 있는 범주 데이터 품질 등급, 위험 등급, 만족도, 순위

 데이터 종류를 잘못 이해하면 분석 방법도 잘못 선택될 수 있다. 예를 들어 설비 ID를 숫자로 기록했다고 해서 평균을 계산하는 것은 의미가 없다. 반대로 제품 두께처럼 연속적인 측정값은 평균, 표준편차, 히스토그램, 관리도 분석 등에 활용할 수 있다.

 

2. 도수분포표와 히스토그램

도수분포표와 히스토그램은 데이터의 분포를 이해하기 위한 가장 기본적인 도구다.

원자료만 보면 데이터가 어떤 형태로 퍼져 있는지 파악하기 어렵다. 하지만 데이터를 일정한 구간으로 나누고, 각 구간에 몇 개의 값이 포함되는지 세면 전체적인 분포 형태를 쉽게 확인할 수 있다.

주요 개념

용어 의미
도수 각 구간에 포함되는 데이터의 개수
상대도수 전체 데이터 중 해당 구간이 차지하는 비율
누적도수 특정 구간까지 도수를 누적한 값
계급 데이터를 나눈 일정한 구간
계급값 각 계급을 대표하는 값으로, 보통 구간의 중앙값을 사용
 

도수분포표 작성 과정

도수분포표는 다음 순서로 작성한다.

1단계 : 자료의 개수를 센다

전체 데이터가 몇 개인지 확인한다. 자료 개수는 상대도수나 누적도수를 계산할 때 필요하다.

2단계 : 최대값과 최소값을 찾는다

데이터의 범위를 확인한다.

예를 들어 키 데이터에서 최소값이 143cm, 최대값이 169cm라면 전체 범위는 다음과 같다.

169 - 143 = 26

3단계 : 구간의 개수를 결정한다

 구간의 개수는 데이터 개수와 분포에 따라 달라진다. 일반적으로 5~15개 정도의 구간을 사용한다.

 구간이 너무 적으면 분포의 세부 형태가 사라진다. 반대로 구간이 너무 많으면 각 구간의 도수가 너무 작아져 전체 경향을 보기 어렵다.

4단계 : 구간의 폭을 정한다

 구간폭은 다음과 같이 계산할 수 있다.

구간폭 = (최대값 - 최소값) / 구간 수

 다만 실제 분석에서는 해석하기 쉬운 값으로 조정한다. 예를 들어 계산 결과가 4.33이라면 구간폭을 5로 정하면 더 직관적이다.

5단계 : 구간 경계값을 정한다

 구간이 겹치거나 빠지는 값이 없도록 경계값을 정한다. 예를 들어 141~145, 146~150처럼 구간을 나누면 각 값이 하나의 구간에만 포함된다.

6단계 : 구간별 도수를 계산한다

 각 구간에 몇 개의 데이터가 포함되는지 세고, 상대도수와 누적도수를 계산한다.

 

예제 : 학생 80명의 키 데이터

data = [
    151, 154, 160, 160, 163, 156, 158, 156, 154, 160,
    154, 162, 156, 162, 157, 162, 162, 169, 150, 162,
    154, 152, 161, 160, 160, 153, 155, 163, 160, 159,
    164, 158, 150, 155, 157, 161, 168, 162, 153, 154,
    158, 151, 155, 155, 165, 165, 154, 148, 169, 158,
    146, 166, 161, 143, 156, 156, 149, 162, 159, 164,
    162, 167, 159, 153, 146, 156, 160, 151, 151, 157,
    151, 156, 166, 159, 157, 156, 159, 156, 156, 161
]

학생 키 도수분포표

계급 계급값 도수 상대도수 누적도수
141 ~ 145 143 1 0.0125 1
146 ~ 150 148 6 0.0750 7
151 ~ 155 153 19 0.2375 26
156 ~ 160 158 30 0.3750 56
161 ~ 165 163 18 0.2250 74
166 ~ 170 168 6 0.0750 80
합계   80 1.0000  

이 표를 보면 학생들의 키는 156~160cm 구간에 가장 많이 분포한다. 즉, 이 데이터의 중심은 대략 156~160cm 부근에 있다고 볼 수 있다.

 

히스토그램 시각화 코드

import pandas as pd
import matplotlib.pyplot as plt

data = [
    151, 154, 160, 160, 163, 156, 158, 156, 154, 160,
    154, 162, 156, 162, 157, 162, 162, 169, 150, 162,
    154, 152, 161, 160, 160, 153, 155, 163, 160, 159,
    164, 158, 150, 155, 157, 161, 168, 162, 153, 154,
    158, 151, 155, 155, 165, 165, 154, 148, 169, 158,
    146, 166, 161, 143, 156, 156, 149, 162, 159, 164,
    162, 167, 159, 153, 146, 156, 160, 151, 151, 157,
    151, 156, 166, 159, 157, 156, 159, 156, 156, 161
]

s = pd.Series(data)

plt.figure(figsize=(8, 5))
plt.hist(s, bins=6, edgecolor="black")

plt.title("Height Distribution Histogram")
plt.xlabel("Height (cm)")
plt.ylabel("Frequency")
plt.grid(True, alpha=0.3)
plt.show()

 히스토그램은 연속형 데이터를 구간으로 나누어 각 구간의 빈도를 막대로 표현한다. 막대그래프와 비슷해 보이지만, 히스토그램은 연속적인 수치 구간을 다룬다는 점에서 범주형 데이터를 표현하는 막대그래프와 다르다.

 

3. 대표값: 평균, 중앙값, 최빈값

 대표값은 데이터 전체를 하나의 값으로 요약하는 통계량이다. 대표값에는 평균, 중앙값, 최빈값이 있다.

하지만 대표값 하나만으로 데이터를 완전히 이해할 수는 없다. 특히 평균은 이상치에 큰 영향을 받기 때문에 주의해서 해석해야 한다.

 

평균의 함정

 평균은 가장 자주 사용되는 대표값이지만, 항상 데이터의 전형적인 값을 잘 나타내지는 않는다.

 대표적인 사례로 마이클 조던으로 인한 노스캐롤라이나 대학교 문화지리학과 평균 연봉의 오류가 발생한 적이 있다. 해당 학과 졸업생 대부분의 초봉이 비슷한 수준인데, 한 명이 매우 높은 연봉을 받는다면 전체 평균은 크게 올라간다. 이때 평균만 보면 해당 학과 전체 졸업생의 초봉이 높다고 오해할 수 있다.

 이처럼 극단적으로 큰 값 또는 작은 값을 이상치(outlier)라고 한다. 평균은 이상치에 민감하기 때문에, 데이터에 이상치가 존재하는 경우 중앙값을 함께 확인해야 한다.

 

평균, 중앙값, 최빈값의 사용 상황

통계 지표 적절한 상황
평균 값들이 비교적 고르게 분포하고 이상치가 크지 않을 때
중앙값 이상치가 있거나 분포가 한쪽으로 치우쳐 있을 때
최빈값 범주형 데이터 또는 가장 자주 등장하는 값을 알고 싶을 때
 

평균

평균은 모든 값을 더한 뒤 데이터 개수로 나눈 값이다.

평균 = 전체 합 / 데이터 개수

평균은 데이터 전체를 반영한다는 장점이 있지만, 이상치의 영향을 크게 받는다.

import numpy as np

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

mean_value = np.mean(data)
print(f"Mean: {mean_value}")

출력 결과는 다음과 같다.

Mean: 5.0
 

중앙값

 중앙값은 데이터를 오름차순으로 정렬했을 때 가운데에 위치한 값이다. 데이터의 50%는 중앙값보다 작거나 같고, 나머지 50%는 중앙값보다 크거나 같다.

 중앙값은 이상치의 영향을 거의 받지 않는다. 따라서 소득, 부동산 가격, 공정 소요시간처럼 한쪽으로 치우친 데이터에서는 평균보다 중앙값이 더 적절할 수 있다.

import numpy as np

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

median_value = np.median(data)
print(f"Median: {median_value}")

출력 결과는 다음과 같다.

Median: 5.0
 

최빈값

 최빈값은 데이터에서 가장 자주 등장하는 값이다. 하나만 존재할 수도 있고, 두 개 이상 존재할 수도 있다.

최빈값은 특히 범주형 데이터에서 유용하다. 예를 들어 제품 불량 유형 데이터가 다음과 같다고 하자.

스크래치, 오염, 스크래치, 치수불량, 스크래치, 오염

이 경우 최빈값은 스크래치다. 즉, 가장 자주 발생하는 불량 유형은 스크래치라고 해석할 수 있다.

from scipy import stats

data = [1, 2, 2, 3, 4, 5]

mode_value = stats.mode(data, keepdims=False)

print(f"Mode: {mode_value.mode}")
 

pandas 데이터프레임에서 대표값 계산

import pandas as pd

df = pd.DataFrame({
    "test": [0, 1, 2, 3, 4, 5, 5, 5, 6, 7, 8]
})

print(df["test"].mean())
print(df["test"].median())
print(df["test"].mode())

 데이터 분석에서는 평균만 확인하지 말고, 중앙값과 최빈값을 함께 확인하는 것이 좋다. 특히 제조 데이터에서는 특정 설비 이상, 센서 오류, 비정상 Lot 등으로 인해 이상치가 발생할 수 있으므로 평균만으로 공정 상태를 판단하면 위험하다.

 

4. 산포도: 편차, 분산, 표준편차, 변동계수

 대표값은 데이터의 중심을 알려준다. 하지만 데이터의 중심만으로는 충분하지 않다.

 예를 들어 두 공정의 평균 두께가 모두 10mm라고 해도, 한 공정은 9.9~10.1mm 사이에 안정적으로 분포하고, 다른 공정은 8~12mm 사이에 넓게 퍼져 있을 수 있다. 두 공정의 평균은 같지만 품질 안정성은 전혀 다르다. 이 차이를 설명하기 위해 필요한 개념이 산포도다.

산포도는 데이터가 얼마나 퍼져 있는지를 나타낸다.

 

편차, 분산, 표준편차, 변동계수

개념 정의 특징
편차 개별 값이 평균에서 얼마나 떨어져 있는지 나타낸 값 각 데이터의 위치를 평균 기준으로 표현한다.
분산 편차를 제곱한 뒤 평균낸 값 데이터의 전체적인 퍼짐 정도를 나타낸다.
표준편차 분산의 제곱근 원래 데이터와 같은 단위를 가지므로 해석이 쉽다.
변동계수 표준편차를 평균으로 나눈 값 단위나 평균 수준이 다른 데이터의 변동성을 비교할 때 사용한다.
 

편차

 편차는 개별 데이터 값에서 평균을 뺀 값이다.

편차 = 개별 값 - 평균

 수식으로 표현하면 다음과 같다.

dᵢ = xᵢ - x̄

 편차가 양수이면 평균보다 큰 값이고, 음수이면 평균보다 작은 값이다.

 

분산

 분산은 편차를 제곱한 뒤 평균을 낸 값이다.

분산 = 편차 제곱의 평균

 모분산은 다음과 같이 계산한다.

σ² = Σ(xᵢ - μ)² / n

 표본분산은 다음과 같이 계산한다.

s² = Σ(xᵢ - x̄)² / (n - 1)

 실무 데이터 분석에서는 전체 모집단이 아니라 일부 샘플을 다루는 경우가 많기 때문에, 표본분산을 사용하는 경우가 많다.

 

표준편차

 표준편차는 분산에 제곱근을 씌운 값이다.

표준편차 = √분산

 표준편차는 원래 데이터와 같은 단위를 가지므로 해석이 쉽다. 예를 들어 제품 두께의 단위가 mm라면 표준편차도 mm 단위를 가진다.

 

변동계수

 변동계수는 표준편차를 평균으로 나눈 값이다.

CV = 표준편차 / 평균 × 100

 변동계수는 서로 단위가 다르거나 평균 수준이 다른 데이터를 비교할 때 유용하다.

 예를 들어 A공정의 평균 두께가 10mm이고 표준편차가 1mm라면 CV는 10%다. B공정의 평균 두께가 100mm이고 표준편차가 5mm라면 표준편차 자체는 B공정이 더 크지만, CV는 5%다. 이 경우 상대적인 변동성은 A공정이 더 크다고 볼 수 있다.

 

Python 계산 예시

import numpy as np

data = np.array([5, 10, 15, 20, 30, 40])

mean_value = np.mean(data)

deviations = data - mean_value

variance = np.mean(deviations ** 2)

std_dev = np.sqrt(variance)

cv = std_dev / mean_value

print(f"데이터: {data}")
print(f"평균: {mean_value:.2f}")
print(f"편차: {deviations}")
print(f"분산: {variance:.2f}")
print(f"표준편차: {std_dev:.2f}")
print(f"변동계수: {cv:.2f}")

출력 결과는 다음과 같다.

데이터: [ 5 10 15 20 30 40] 평균: 20.00 편차: [-15. -10. -5. 0. 10. 20.] 분산: 141.67 표준편차: 11.90 변동계수: 0.60
 

5. 사분위수와 IQR, Boxplot

 평균과 표준편차는 데이터가 정규분포에 가까울 때 유용하다. 하지만 이상치가 있거나 분포가 치우친 경우에는 평균과 표준편차만으로 데이터를 해석하기 어렵다. 이때 사분위수와 IQR을 활용하면 데이터의 중심과 퍼짐을 더 안정적으로 파악할 수 있다.

 

사분위수

 사분위수는 데이터를 크기순으로 정렬한 뒤 4등분했을 때의 위치값이다.

구분 의미
Q1 제1사분위수, 하위 25% 지점
Q2 제2사분위수, 중앙값, 50% 지점
Q3 제3사분위수, 상위 25% 지점

 Q1과 Q3 사이에는 전체 데이터의 가운데 50%가 포함된다.

 

IQR

 IQR은 제3사분위수에서 제1사분위수를 뺀 값이다.

IQR = Q3 - Q1

 IQR은 데이터의 중앙 50%가 얼마나 퍼져 있는지 나타낸다. 평균과 표준편차보다 이상치의 영향을 덜 받기 때문에, 이상치 탐지에 자주 사용된다.

 

IQR을 활용한 이상치 탐지

 일반적으로 다음 기준을 사용한다.

하한선 = Q1 - 1.5 × IQR 상한선 = Q3 + 1.5 × IQR

 하한선보다 작거나 상한선보다 큰 값은 이상치 후보로 판단한다.

 다만 이 기준은 절대적인 법칙이 아니라 경험적 기준이다. 제조 데이터에서는 공정 지식과 함께 해석해야 한다. 예를 들어 센서 오류로 인한 이상치인지, 실제 공정 이상으로 인한 이상치인지 구분해야 한다.

 

Python 계산 예시

import numpy as np

data = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 220, 330])

Q1 = np.percentile(data, 25)
Q2 = np.percentile(data, 50)
Q3 = np.percentile(data, 75)

IQR = Q3 - Q1

lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

outliers = data[(data < lower_bound) | (data > upper_bound)]

print(f"데이터: {data}")
print(f"제1사분위수 Q1: {Q1}")
print(f"제2사분위수 Q2: {Q2}")
print(f"제3사분위수 Q3: {Q3}")
print(f"IQR: {IQR}")
print(f"하한선: {lower_bound}")
print(f"상한선: {upper_bound}")
print(f"이상치: {outliers}")

출력 결과는 다음과 같다.

데이터: [ 11 22 33 44 55 66 77 88 99 110 220 330] 제1사분위수 Q1: 41.25 제2사분위수 Q2: 71.5 제3사분위수 Q3: 101.75 IQR: 60.5 이상치: [220 330]
 

Boxplot 해석

 Boxplot은 사분위수를 시각적으로 표현한 그래프다. Boxplot에서 확인할 수 있는 정보는 다음과 같다.

  • 중앙값
  • Q1
  • Q3
  • IQR
  • 이상치 후보
  • 데이터의 비대칭성

 제조 데이터에서는 설비별 품질 편차, 라인별 공정 시간, Lot별 측정값 차이를 비교할 때 Boxplot이 유용하다.

 예를 들어 여러 설비의 제품 두께 데이터를 Boxplot으로 비교하면, 어느 설비의 중앙값이 높은지, 어느 설비의 변동성이 큰지, 특정 설비에서 이상치가 많이 발생하는지 한눈에 확인할 수 있다.

 

6. 왜도와 첨도

 평균, 표준편차, 사분위수는 데이터의 중심과 퍼짐을 설명한다. 하지만 데이터의 분포 모양을 더 자세히 이해하려면 왜도와 첨도를 확인해야 한다. 왜도는 분포의 비대칭성을 나타내고, 첨도는 분포의 꼬리 두께와 뾰족한 정도를 나타낸다.

 

왜도

 왜도는 분포가 좌우로 얼마나 치우쳐 있는지를 나타내는 지표다.

왜도 값 해석
왜도 > 0 오른쪽 꼬리가 긴 분포, right-skewed
왜도 = 0 좌우 대칭에 가까운 분포
왜도 < 0 왼쪽 꼬리가 긴 분포, left-skewed
 

오른쪽 꼬리가 긴 분포

 오른쪽 꼬리가 긴 분포는 큰 값 쪽으로 일부 극단값이 존재하는 경우다. 이 경우 평균은 큰 값의 영향을 받아 중앙값보다 커지는 경향이 있다.

일반적으로 다음 관계가 나타난다.

최빈값 < 중앙값 < 평균

 예시는 다음과 같다.

  • 소득 분포
  • 부동산 가격
  • 공정 지연 시간
  • 일부 극단적으로 긴 작업 시간
 

왼쪽 꼬리가 긴 분포

 왼쪽 꼬리가 긴 분포는 작은 값 쪽으로 일부 극단값이 존재하는 경우다. 이 경우 평균은 작은 값의 영향을 받아 중앙값보다 작아지는 경향이 있다. 일반적으로 다음 관계가 나타난다.

평균 < 중앙값 < 최빈값

예시는 다음과 같다.

  • 대부분 높은 점수를 받았지만 일부 낮은 점수가 있는 시험 결과
  • 대부분 높은 수율을 보이지만 일부 Lot에서 낮은 수율이 발생한 경우
 

첨도

첨도는 분포의 꼬리 두께와 뾰족한 정도를 나타낸다.

정규분포의 첨도는 3이다. 다만 Python의 scipy.stats.kurtosis()는 기본적으로 정규분포를 0으로 두는 초과첨도(excess kurtosis)를 반환한다.

초과첨도 값 해석
초과첨도 > 0 정규분포보다 꼬리가 두껍고 극단값이 나타날 가능성이 크다.
초과첨도 = 0 정규분포와 유사하다.
초과첨도 < 0 정규분포보다 평평하고 꼬리가 얇다.

 첨도가 높다는 것은 단순히 가운데가 뾰족하다는 뜻만은 아니다. 실무적으로는 극단값이 발생할 가능성이 상대적으로 크다는 의미로 해석하는 것이 더 중요하다.

 제조 데이터에서 첨도가 높다면 대부분의 값은 안정적으로 모여 있지만, 드물게 큰 이상값이 발생하는 패턴일 수 있다. 이런 경우 평균과 표준편차만 보는 것보다 이상치 발생 원인을 함께 확인해야 한다.

 

7. 정규분포

 정규분포는 통계에서 가장 중요한 분포 중 하나다.

 정규분포는 평균을 중심으로 좌우 대칭인 종 모양의 분포다. 많은 자연현상과 측정 오차가 정규분포에 가까운 형태를 보이기 때문에 통계 분석에서 자주 등장한다. 정규분포의 특징은 다음과 같다.

  • 평균을 중심으로 좌우 대칭이다.
  • 평균, 중앙값, 최빈값이 거의 같다.
  • 전체 확률의 합은 1이다.
  • 평균과 분산에 따라 분포의 위치와 퍼짐이 달라진다.
  • 평균이 0이고 분산이 1인 정규분포를 표준정규분포라고 한다.

 제조 데이터에서는 공정이 안정적이고 우연 오차만 존재한다면 측정값이 정규분포에 가까운 형태를 보일 수 있다. 그러나 실제 제조 데이터는 설비 이상, 원재료 차이, 작업 조건 변화, 센서 오류 등으로 인해 정규분포에서 벗어나는 경우도 많다.

 따라서 정규분포를 가정하기 전에 히스토그램, KDE, Boxplot 등을 통해 실제 분포를 확인해야 한다.

 

왜도와 첨도 계산 예시

import numpy as np
from scipy.stats import skew, kurtosis

data = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 220, 330])

skewness = skew(data)

kurt = kurtosis(data)

print(f"왜도: {skewness:.4f}")
print(f"초과첨도: {kurt:.4f}")

 이 데이터는 220, 330과 같은 큰 값이 포함되어 있으므로 오른쪽 꼬리가 긴 분포가 될 가능성이 크다. 따라서 왜도는 양수로 나타날 가능성이 높다.

 

KDE 시각화 예시

 KDE (Kernel Density Estimation, 커널 밀도 추정)은 데이터의 분포를 부드러운 곡선으로 추정하는 방법이다.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

data = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 220, 330])

plt.figure(figsize=(10, 6))
sns.kdeplot(data, linewidth=2, label="KDE")

plt.title("KDE Plot")
plt.xlabel("Value")
plt.ylabel("Density")
plt.legend()
plt.grid(alpha=0.3)
plt.show()

 KDE 그래프를 보면 데이터가 어느 구간에 많이 몰려 있는지, 한쪽 꼬리가 긴지, 봉우리가 하나인지 여러 개인지 확인할 수 있다.

 

8. 복습 퀴즈

Q1. 다음 중 중앙값이 평균보다 클 가능성이 가장 높은 분포는?

A. 정규분포

B. 좌측으로 긴 꼬리를 가진 분포

C. 우측으로 긴 꼬리를 가진 분포

D. 첨도가 낮은 분포

정답: B

 좌측으로 긴 꼬리를 가진 분포는 작은 값 쪽에 극단값이 존재한다. 이 작은 값들이 평균을 아래로 끌어내리기 때문에 평균이 중앙값보다 작아질 가능성이 높다.

 

Q2. 분산과 표준편차의 차이에 대한 설명으로 가장 적절한 것은?

A. 분산은 편차의 평균이고, 표준편차는 그 평균의 제곱이다.

B. 분산은 단위를 제거하지만, 표준편차는 단위를 가진다.

C. 표준편차는 분산에 루트를 씌운 값으로, 원 단위와 동일하다.

D. 분산은 이상치에 영향을 받지 않는다.

정답: C

분산은 편차 제곱의 평균이다. 표준편차는 분산의 제곱근이므로 원래 데이터와 같은 단위를 가진다.

 

Q3. 다음 중 이상치 탐지에 가장 적절하게 사용되는 값은?

A. 평균

B. 중앙값

C. IQR

D. 최빈값

정답: C

IQR은 데이터의 중앙 50% 범위를 나타내며, 이상치 탐지 기준을 세울 때 자주 사용된다.

 

Q4. 다음 중 히스토그램과 막대그래프의 주요 차이점으로 옳은 것은?

A. 히스토그램은 범주형 데이터를 시각화한다.

B. 막대그래프는 구간 간 경계가 없다.

C. 히스토그램은 연속적인 구간에 도수를 표현한다.

D. 히스토그램은 항상 누적도수를 보여준다.

정답: C

히스토그램은 연속형 데이터를 일정한 구간으로 나눈 뒤 각 구간의 도수를 표현한다. 막대그래프는 범주형 데이터의 빈도나 값을 비교할 때 주로 사용한다.

 

Q5. 첨도가 양수인 분포에 대한 설명으로 적절한 것은?

A. 평균보다 중앙값이 크다.

B. 극단값이 나타날 가능성이 상대적으로 크다.

C. 정규분포보다 평평하다.

D. 데이터가 항상 중앙값 주변에만 집중되어 있다.

정답: B

초과첨도가 양수인 분포는 정규분포보다 꼬리가 두꺼운 경향이 있다. 따라서 극단값이 나타날 가능성이 상대적으로 크다고 해석할 수 있다.

 

Q6. 학생 80명의 키 데이터를 활용해 6개의 구간으로 도수분포표를 작성하고 히스토그램을 시각화하라.

요구사항은 다음과 같다.

  • 교안의 data = [...] 리스트 사용
  • 구간 수는 6개
  • 누적도수 포함
  • 히스토그램 시각화 포함

풀이 코드

import pandas as pd
import matplotlib.pyplot as plt

data = [
    151, 154, 160, 160, 163, 156, 158, 156, 154, 160,
    154, 162, 156, 162, 157, 162, 162, 169, 150, 162,
    154, 152, 161, 160, 160, 153, 155, 163, 160, 159,
    164, 158, 150, 155, 157, 161, 168, 162, 153, 154,
    158, 151, 155, 155, 165, 165, 154, 148, 169, 158,
    146, 166, 161, 143, 156, 156, 149, 162, 159, 164,
    162, 167, 159, 153, 146, 156, 160, 151, 151, 157,
    151, 156, 166, 159, 157, 156, 159, 156, 156, 161
]

s = pd.Series(data)

bin_edges = [141, 146, 151, 156, 161, 166, 171]
labels = ["141~145", "146~150", "151~155", "156~160", "161~165", "166~170"]

freq = pd.cut(
    s,
    bins=bin_edges,
    right=False,
    labels=labels
).value_counts().sort_index()

freq_table = pd.DataFrame({
    "계급": labels,
    "계급값": [143, 148, 153, 158, 163, 168],
    "도수": freq.values
})

freq_table["상대도수"] = freq_table["도수"] / len(s)
freq_table["누적도수"] = freq_table["도수"].cumsum()

print(freq_table)

plt.figure(figsize=(8, 5))
plt.hist(s, bins=bin_edges, edgecolor="black")

plt.title("Height Distribution Histogram")
plt.xlabel("Height (cm)")
plt.ylabel("Frequency")
plt.xticks(bin_edges)
plt.grid(axis="y", alpha=0.3)
plt.show()

출력되는 도수분포표

계급 계급값 도수 상대도수 누적도수
141~145 143 1 0.0125 1
146~150 148 6 0.0750 7
151~155 153 19 0.2375 26
156~160 158 30 0.3750 56
161~165 163 18 0.2250 74
166~170 168 6 0.0750 80

 히스토그램과 도수분포표를 함께 보면 학생 키 데이터는 156~160cm 구간에 가장 많이 몰려 있다. 또한 151~165cm 범위에 대부분의 데이터가 분포하고 있어, 이 데이터의 중심 구간은 대략 150cm 후반에서 160cm 초반이라고 해석할 수 있다.

 

마무리

 기초 통계는 데이터 분석의 출발점이다.

 평균, 중앙값, 표준편차, 사분위수, 왜도, 첨도는 단순한 공식이 아니라 데이터를 해석하기 위한 언어다. 제조 데이터 분석에서도 마찬가지다. 불량률, 설비 센서값, 제품 치수, 공정 시간 데이터를 제대로 이해하려면 먼저 데이터의 중심, 퍼짐, 분포 형태, 이상치를 확인해야 한다.

 정리하면 다음과 같다.

  • 데이터 종류를 먼저 구분해야 한다.
  • 평균만으로 데이터 전체를 판단하면 위험하다.
  • 중앙값과 IQR은 이상치가 있는 데이터에서 유용하다.
  • 표준편차와 변동계수는 공정 변동성을 비교하는 데 유용하다.
  • 왜도와 첨도는 분포의 모양과 극단값 가능성을 파악하는 데 도움을 준다.
  • 히스토그램, KDE, Boxplot은 통계량만으로 놓치기 쉬운 분포 정보를 시각적으로 보여준다.

 결국 통계는 데이터를 더 복잡하게 만드는 도구가 아니라, 복잡한 데이터를 판단 가능한 형태로 정리하는 도구다. 데이터 분석을 제대로 하기 위해서는 모델링이나 머신러닝보다 먼저, 기초 통계로 데이터를 설명하는 능력이 필요하다.

 

출처

※ KDT 빅데이터 기반 품질 관리(QA/QC) 양성 과정 6회차

'TIL > 기초 통계' 카테고리의 다른 글

기초 통계학 정리  (0) 2026.06.26
확률분포와 정규분포로 이해하는 제조 데이터  (0) 2026.06.18
'TIL/기초 통계' 카테고리의 다른 글
  • 기초 통계학 정리
  • 확률분포와 정규분포로 이해하는 제조 데이터
yustitix
yustitix
Semiconductor Process & Quality Data Analyst Candidate, M.S. in Polymer Engineering, @Yustitix </br> Aspiring Semiconductor Process & Quality Data Analyst, aiming to grow into a Manufacturing AI Data Scientist.
  • yustitix
    데분하다
    yustitix
  • 전체
    오늘
    어제
    • 분류 전체보기 (52)
      • Portfolio (4)
      • Job search (9)
        • JD (3)
        • Article study (5)
        • News room (1)
      • TIL (35)
        • TIL (2)
        • 코테 (11)
        • Python (6)
        • 머신러닝 (6)
        • 기초 통계 (3)
        • 반도체 공정 입문 (7)
      • Project (4)
        • FAERS 이상사례 자가보고 데이터 기반 모니터링.. (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
yustitix
기초적인 통계 개념
상단으로

티스토리툴바