2016-08-03 19 views
-1

私は統計の初心者であり、現在重要なサンプリングを学んでいます。私はここで同様の問題を捜し求めましたが、それでも私の解決は得られません。その後重要度サンプリングR

私は重点サンプリングを使用することによりE(x)

ターゲット分布の
f(x)=2 * x * exp(-x^2), x>0 

を評価する必要がある場合、私は

g(x)=exp(-x) 

提案分布を取る

E(x)=integral(x* (f(x)/g(x)) * g(x) dx) 
    =integral(exp(-x) * 4 * x^2 dx) 

マイRコードはましたこのように

x=rexp(1000) 
w=4*x^2 
y=exp(-w) 
mean(y) 

私はそれを正しくやっていますか? ご協力いただきありがとうございます!

+1

私はまず理論アドバイスが必要だと思います。このフォーラムは、アルゴリズムのステップが必要であることを知っている人のためのものです。 –

答えて

1

単純に重み付きサンプル平均です。

重み付けされていないサンプルの平均値がmean(x)であるため、プロポーザルの密度が期待できます。重み付けされたサンプル平均はmean(w * x)であり、目標密度の期待値を与える。しかし、あなたは間違った体重を使用しています。正しいものはw <- 2 * x * exp(-x^2 + x)だと思います。

私があなたの場合は、私自身は体重を計算しません。私は

set.seed(0) 
x <- rexp(1000) ## samples from proposal density 
f <- function(x) 2 * x *exp(-x^2) ## target density 
w <- f(x)/dexp(x) ## importance weights 

mean(x) ## non-weighted sample mean 
# [1] 1.029677 

mean(w * x) ## weighted sample mean 
# [1] 0.9380861 

理論的にはどうなる、重みの期待は1でなければなりません。しかし、実質的にあなただけの1に近づく:

mean(w * x)/mean(w) 
[1] 0.9050671 
:だから

mean(w) 
[1] 1.036482 

は、あなたが正規化されたバージョンをお勧めします

2

私はこのようなことをしたいと思うかもしれません:

x<-rexp(n=1000,r=1) 
fx<-function(x){ 
    return(x^2*exp(-(x^2))) 
} 
gx<-function(x){ 
    return(exp(-x)) 
} 

Ex=mean(x*fx(x)/gx(x))