Python에서 qq 플롯을 만드는 방법


“분위수-분위수”의 약자인 QQ 플롯은 데이터 세트가 잠재적으로 이론적 분포에서 나오는지 여부를 평가하는 데 자주 사용됩니다.

대부분의 경우 이러한 유형의 도표는 데이터 세트가 정규 분포를 따르는지 여부를 확인하는 데 사용됩니다.

이 튜토리얼에서는 Python에서 데이터 세트에 대한 QQ 플롯을 생성하는 방법을 설명합니다.

예: Python의 QQ 플롯

다음과 같은 100개 값의 데이터 세트가 있다고 가정합니다.

 import numpy as np

#create dataset with 100 values that follows a normal distribution
np.random.seed(0)
data = np.random.normal(0,1, 1000)

#view first 10 values
data[:10] 

array([ 1.76405235, 0.40015721, 0.97873798, 2.2408932 , 1.86755799,
       -0.97727788, 0.95008842, -0.15135721, -0.10321885, 0.4105985 ])

이 데이터세트에 대한 QQ 플롯을 생성하려면 statsmodels 라이브러리의 qqplot() 함수를 사용할 수 있습니다.

 import statsmodels.api as sm
import matplotlib.pyplot as plt

#create QQ plot with 45-degree line added to plot
fig = sm.qqplot(data, line='45')
plt.show()

Python의 QQ 플롯

QQ 플롯에서 x축은 이론적 분위수를 표시합니다. 즉, 실제 데이터를 표시하는 것이 아니라 정규 분포를 따른 경우 데이터의 위치를 나타냅니다.

Y축에는 현재 데이터가 표시됩니다. 이는 데이터 값이 45도 각도로 대략 직선을 따른다면 데이터가 정규 분포를 따른다는 의미입니다.

위의 QQ 플롯에서 데이터 값이 45도를 밀접하게 따르는 경향이 있음을 볼 수 있습니다. 이는 데이터가 정규 분포를 이룰 가능성이 있음을 의미합니다. numpy.random.normal() 함수를 사용하여 100개의 데이터 값을 생성했기 때문에 이는 놀라운 일이 아닙니다.

대신, 균일하게 분포된 100개의 값으로 구성된 데이터세트를 생성하고 해당 데이터세트에 대한 QQ 플롯을 생성했는지 생각해 보세요.

 #create dataset of 100 uniformly distributed values
data = np.random.uniform(0,1, 1000)

#generate QQ plot for the dataset
fig = sm.qqplot(data, line='45')
plt.show()

matplotlib를 사용하여 Python에서 직선으로 QQ 플롯

데이터 값은 명확하게 45도 빨간색 선을 따르지 않으며 이는 정규 분포를 따르지 않음을 나타냅니다.

QQ 플롯에 대한 참고 사항

QQ 플롯에 대한 다음 참고 사항을 염두에 두십시오.

  • QQ 플롯은 공식적인 통계 테스트는 아니지만 데이터 세트가 정규 분포를 따르는지 여부를 시각적으로 확인할 수 있는 간단한 방법을 제공합니다.
  • QQ 플롯과 PP 플롯을 혼동하지 않도록 주의하세요. PP 플롯 은 분포의 꼬리에 해당하는 데이터 값을 분석하는 데 덜 일반적이고 덜 유용합니다.

여기에서 더 많은 Python 튜토리얼을 찾을 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다