R で qq プロットを作成および解釈する方法


QQ プロット(「分位数-分位数」の略) は、データ セットが理論的分布に由来する可能性があるかどうかを判断するために使用できるプロットの一種です。

多くの統計検定では、データセットが正規分布に従うことが前提となっており、この前提が満たされているかどうかを評価するために QQ プロットがよく使用されます。

QQ プロットは正式な統計検定ではありませんが、データ セットが正規分布に従っているかどうか、およびそうでない場合はこの仮定にどのように違反しているのか、どのデータ ポイントがこの違反の原因となっている可能性があるのかを視覚的に確認する簡単な方法を提供します。

2 つの分位数セットを相互にプロットすることで、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 プロットは、データセットが理論的な分布に従っているかどうかを視覚的に確認する単なる方法であることに留意してください。データセットが特定の分布に従っているかどうかを正式にテストするには、次のテストを実行できます (データセットを正規分布と比較していると仮定して)。

アンダーソン・ダーリンテスト
シャピロ・ウィルク検査
コルモゴロフ・スミルノフ検定

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です