R-QQPlot:データが正規分布しているかどうかを確認する方法


47

Shapiro-Wilk正規性テストを行った後、これをプロットしました。テストでは、人口が正規分布している可能性が高いことが示されました。ただし、このプロットでこの「動作」を確認するにはどうすればよいですか?ここに画像の説明を入力してください

更新

データの単純なヒストグラム:

ここに画像の説明を入力してください

更新

Shapiro-Wilkテストは次のように述べています。

ここに画像の説明を入力してください


6
編集を再:SWテスト結果、これらのデータが共通の正規分布から独立して引き出されたという仮説を拒否します。p値は非常に小さいです。(これは、短い左テールを示すqqプロットと正の歪度を示すヒストグラムの両方で明らかです。)これは、テストを誤って解釈したことを示しています。テストを正しく解釈しても、まだ質問がありますか?
whuber

4
それどころか、ソフトウェアとすべてのプロットは、彼らが言うことにおいて一貫しています。qqプロットとヒストグラムは、データが正規性から逸脱する特定の方法を示しています。SWテストでは、このようなデータは正規分布から得られる可能性は低いとされています。
whuber

1
なぜプロットは正規分布していないと言うのですか?qqplotは直線を作成し、ヒストグラムも正規分布しますか?私はそれを得ません;(
Le Max

7
QQプロットは明らかにされていないストレートとヒストグラムは明らかにされていない(おそらく、正規分布ヒストグラムを満たさなければならない多くの基準の最も基本的である)対称。 Sven Hohensteinの答えは、qqプロットの読み方を説明しています。
whuber

1
同じサイズの正規ベクトルを生成し、正規データを使用してQQプロットを作成すると、データが実際に正規分布からのものである場合にどのように表示されるかを確認すると役立つ場合があります。
StatsStudent

回答:


31

テストは、人口が正規分布している可能性が高いことを示しました。

番号; それは示しませんでした。

仮説検定では、nullの可能性はわかりません。実際、このnullはfalseであることは間違いありません。

QQプロットは、非正規性を強く示すものではありません(プロットはかなり直線です)。おそらくあなたが予想するよりもわずかに短い左尾がありますが、それは本当に重要ではありません。

ヒストグラムの現状のままでは、おそらくあまり語られていません。また、わずかに短い左尾を暗示しています。しかし、こちらをご覧ください

データの取得元の人口分布は、まったく正常ではありません。ただし、QQプロットは、正規性がおそらくかなり適切な近似であることを示しています。

サンプルサイズが小さすぎなかった場合、シャピロ・ウィルクの拒絶の欠如はおそらく同じことを言っているでしょう。

更新:実際のShapiro-Wilk p値を含めるように編集することは重要です。実際には、通常の重要なレベルでnullを拒否することを示すからです。このテストは、データが正規分布していないことを示しており、プロットで示されている軽度のゆがみは、おそらくテストで検出されているものです。変数自体の正規性を想定する典型的な手順(1サンプルのt検定は頭に浮かぶものです)で、かなり大きなサンプルサイズと思われるものでは、この穏やかな非正規性はほとんど意味を持ちません。すべて-適合度テストの問題の1つは、問題ではない場合(サンプルサイズがある程度の非正規性を検出するのに十分な大きさである場合)に拒否する可能性が高いことです。同様に、最も重要な場合(サンプルサイズが小さい場合)に拒否に失敗する可能性が高くなります。


実際、これはOPの声明を誤解させました。私は少しあなたに同意しないことに注意してください:通常、テストは帰無仮説が真である場合に観測がどれほどありそうもないかをあなたに伝えますが、私たちはこれを使用して、この観測を得たので帰無仮説が真である可能性は低いと主張します。
ニックサブベ

あなたの答えのためのTHX!私は、他の方向に向かうすべての声明に少し混乱しています。はっきり言って、私の練習は、サンプルの正常性についての声明を出すことです。それでは、私の教授への答えとして何を言おうと思いますか?そして、サンプルサイズが巨大であっても正常性をどのように示すか?; S
Le Max

2
「QQプロットは正規性と合理的に一貫していますが、左テールは少し「短い」です。ゆがみの軽度の兆候があります。」
Glen_b

37

データが正規分布している場合、QQ正規プロットのポイントは直線の対角線上にあります。次のコマンドを使用してqqline(x)、この行をQQプロットに追加できxます。ここでは、値のベクトルです。

正規分布および非正規分布の例:

正規分布

set.seed(42)
x <- rnorm(100)

次の線を含むQQ正規プロット:

qqnorm(x); qqline(x)

ここに画像の説明を入力してください

直線からの偏差は最小限です。これは正規分布を示します。

ヒストグラム:

hist(x)

ここに画像の説明を入力してください

非正規(ガンマ)分布

y <- rgamma(100, 1)

QQ正規プロット:

qqnorm(y); qqline(y)

ここに画像の説明を入力してください

ポイントは直線とは別の形状を明確にたどります。

ヒストグラムは、非正規性を確認します。分布はベル型ではなく、正に歪んでいます(つまり、ほとんどのデータポイントは下半分にあります)。正規分布のヒストグラムは、分布の中心で最も高い頻度を示しています。

hist(y)

ここに画像の説明を入力してください


qqplotに信頼区間を置くと便利です。「完全に」正常なものは何もありません。また、サンプルサイズは、何かが不正確で正常な範囲内にどれだけあるかを駆動できます。
EngrStudent-モニカの復活

@EngrStudent信頼区間をqqplotに含めるために共有するコードはありますか?
だんの

1
@danno パッケージqqPlot内の関数をチェックアウトしcarます。
スベンホーエンシュタイン

@danno-「car」ライブラリの「qqPlot」を見てください。それはしばらく前からあり、私はそれを作りませんでした。信頼区間を追加します。一部の非正規分布の基本分布を指定することもできます。以下の私の答えにあります。
EngrStudent-モニカの復活

1
approximately

23

Rの正規性の仮定の妥当性をチェックするためのいくつかのツール

library(moments)
library(nortest)
library(e1071)

set.seed(777)
x <- rnorm(250,10,1)

# skewness and kurtosis, they should be around (0,3)
skewness(x)
kurtosis(x)

# Shapiro-Wilks test
shapiro.test(x)

# Kolmogorov-Smirnov test
ks.test(x,"pnorm",mean(x),sqrt(var(x)))

# Anderson-Darling test
ad.test(x)

# qq-plot: you should observe a good fit of the straight line
qqnorm(x)
qqline(x)

# p-plot: you should observe a good fit of the straight line
probplot(x, qdist=qnorm)

# fitted normal density
f.den <- function(t) dnorm(t,mean(x),sqrt(var(x)))
curve(f.den,xlim=c(6,14))
hist(x,prob=T,add=T)

11

直感が何らかのテストの結果と一致するかどうかを視覚的に確認することをお勧めしますが、毎回これが簡単になるとは期待できません。ヒッグスボソンを検出しようとする人々が視覚的に評価できる場合にのみ結果を信頼する場合、非常に鋭い目が必要になります。

特に大きなデータセットの場合(したがって、通常はパワーが増加する場合)、統計は肉眼ではほとんど識別できない場合でも、わずかな差を拾う傾向があります。

それは言われています:正常のために、あなたのQQプロットは直線を示すべきです:私はそれを言わないと思います。尾には明確な曲がりがあり、真ん中近くでも多少の騒ぎがあります。視覚的には、このデータは(正常性をチェックする目的に応じて)まだ「合理的に」正常であると言いたいかもしれません。

注:正規性を確認するほとんどの目的では、観測値の正規性ではなく平均の正規性のみが必要なので、中心極限定理で十分です。さらに、正規性は多くの場合「公式に」チェックする必要があるという前提ですが、多くのテストでは、この前提が満たされないことにかなり鈍感であることが示されています。


2

「R」ライブラリ「car」のバージョンは、中心的な傾向だけでなく信頼区間も提供するので気に入っています。データの動作が仮想分布と一致しているかどうかを確認するための視覚的なガイダンスを提供します。

library(car)

qqPlot(lm(prestige ~ income + education + type, data=Duncan), 
       envelope=.99)

いくつかのリンク:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.