経験的累積分布関数とは何ですか?そして、それらを使って何ができますか? 最初の質問に答えるために、最初のステップバックして、”分布”、またはより具体的には”確率分布”を理解していることを確認しましょう。
基本的な確率分布
コインを3回反転させるという単純なイベントを想像してみてください。, ここで、h=headおよびT=tailsが可能なすべての結果です。
- HHH
- HHT
- HTH
- THH
- HTT
- TTH
- THT
- TTT
H=”成功”を想像してください。, 結果は次のように変更できます。
- HHH(3成功)
- HHT(2成功)
- HTH(2成功)
- THH(2成功)
- HTT(1成功)
- TTH(1成功)
- THT(1成功)
- TTT(0成功)
8つの可能な結果があるので、0、1、2、および3つの成功の確率は
- 0成功:1/8
- 1成功:3/8
- 2成功:3/8
- 3成功:1/8
これらの確率を合計すると1が得られます。 そして、これは私たちのイベントの”確率分布”を表します。, イベントは独立しており、試行の固定数(3)があり、確率は各フリップ(0.5)で同じであり、結果は試行回数の”成功”の数であるため、正式にはこのイベントは二項分布に従います。 実際、私たちがちょうど実証したのは、3回の試行と0.5に等しい確率を持つ二項分布です。 これはb(3,0.5)と省略されることもあります。, dbinom
関数を使用してrの確率をすばやく生成できます。
dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125
この確率分布をbarplot
関数ですばやく視覚化できます。
barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)
これらの確率を生成するために使用される関数は、しばしば”密度”関数と呼ばれ、したがってbinomの前の”d”と呼ばれます。, この例の二項分布のような離散値に対して確率を生成する分布は、”確率質量関数”またはPmfと呼ばれることがあります。 正規分布などの連続値の確率を生成する分布は、”確率密度関数”またはPdfと呼ばれることがあります。 しかし、Rでは、PMFまたはPDFにかかわらず、確率を生成する関数は”密度”関数として知られています。
累積分布関数
さて、”累積”確率について話しましょう。, これらは、確率分布のx軸に沿って左から右に移動するときに蓄積される確率です。, 上記の分布プロットを見ると、次のようになります。
- \(P(X\le0)\)
- \(P(X\le1)\)
- \(P(X\le2)\)
- \(P(X\le3)\)
これらをすばやく計算できます。
- \(P(X\le0)=\frac{1}{8}\)
- \(P(X\le1)=\frac{1}{8}+\frac{3}{8}=\frac{1}{2}\)
- \(P(X\le2)=\frac{1}{8}+\frac{3}{8}+\frac{3}{8}=\frac{7}{8}\)
- \(P(X\le3)=\frac{1}{8}+\frac{3}{8}+\frac{3}{8}+\frac{1}{8} = 1\)
これらの確率の分布は累積分布として知られています。, ここでも、Rにこれらの確率を生成する関数があります。 “Binom”の前に”d”の代わりに”p”を置きます。
pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000
この関数は、多くの場合、単に”分布関数”と呼ばれています。 この関数をプロットするには、もう少し作業が必要です。 このプロットを簡単に作成する方法をまもなく示すので、コメントなしで次のコードを提示します。,
このプロットは、ステッププロットと呼ばれることもあります。 X軸上のポイントにヒットするとすぐに、次の確率まで”ステップアップ”します。 0以下の確率は0.125です。 したがって、0から1までの直線。 1では0.5までステップアップします。1以下の確率は0.5なのです。 など。 3で、我々は1でドットを持っています。 3以下の確率は確実です。 二項分布で3回以下の成功を得ることが保証されています。
ここで、上記で行ったことを連続分布で示しましょう。, それを比較的単純に保つために、平均が0、標準偏差が1の標準正規分布を使用します。 二項分布で正確に理解できる上記のコイン反転の例とは異なり、標準正規分布に完全にマッピングする実生活の”既製の”例はありません。 したがって、我々は想像力を使用する必要があります。
まず、curve
関数を使用して分布を描画しましょう。 最初の引数dnorm(x)
は、基本的に線を描画する数式です。, “ノルム”の前にある”d”に注意してください;これは”密度”関数です。 dnorm
関数のデフォルトは、平均=0および標準偏差=1です。 from
およびto
引数は、-3から3の範囲のxの値を使用してこの曲線を描画すると言います。
curve(dnorm(x), from = -3, to = 3)
曲線は滑らかな線であり、すべての実数の確率分布であることを意味します。 それは確率分布であるため、曲線の下の面積は1です。,
この分布に到達し、数字を描くと想像してみてください。 1.134523768923を得る確率はどれくらいですか? それは本質的に0です。 どうして? それを選択する可能性は\(\frac{1}{\infty}\)あるからです。 分母に\(\infty\)があるのはなぜですか? 無限の可能性があるからです。 それが混乱しているように見える場合は、小数点が地平線まで伸びて、より細かい解像度でx軸にズームインすることを想像してみてください。 これは、y軸の値が確率を表すのではなく、”密度”を表すことを意味します。, 密度は、本質的に、小さな範囲の値をその範囲で割った確率です。 それも混乱しているようであれば、それは大丈夫です。 正確な確率を得るために正規分布(または連続分布)を使用しないことを覚えておいてください。 これらを使用して、ある範囲の値の確率を取得します。
たとえば、xが-1以下である確率はどれくらいですか? このために、正規分布の累積分布関数であるpnorm
関数を使用できます。,
pnorm(-1)## 0.1586553
mosaicパッケージは、この確率をすばやく視覚化するための便利なplotDist
関数を提供します。 関数の前にmosaic::
を配置することで、モザイクパッケージをロードせずに関数を呼び出すことができます。 groups
引数は、-1より小さい領域と-1より大きい領域を作成すると言います。 type='h'
引数は、”ヒストグラムのような”プロットを描くと言います。 二つの色は、それぞれの地域のためのものです。 明らかに”ノルム”は正規分布を描くことを意味します。, ここでも、デフォルトは平均0と標準偏差1です。
# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue'))
このプロットは、実際に累積確率を示しています。 青い領域は0.1586553に等しく、この分布から-1以下の値を引き出す確率です。 累積分布関数を使用してこの値を取得したことを思い出してください 標準正規分布のすべての累積確率を視覚化するには、再びcurve
関数を使用できますが、今回はpnorm
。,
curve(pnorm(x), from = -3, to = 3)
x軸上の-1を見て、ラインまでまっすぐに行き、x軸に直接左に行くと、0.1586553に着陸するはずです。 これをプロットに追加するには、次のようにします。segments
:
curve(pnorm(x), from = -3, to = 3)segments(x0 = -1, y0 = 0, x1 = -1, y1 = pnorm(-1), col = 'red')segments(x0 = -1, y0 = pnorm(-1), x1 = -3, y1 = pnorm(-1), col = 'blue')
ここでも、無限の数の実数値を扱っているため、これは滑らかな線です。,
経験的累積分布関数
累積分布について明らかになったので、経験的累積分布関数を調べてみましょう。 “経験的”とは、理論ではなく観察に関係していることを意味します。 上で検討した累積分布は理論に基づいていました。 確率を計算し、分布を視覚化するために、それぞれ二項累積分布と正規累積分布を使用しました。 しかし、実際の生活では、私たちが収集または観察するデータは理論的な分布から来ていません。 累積分布を作成するには、データ自体を使用する必要があります。,
Rでこれを行うには、ecdf
関数を使用します。 ECDFは”経験的累積分布関数”の略です。 最後の単語に注意してください:”関数”。 ecdf
関数は関数を返します。 pbinom
とpnorm
が理論データの累積分布関数であったように、ecdf
は観測データの累積分布関数を作成します。 Rに付属のrockデータセットでこれを試してみましょう。,
岩石データセットには、石油貯留層からの48個の岩石サンプルの測定値が含まれています。 面積、ペリ、形状、およびパーマ:それは4つの変数が含まれています。 各サンプルの細孔の総面積であるarea変数を使用します。
ecdf
関数は、多くの場合、データフレーム内の数値の列である数値ベクトルで動作します。 以下では、岩石データフレームの面積の列を示します。
ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212
出力がそれほど有用ではないことに注意してください。 これは、ecdf
関数が関数を返すためです。, ECDF関数を作成できるように、結果を名前に割り当てる必要があります。 使用してみましょうFn
Fn <- ecdf(rock$area)
これで、データで使用できるカスタム累積分布関数が得られました。 たとえば、累積分布を視覚化するためのステッププロットを作成できます。
plot(Fn)
プロットを見ると、サンプルの面積が8000以下であると推定される確率は約0.6であることがわかります。, しかし、私たちはグラフを目で見ることに頼る必要はありません。 私たちは機能を持っています! それを使ってより正確な見積もりを得ることができます。 X軸の範囲内の数値を指定するだけで、累積確率が返されます。
# Prob area less than or equal to 8000Fn(8000)## 0.625
複数の値を持つ関数を使用できます。 たとえば、面積が4000、6000、および8000以下であるという推定確率を得ることができます。
Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000
ECDF関数のためのsummary
メソッドもあります。, 観測されたデータの一意の値の要約を返します。 これは数値ベクトルの従来の集計方法に似ていますが、すべての値ではなく一意の値を要約するため、結果は若干異なります。
最後に、必要に応じて、理論的累積分布をECDF上に重ね合わせることができます。 これは、データが特定の理論的分布でモデル化できると仮定できるかどうかを評価するのに役立つかもしれません。 たとえば、データは正規分布からサンプリングされたものと考えることができますか?, 以下では、ステップ関数をプロットし、観測データの平均と標準偏差を使用して累積正規分布をオーバーレイします。
plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2)
線はかなり重なっているようで、データは正規分布で近似できることを示唆しています。 また、ECDFからの推定値を理論的なCDFと比較することもできます。 面積が8000以下である確率は約0.625であることがわかりました。, これは、rock$area
の平均と標準偏差を持つ正規の累積分布とどのように比較されますか?
pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223
それはかなり近いです!
もう一つのグラフィカルな評価はQ-Qプロットであり、qqnorm
およびqqline
関数を使用してRで簡単に行うこともできます。 アイデアは、点が対角線に沿って落ちる場合、データがもっともらしく正常であるという良い証拠を持っているということです。, ここでも、このプロットは、データが正規分布でよく近似できるように見えることを明らかにします。 (Q-Qプロットの詳細については、記事”Q-Qプロットについて”を参照してください)。
qqnorm(rock$area)qqline(rock$area)
この記事に関する質問や説明については、UvaライブラリStatLabにお問い合わせください。[email protected]
UVAライブラリStatLabの記事のコレクション全体を表示します。
クレイ-フォード
統計研究コンサルタント
バージニア大学図書館
July9,2020
コメントを残す