녕녀기의 실험일지

[ 통계 ] Q-Q 플롯(Q-Q Plot) 본문

-- Data --/- 데이터 분석 -

[ 통계 ] Q-Q 플롯(Q-Q Plot)

녕녀기 2023. 4. 13. 23:59

목차로

 

안녕하세요. 녀기입니다.

 

통계 지식을 정리하는 포스팅....

 

어제 너무 무리였습니다.

 

여러 개념을 한 포스팅에 담다 보니 뭔가 난잡하고

 

막 의욕이 사라지고

 

(내 정신도 시공간 너머로 사라지고...😱)

 

이러면 될 것도 안 되기 때문에

 

짧게 짧게 한 개념씩 가겠습니다.

 

언제나 책의 기준은 예전 포스팅에 있던 책을 기준으로 하며, 품질경영기사의 내용은 보조입니다.

 

(품질은 또 품질만의 기준이 있기 때문이니까요.)


목차

  1. 개념
  2. 적용

1. 개념

Q-Q 플롯(Quantile-Quantile Plot) : 2개의 누적 분포 함수 Fx(x)와 Fy(y)에 대해 Fx(x) = Fy(y)를 만족하는 (x, y)를 그린 그래프

 

누적 분포 함수(Cumulative Ditribuation Function) : 랜덤 변수가 특정 값보다 작거나 같을 확률을 나타내는 함수이다. '누적'이라는 이름은 특정 값보다 작은 값들의 확률을 모두 누적해서 구한다는 의미에서 붙여진 이름이다.

출처 : https://elementary-physics.tistory.com/127

F(x) = P(X ≤ x) 로 표현한다.

 

2개의 누적 분포 함수 Fx(x)와 Fy(y)에 대해 Fx(x) = Fy(y)를 만족하는 x, y를 그래프로 그리면 2개의 누적 분포 함수가 얼마나 어긋나는지를 눈으로 확인할 수 있습니다.

 

누적 분포 함수 대신 누적 상대 도수 분포표를 이용하면 2개의 데이터 분포 형태의 어긋남을 표현할 수 있다고 합니다.

 

확률 변수 X와 Y 사이에 Y = aX + b (a > 0)이라는 1차 함수 관계가 있다면 다음 식이 성립합니다.

P(X ≤ x) = P(aX + b ≤ ax + b) = p(Y ≤ y)

 

그러므로 Q-Q 플롯은 직선이 됩니다.

 

즉 X, Y가 모두 정규 분포라면 X와 Y는 1차 함수 관계가 되므로 Q-Q 플롯은 직선이 됩니다.


2. 적용

1. X가 정규 분포의 누적 분포 함수일 때는 정규 Q-Q 플롯이라 합니다. 

 

이를 이용하면 Y가 정규 분포와 비교해 어느 정도 어긋났는지 시각화할 수 있습니다.

 

예를 들면, 

Fig 1. Q-Q Plot 예

출처 : https://www.learnbyexample.org/r-quantile-quantile-qq-plot-base-graph/

 

직선에서 어긋난 났다면 정규 분포를 가정한 추정이나 검정을 하면 안 됩니다.

 

Fig 1의 맨 밑 그래프의 경우, Y의 분포가 정규 분포보다 왼쪽 꼬리가 긴 분포이네요.

 

QC에서는 규격품 확인에 정규 분포를 이용합니다.

 

정규 Q-Q 플롯은 공업 제품의 특성값 데이터가 정규 분포가 되는지 확인하는데 도와주죠.

 

직선보다 어긋남이 크다면, 벗어난 값은 제외해야 합니다.

 

 

 

 

2. Python 코드로 Q-Q Plot이 구현 가능합니다.

import scipy.stats as stats
import matplotlib.pyplot as plt

plt.figure(figsize=(10,5))    # 그래프 사이즈 지정
stats.probplot(Sample, dist=stats.norm, plot=plt) #Sample은 어느 정도 어긋났는지 비교할 분포,
                                                  #dist는 기준이 되는 분포, 정규 분포가 아니어도 된다.
                                                  #plot은 주로 matplotlib.plt 객체 사용
plt.show()

API reference는

 

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.probplot.html#scipy.stats.probplot

 

scipy.stats.probplot — SciPy v1.10.1 Manual

If given, plots the quantiles. If given and fit is True, also plots the least squares fit. plot is an object that has to have methods “plot” and “text”. The matplotlib.pyplot module or a Matplotlib Axes object can be used, or a custom object with t

docs.scipy.org

위 링크에서 확인하시면 됩니다.

Comments