次の構造のデータセットがあります。
a word | number of occurrence of a word in a document | a document id
Rで正規分布のテストを実行するにはどうすればよいですか?おそらく簡単な質問ですが、私はR初心者です。
次の構造のデータセットがあります。
a word | number of occurrence of a word in a document | a document id
Rで正規分布のテストを実行するにはどうすればよいですか?おそらく簡単な質問ですが、私はR初心者です。
回答:
あなたの質問を正しく理解したら、一連の文書内の単語の出現が正規分布に従っているかどうかをテストするには、shapiro-Wilkテストといくつかのqqplotを使用するだけです。例えば、
## Generate two data sets
## First Normal, second from a t-distribution
words1 = rnorm(100); words2 = rt(100, df=3)
## Have a look at the densities
plot(density(words1));plot(density(words2))
## Perform the test
shapiro.test(words1); shapiro.test(words2)
## Plot using a qqplot
qqnorm(words1);qqline(words1, col = 2)
qqnorm(words2);qqline(words2, col = 2)
qqplotコマンドは以下を提供します。
2番目のデータセットは、太い尾によって明らかにノーマルではないことがわかります(詳細)。
Shapiro-Walk正規性検定では、p値は最初のデータセットでは大きく(> .9)、2番目のデータセットでは非常に小さい(<.01)。これにより、2番目の帰無仮説を棄却することになります。
qqline
1つのスロープとmuインターセプトが必要です。
データセットが呼び出されwords
、counts
列があると仮定すると、ヒストグラムをプロットして分布を視覚化できます。
hist(words$counts, 100, col="black")
ここで、100はビンの数です
を使用して通常のQQプロットを行うこともできます
qqnorm(words$counts)
最後に、Shapiro-Wilkテストを使用して正常性を確認することもできます
shapiro.test(word$counts)
ただし、この議論を見てください:正常性テスト:「本質的に役に立たない?」
データに正規分布があることをテストで示すことはできません。データが正規分布と十分に矛盾していて、nullを拒否する場合にのみ表示できます。
しかし、カウントはどのような場合でも正規ではありません、それらは正の整数です-正規分布からの観測値が整数ではない値を取る確率はどれくらいですか?(...それは確率1のイベントです)。
この場合、なぜ正常性をテストするのですか?それは明らかに真実ではありません。
[場合によっては、データが実際に正常ではないことを伝えることができることは必ずしも重要ではないかもしれません。実際のデータは、正規分布から実際に引き出されることはありません(ほとんどありません)。]
本当にテストを行う必要がある場合、Shapiro-Wilkテスト(?shapiro.test
)は正常性の一般的なテストであり、広く使用されています。
正規性を調べるより正式な方法は、尖度と歪度がゼロと有意に異なるかどうかをテストすることです。
これを行うには、以下を取得する必要があります。
kurtosis.test <- function (x) {
m4 <- sum((x-mean(x))^4)/length(x)
s4 <- var(x)^2
kurt <- (m4/s4) - 3
sek <- sqrt(24/length(x))
totest <- kurt/sek
pvalue <- pt(totest,(length(x)-1))
pvalue
}
尖度、および:
skew.test <- function (x) {
m3 <- sum((x-mean(x))^3)/length(x)
s3 <- sqrt(var(x))^3
skew <- m3/s3
ses <- sqrt(6/length(x))
totest <- skew/ses
pt(totest,(length(x)-1))
pval <- pt(totest,(length(x)-1))
pval
}
スキューネス用。
これらの検定は両方とも片側なので、p値に2を掛けて両側にする必要があります。p値が1より大きくなった場合、kurtosis.testの代わりに1-kurtosis.test()を使用する必要があります。
他にご質問がある場合は、j.bredman @ gmail.comまでメールでお問い合わせください。
kurtosis()
やskewness()
から機能をモーメントパッケージ?rnorm()
サンプルを使用した結果は異なります。
nortest
R のパッケージを使用すると、次のテストを実行できます。
アンダーソンダーリング正規性検定を実行します
ad.test(data1)
正規性についてCramér-vonMises検定を実行します
cvm.test(data1)
正規性のピアソンカイ二乗検定を実行
pearson.test(data1)
正常性についてShapiro-Franciaテストを実行します
sf.test(data1)
normtest
パッケージを使用して、他の多くのテストを実行できます。https://cran.r-project.org/web/packages/normtest/normtest.pdfの説明を参照して
ください
zipfR
パッケージをチェックアウトします。