2012-02-03 11 views
12

、サンプリングされた分布で与えられた確率のための分位数を計算するのは簡単です:Rで与えられた分位数の確率をどのようにして計算するのですか? Rを使用して

x <- rnorm(1000, mean=4, sd=2) 
quantile(x, .9) # results in 6.705755 

しかし、私は与えられた分位の逆計算確率を行う簡単な方法を見つけることができませんサンプルx。私が来ている最も近いサンプルを作成するときに、私が使用したのと同じ平均値と標準偏差でpnorm()を使用することです:

pnorm(5, mean=4, sd=2) # results in 0.6914625 

しかし、これは完全な正規分布からの確率ではなく、サンプルxを計算しているので、それは完全に正確ではありません。

本質的に逆数quantile()を実行する関数はありますか?基本的に私はpnorm()と同じことをやりますが、サンプルはありますか?このような何か:

backwards_quantile(x, 5) 

私はecdf()機能を見つけたが、それは代わりに、完全な数式オブジェクトの単一確率になるようにする方法を把握することはできません。

答えて

14

ecdfは関数を返します。適用する必要があります。

f <- ecdf(x) 
f(quantile(x,.91)) 
# Equivalently: 
ecdf(x)(quantile(x,.91)) 
+0

パーフェクト!ありがとう! – Andrew

+3

元の投稿に表示されている例では、実際には、与えられた 'x '(約0.697のシード123を与えられた)の5の分位数を見つけるために' ecdf(x)(5) 'を実行しなければなりません。 –

0

だけ便宜のために、この機能が役立ちます:

quantInv <- function(distr, value) ecdf(distr)(value) 
set.seed(1) 
x <- rnorm(1000, mean=4, sd=2) 
quantInv(x, c(4, 5, 6.705755)) 
[1] 0.518 0.685 0.904 
関連する問題