R에서 qq 플롯을 생성하고 해석하는 방법
“분위수-분위수”의 약자인 QQ 플롯은 데이터 세트가 잠재적으로 이론적 분포에서 나오는지 여부를 결정하는 데 사용할 수 있는 플롯 유형입니다.
많은 통계 테스트에서는 데이터 세트가 정규 분포를 따른다고 가정하고 QQ 플롯은 이 가정이 충족되는지 여부를 평가하는 데 자주 사용됩니다.
QQ 플롯은 공식적인 통계 테스트는 아니지만 데이터 세트가 정규 분포를 따르는지 여부, 그렇지 않은 경우 이 가정이 어떻게 위반되는지, 어떤 데이터 포인트가 잠재적으로 위반의 원인인지를 시각적으로 확인할 수 있는 간단한 방법을 제공합니다.
두 개의 분위수 세트를 서로 플롯하여 QQ 플롯을 만들 수 있습니다. 두 분위수 세트가 동일한 분포에서 나온 경우 그림의 점은 대략 직선 대각선을 형성해야 합니다.
분위수는 데이터의 특정 부분이 아래에 있는 데이터 세트의 지점을 나타냅니다. 예를 들어 분위수 0.9는 데이터의 90%가 그 아래에 속하는 지점을 나타냅니다. 0.5 분위수는 데이터의 50%가 그 아래에 있는 지점을 나타냅니다.
QQ 플롯은 데이터 샘플의 분위수를 식별하고 이를 이론적 분포의 분위수와 비교합니다. 대부분의 경우 정규 분포가 사용되지만 QQ 플롯은 실제로 모든 이론적 분포에 대해 생성될 수 있습니다.
QQ 플롯에서 데이터 포인트가 직선 대각선을 따라 있는 경우 데이터 세트는 정규 분포를 따를 가능성이 높습니다.
R에서 QQ 플롯을 만드는 방법
내장된 qqnorm() 함수를 사용하여 데이터 세트가 정규 분포를 따르는지 확인하기 위해 QQ 플롯을 쉽게 만들 수 있습니다.
예를 들어, 다음 코드는 정규 분포를 따르는 100개의 임의 값으로 구성된 벡터를 생성하고 해당 데이터 세트에 대한 QQ 플롯을 생성하여 실제로 정규 분포를 따르는지 확인합니다.
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data)
데이터가 직선을 따르는지 더 쉽게 확인하려면 qqline() 함수를 사용할 수 있습니다.
#create QQ plot qqnorm(data) #add straight diagonal line to plot qqline(data)
꼬리 근처의 데이터 포인트가 직선을 정확히 따르지 않는다는 것을 알 수 있지만 대부분의 경우 이러한 샘플 데이터는 정규 분포를 따르는 것으로 보입니다(R에게 정규 분포에서 데이터를 생성하도록 요청했기 때문에 그래야 합니다). ). ).
대신 감마 분포를 따르는 100개의 임의 값으로 구성된 벡터를 생성하고 이 데이터에 대한 QQ 플롯을 생성하여 정규 분포를 따르는지 확인하는 다음 코드를 고려해보세요.
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a gamma distribution data <- rgamma(100, 1) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
이 QQ 플롯에서 직선과의 명확한 편차를 볼 수 있는데, 이는 이 데이터 세트가 정규 분포를 따르지 않을 가능성이 있음을 나타냅니다.
자유도가 5인 카이제곱 분포를 따르는 100개의 임의 값으로 구성된 벡터를 생성하고 이 데이터에 대한 QQ 플롯을 생성하여 정규 분포를 따르는지 확인하는 또 다른 코드 조각을 고려해보세요.
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a Chi-Square distribution data <- rchisq(100, 5) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
다시 한번 우리는 이 데이터 세트가 특히 꼬리 근처에서 정규 분포를 따르지 않는 것처럼 보인다는 것을 알 수 있습니다.
R에서 QQ 플롯의 미학 변경
제목, 축 레이블, 데이터 포인트 색상, 선 색상 및 선 너비를 포함하여 R에서 QQ 플롯의 일부 미학을 변경할 수 있습니다.
다음 코드는 제목, 축 레이블 및 플롯 포인트의 색상을 변경합니다.
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot qqnorm(data, main = 'QQ Plot for Normality', xlab = 'Theoretical Dist', ylab = 'Sample dist', col = 'steelblue')
그런 다음 다음 코드는 빨간색, 선 너비 2(lwd = 2, 기본값은 1) 및 점선(lty = 2, 기본값은 1)을 사용하여 플롯에 직선 대각선을 추가합니다.
qqline(data, col = 'red', lwd = 2, lty = 2)
기술 노트
QQ 플롯은 단순히 데이터 세트가 이론적 분포를 따르는지 여부를 시각적으로 확인하는 방법일 뿐입니다. 데이터세트가 특정 분포를 따르는지 여부를 공식적으로 테스트하려면 다음 테스트를 수행할 수 있습니다(데이터세트를 정규 분포와 비교한다고 가정).