データが指数分布に適合するかどうかを確認するにはどうすればよいですか?


22

給与などのデータがRの連続指数分布からのものであるかどうかを確認するにはどうすればよいですか?

これが私のサンプルのヒストグラムです。

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

。どんな助けも大歓迎です!


1
変数は離散的ですか、連続的ですか?指数分布は連続として定義されます。
好奇心が

連続。Rでそれを確認するテストがあるのではないかと思います
-stjudent

1
ようこそ。fitdistrR の関数を探します。最尤推定(MLE)メソッドに基づいて確率密度関数(pdf)を調整します。また、pdf、fitdistr、mleなどの質問がこのサイトの用語で検索されます。そのような質問は、良い答えを集めるためにほとんど再現可能な例を必要とすることを忘れないでください。また、質問が純粋にプログラミングに関するものではない場合に役立ちます(オフトピックとして保留される可能性があります)。
アンドレシルバ

8
指数分布は、プロット位置が(rankプロット位置)に対して直線としてプロットされます。ランクは最低値で、はサンプルサイズ、以下のための人気のある選択肢が含ま。これは非公式のテストを提供します。これは、正式なテストと同等以上の有用性があります。/ N - 2 A + 1 1 、N 1 / 2ln(1a)/(n2a+1)1na1/2
ニックコックス

@Berkanは、彼の投稿で変位値プロットのアイデアを開発しました。
ニックコックス

回答:


29

まず、rateを使用して唯一の分布パラメーターを推定しますfitdistr。分布が適合するかどうかはわかりませんので、適合度テストを使用する必要があります。これには、次を使用できますks.test

require(vcd)
require(MASS)

# data generation
ex <- rexp(10000, rate = 1.85) # generate some exponential distribution
control <- abs(rnorm(10000)) # generate some other distribution

# estimate the parameters
fit1 <- fitdistr(ex, "exponential") 
fit2 <- fitdistr(control, "exponential")

# goodness of fit test
ks.test(ex, "pexp", fit1$estimate) # p-value > 0.05 -> distribution not refused
ks.test(control, "pexp", fit2$estimate) #  significant p-value -> distribution refused

# plot a graph
hist(ex, freq = FALSE, breaks = 100, xlim = c(0, quantile(ex, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

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

私の個人的な経験から(どこでも公式に見つけたことはありませんが、確認または修正してください)、ks.test最初にパラメーターの推定値を指定した場合にのみ実行されます。たとえば、パラメータを自動的に推定させることはできませんgoodfit。だからこそ、この2段階の手順が必要になりますfitdistr

詳細については、Ricciの優れたガイドを参照してください:Rによる分布の適合


2
+1。ks.testは、このような状況で適合度をテストするための最良のテストですか?私はあなたにもの一つの質問答えだと思う鉱山
アンドレシルバ

4
頭に浮かぶだけですが、データ自体からパラメータを推定する場合は注意が必要です。その場合、アンダーソンダーリンのようなテストは、そのような状況に対してロバストであるため、最善かもしれません。
JPC

レートパラメーターがデータから推定される場合の指数性のKSテストについて:Kolmogorov Smirnovテストに関する素朴な質問を参照してください。
Scortchi -復活モニカ

8

通常、診断プロット(QQプロットなど)を使用して指数関数をチェックすることをお勧めしますが、テストが必要になることが多いため、テストについて説明します。

Tomasが示唆しているように、コルモゴロフ-スミルノフ検定は、指定されていないパラメーターを使用した指数性の検定には適していません

ただし、パラメーター推定用にテーブルを調整すると、指数分布のリリーフォース検定が得られます。

Lilliefors、H。(1969)、「平均未知数の指数分布のコルモゴロフ–スミルノフ検定について」、Journal of the American Statistical Association、Vol。64 pp。387–389。

このテストの使用については、ConoverのPractical Nonparametric Statisticsで説明されています。

ただし、D'Agostino&StephensのGoodness of Fit Techniquesでは、Anderson-Darlingテストの同様の修正について説明しています(私が正しいことを思い出すと、やや斜めですが、指数関数的なケースのアプローチ方法に関するすべての必要な情報は本で見つけることができます)、そしてそれは面白い選択肢に対してより多くの力を持っていることはほぼ確実です。

同様に、に基づいてテストを行うことにより、Shapiro-Francia検定(Shapiro-Wilkに似ていますが、より簡単です)のようなものを推定できます。ここで、は次数統​​計と指数スコア間の相関です(予想される指数順序統計)。これは、QQプロットで相関をテストすることに相当します。rn(1r2)r

最後に、1がかかる場合がありますスムーズなテスト・レイナー&ベスト(の本のように、アプローチを適合度の検定滑らかな -私はより最近のものがあります信じているものの、「Thasとして、1990年Rでタイトルに追加します」)。指数関数的ケースも以下でカバーされています:

JCW Rayner and DJ Best(1990)、「Smooth Tests of Goodness of Fit:An Overview」、 International Statistics Review、Vol。58、No。1(1990年4月)、9〜17ページ

コスマ・シャリッチはまた彼の1章の円滑なテストを論じ学部高度なデータ分析の 講義ノート、または彼の本のCH15参照ビューの基本ポイントから高度なデータ分析を

上記のいくつかでは、検定統計量の分布をシミュレートする必要がある場合があります。他のテーブルも使用可能です(ただし、一部のケースでは、元のシミュレーションサイズが限られているため、とにかくシミュレートする方が簡単かもしれませんし、Lillieforsテストのように自分自身をシミュレートする方がより正確かもしれません)。

これらのすべてのうち、シャピロ-フランシアに相当する指数関数的なものを実行することを好みます(つまり、QQプロットで相関をテストします[または、テーブルを作成している場合は、、これは同じケースを拒否します]-より良いテストと競争するのに十分強力である必要がありますが、非常に簡単で、QQプロットの視覚的外観に満足のいく対応があります。必要に応じて、相関とp値をプロットに追加することを選択します)。n(1r2)


5

qq-plotを使用できます。qq-plotは、2つの確率分布の分位を相互にプロットすることにより、2つの確率分布を比較するためのグラフィカルな方法です。

Rでは、指数分布(特に基本関数)専用のすぐに使用可能なqqプロット関数はありません。ただし、これは使用できます。

qqexp <-  function(y, line=FALSE, ...) { 
    y <- y[!is.na(y)]
    n <- length(y)
    x <- qexp(c(1:n)/(n+1))
    m <- mean(y)
    if (any(range(y)<0)) stop("Data contains negative values")
    ylim <- c(0,max(y))
    qqplot(x, y, xlab="Exponential plotting position",ylim=ylim,ylab="Ordered sample", ...)
    if (line) abline(0,m,lty=2)
    invisible()
  }

結果の解釈中:比較される2つの分布が類似している場合、qqプロットの点はほぼy = x線上にあります。分布が線形に関連している場合、qqプロットの点はほぼ直線上にありますが、必ずしも直線y = x上にはありません。


2
Stataではqexp、SSCからの実装は缶詰です。
ニックコックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.