6. Ders

advertisement
6. Ders
Kabul-Red Yöntemi
X
rasgele
değişkenin
olasılık
yoğunluk
fonksiyonu f ve aldığı değerler kümesi D olsun. V rasgele
değişkenin olasılık yoğunluk g ve aldığı değerlerin kümesi
D olmak üzere V sayıları kolayca üretilebilsin. a > 0 sabiti ve
∀x ∈ D için
f ( x) ≤ a ⋅ g( x)
koşulu sağlansın. Bu durumda aşağıdaki algoritma ile olasılık
yoğunluk fonksiyonu f olan dağılımından sayı üretilebilir.
Algoritma
1) V
sayısı olasılık yoğunluk fonksiyonu
g
olan
dağılımından üretilsin
2) V ’den bağımsız olarak U ~ U ( 0 , 1) üretilsin.
U ⋅ a ⋅ g (V ) ≤ f (V ) ise X = V kabul edilsin yani bir X sayısı
üretilmiş olsun, aksi durumda reddedilsin yani 1. adıma
geçilsin (başka bir ifade ile Y ~ U (0, a ⋅ g (V )) üretilsin.
Y < f (V ) ise X kabul edilsin, aksi durumda reddedilsin.)
1
Yukarıdaki ile üretilen X sayıları için,
P( X ≤ x ) = P(V ≤ x Uag (V ) ≤ f (V ) )
=
=
(
P V ≤ x, U ≤
x
f (V )
ag ( V )
−∞
0
∫(
(
PU ≤
f (V )
ag (V )
∫ du )g (v)dv
∞
f (V )
ag ( V )
−∞
0
f (V )
ag (V )
∫ ( ∫ du )g (v)dv
)
)
x
=
1
f (v)dv
a −∫∞
∞
1
f (v)dv
a −∫∞
x
=
∫ f (v)dv
−∞
olmak üzere, üretilen sayılar olasılık yoğunluk fonksiyonu f
olan dağılımdandır.
Olasılık yoğunluk fonksiyonu f olan dağılımdan X
sayılarını üretmek için yukarıdaki algoritmayı aşağıdaki gibi
de yazabiliriz.
1) Birbirinden bağımsız olarak V ~ g ve U ~ U (0,1) üretilsin.
2) Eğer U ≤
f (V )
ise X = V olsun ve X sayısı çıkılsın.
ag (V )
2
Örnek: X rasgele değişkenin olasılık yoğunluk fonksiyonu
 2 x(2 − x)
f ( x) =  π
0
, 0< x<2
, d.y.
olsun, uygun bir g ( x ) fonksiyonu da
, 0< x<2
 21
g ( x) = 
0
, d.y.
şeklinde seçilsin. Bu durumda a = 2 için
f ( x) ≤ 2 g ( x)
( x ∈ (0,2) ) dır. Buna göre algoritma aşağıdaki gibi olacaktır.
f(x)
1
1
2
x
1. U ~ U (0,1) dağılımından bir U 1 sayısı üretilip V = 2U 1
alınır.
U(0,1) dağılımından bir U 2 sayısı üretilir.
2. Eğer U 2 ≤
2
π
V (2 − V )
yani U 2 ≤
2. 12
X = V alınır ve X sayısı çıkılır.
3
2
π
V (2 − V ) ise
Yukarıdaki algoritmaya dayalı, BASIC programlama dilinde
aşağıdaki program yazılabilir.
X=2*RND
IF RND < (2/3.14)*SQR(X*(2-X)) THEN PRINT X
Bilgisayar programında V sayısını X ile göstermek ( X
adresine yazdırmak) ikinci adımda kolaylık sağlamaktadır.
Karışıklığa yol açmadığı takdirde algoritmanın birinci
adımında g olasılık yoğunluk fonksiyonuna sahip dağılımdan
üretilen V sayısı yerine X yazılabilir. Buna göre algoritma
aşağıdaki şekli alır.
1) Birbirinden bağımsız olarak X ~ g ve U ~ U (0,1)
üretilir.
2) Eğer U ≤
f (X )
ise X kabul edilir aksi halde red
ag ( X )
edilir.
Kolayca sayı üretilebilen yardımcı dağılımın olasılık yoğunluk
fonksiyonu olan g fonksiyonu f fonksiyonuna ne kadar çok
benziyorsa ve grafikleri birbirine yakınsa simülasyon zamanı
kısadır, red olunmalar o kadar az olur. g fonksiyonu
f ( x)
seçildikten sonra a sabiti ∀x ∈ D için a ≥
olacak
g ( x)
f ( x)
şekilde ve
değerleri bire yakın olacak şekilde
ag ( x)
seçilmelidir. Bu şartlar altında g seçildikten sonra a sabiti
f ( x)
a = sup
x∈D g ( x )
f ( x)
olarak seçilebilir (mevcut olduğu taktirde a = max
x∈D g ( x )
olarak seçilebilir).
4
Yukarıdaki örnekte sayı üretilmek istenen dağılımın
olasılık yoğunluk fonksiyonu,
 2 x(2 − x)
f ( x) =  π
0
, 0< x<2
, d.y.
ve yardımcı dağılımın olasılık yoğunluk fonksiyonu
 21
, 0< x<2
g ( x) = 
, d.y.
0
dır.
f ( x)
2
=2
π
g ( x)
x( 2 − x )
olmak üzere, maksimum değerini x = 1 ’de almaktadır.
f (1) 4
a=
=
olarak seçilirse algoritmadaki Uag ( X ) ≤ f ( X )
g (1) π
eşitsizliği
U≤
X (2 − X )
biçiminde olur. Buna göre
algoritma:
1) Birbirinden
bağımsız
olarak
X ~ U (0,2)
ve
U ~ U (0,1) üretilir.
2) Eğer U ≤
X (2 − X ) ise X kabul edilir aksi halde
red edilir.
Buna göre BASIC deyimleri:
X=2*RND
IF RND < SQR(X*(2-X)) THEN PRINT X
Şeklindedir. Bu algoritma (program) ile bir öncekini
karşılaştırmak amacıyla her ikisi ile üretilen 100’er tane X
sayısı için döngü sayılarını gözleyiniz.
5
Örnek:
N (0,1) standart normal dağılımdan sayı üretilmek
istensin. X ~ N (0,1) olmak üzere
1
f ( x) =
2π
e
−
x2
2
, -∞ < x < ∞
dır. Kolayca sayı üretilebilen bir dağılım olarak Cauchy
dağılımı seçilirse
g ( x) =
1
, -∞ < x < ∞
π (1 + x 2 )
dır. Buna göre
x2
f ( x)
π
=
1+ x2 e 2
g ( x)
2
(
)
ifadesi maksimum değerini x = ±1 değerlerinde almak üzere,
f ( x)
2π
a = max
=
x∈R g ( x )
e
olur. Đlgili algoritma ve BASIC dilindeki bilgisayar programı
aşağıdaki gibidir:
1) Bağımsız olarak X , Cauchy dağılımından ve U,
U (0,1) dağılımdan üretilir.
2) Eğer U ≤
(
)
−
e
1+ X 2 e
4
X2
2
ise X kabul edilir aksi
halde red edilir.
X=TAN(3.14*(RND-0.5))
IF RND <SQR(EXP(1)/4)*(1+X^2)*EXP(-X^2/2)
THEN PRINT X
6
Örnek:
Olasılık yoğunluk fonksiyonu
2
 2 e − 12 x , x ≥ 0
f ( x) =  π
 0
, d . y.
olan dağılımdan sayı üretilmek istensin. Dikkat edilirse bu
dağılım standart normal dağılımın sağ yarısıdır. Bu dağılıma
sahip rasgele değişkeni X ile gösterelim.
Kabul-red yöntemine göre bu dağılımdan sayı üretmek
için olasılık yoğunluk fonksiyonu bu dağılımınkine benzeyen
ve kolayca sayı üretilebilen bir dağılım olarak θ = 1
parametreli üstel dağılım seçilsin. Buna göre,
g( x) = e − x , x ≥ 0
dır.
a = max gf (( xx)) = max
x ≥0
x≥0
f ( x)
g ( x)
olmak üzere x = 1 değerinde
Bu durumda a =
f (1)
g (1)
=
2
π
2
π
e
− 12 ( x 2 − 2 x )
maksimum değerine ulaşır.
1
e 2 değerini alır ve birbirinden
bağımsız olarak üretilen X ~ g ve U ~ U (0,1) sayıları için
U≤
f ( x)
a. g ( x )
yani U ≤ e
− 12 ( x −1) 2
ise X kabul edilir. Aşağıdaki
program ile bu dağılımdan sayı üretilebilir.
X= -LOG(RND)
IF RND < EXP (-(X-1)^2) THEN PRINT X
Bu dağılımdan üretilen sayılar kullanılarak standart normal
dağılımdan da sayı üretilebilir. Bu amaçla yazılan bilgisayar
programı aşağıda verilmiştir.
X= -LOG(RND)
IF RND>EXP (-(X-1)^2) THEN GOTO 10
IF RND < 0.5 THEN PRINT X ELSE PRINT –X
10
7
Örnek: Standart normal dağılımın bir d ( d > 0 ) sayısının
sağında
kalan
kısmından
(kuyruğundan)
sayı
üretme
problemini ele alalım. Başka bir ifade ile olasılık yoğunluk
fonksiyonu
ce − 12 x
, x≥d
f ( x) = 
0
, d.y.
olan dağılımdan sayı üretilmek istensin ( c sabiti f
2
bir
olasılık yoğunluk fonksiyonu olacak şekildedir). Kolayca sayı
üretilebilecek yardımcı dağılım olarak ötelenmiş üstel dağılım,
yani olasılık yoğunluk fonksiyonu
e − x + d , x ≥ d
g ( x) = 
, d.y.
0
olan dağılım seçilmiş olsun.
x2
− +x
f ( x)
= ce −d e 2
g ( x)
x2
olmak üzere, −
+ x ifadesi x < 1 için artan x > 1 için
2
azalan olduğundan, 0 < d ≤ 1 , için
f ( x) f (1)
a = max
=
= ce − d e1 / 2
x≥d g ( x)
g (1)
ve d > 1 için
d2
−
f ( x) f (d )
a = max
=
= ce 2
x≥d g ( x)
g (d )
dır. Buna göre algoritmada yer alan Uag ( X ) ≤ f ( X )
eşitsizliği, 0 < d ≤ 1 durumunda
U ≤e
1
− ( X −1) 2
2
ve d > 1 durumunda
1
U ≤ e2
( d −1) 2
e
1
− ( X −1) 2
2
biçiminde olacaktır. Đlgili bilgisayar programı BASIC dilinde
aşağıdaki gibi olabilir.
8
INPUT D
X=-LOG(RND)+D
A=EXP(-0.5*(X-1)^2
IF D<=1 AND RND<A THEN PRINT X
IF D>1 AND RND<A*EXP(0.5*(D-1)^2)
THEN PRINT X
Şimdi başka bir yardımcı dağılım kullanarak sayı üretmeye
çalışalım. Bu amaçla θ = 2 parametreli üstel dağılıma sahip
olan W rasgele değişkenini gözönüne alalım ve
Y = W + d2
rasgele değişkeninin
dağılımını
bulalım.
Y
rasgele
değişkeninin dağılım fonksiyonu
FY ( y ) = P ( Y ≤ y ) = P ( W + d 2 ≤ y )
y 2 −d 2

− 2
2
2
1
−
e
= P (W ≤ y − d ) = 
0
, y≥d
, y < d.
ve olasılık yoğunluk fonksiyonu
2
2
 − y −2 d
, y≥d
g ( y ) =  ye
0
, y < d.
olarak bulunur. Yardımcı dağılım olarak Y ‘nin dağılımı yani
g olasılık yoğunluk fonksiyonuna sahip olan dağılım seçilsin.
Bu dağılımdan
F −1 (U ) = d 2 − 2 ln(1 − U ) , 0 < U < 1
ters fonksiyonu kullanılarak sayı üretilebilir.
−
d2
2
f ( x)
e
=c
g ( x)
x
olmak üzere,
9
−
a = max
x≻d
d2
2
f ( x)
e
=c
g ( x)
d
olarak bulunur. Bu durumda, algoritmadaki
Uag ( X ) ≤ f ( X )
eşitsizliği
X
≤1
d
biçiminde olup, bilgisayar programı aşağıdaki gibi olacaktır.
U
X=SQR(d^2-2*LOG(RND))
IF RND * X /d <=1 THEN PRINT X
Örnek:
B( α , β ) dağılımına sahip
X
rasgele değişkenin
olasılık yoğunluk fonksiyonu
f ( x) =
Γ ( α + β ) α −1
x
(1 − x ) β − 1 , 0 ≤ x ≤ 1
Γ ( α ) Γ (β )
olmak üzere, B( α = 2 , β = 4 ) olan Beta dağılımından sayı
üretelim. Bu durumda,
f ( x ) = 20 x (1 − x ) 3 , 0 ≤ x ≤ 1
olur. g , U(0,1) düzgün dağılımın
olasılık
yoğunluk
fonksiyonu olmak üzere a sabitinin seçimi
f ( x)
a = max
= max 20 x(1 − x) 3
x∈[ 0 ,1] g ( x )
x∈[ 0 ,1]
şeklinde yapılsın. Buna göre, 20 x(1 − x) 3 in türevi alınıp sıfıra
eşitlenirse
x = 1/ 4
olarak bulunur. Bu durumda
f (1 / 4 ) 135
a=
=
değeri Uag ( X ) ≤ f ( X ) eşitsizliğinde
g (1 / 4 ) 64
yazılırsa,
U≤
f (X )
=
ag ( X )
256
27
X (1 − X ) 3
10
elde edilir. Bu dağılımdan sayı üretmek için algoritma ve
bilgisayar programı aşağıdaki gibidir.
1) Birbirinden bağımsız olarak X ~ g ve U ~ U ( 0 , 1)
üretilir.
2) Eğer U ≤
256
27
X (1 − X ) 3 ise X kabul edilir, aksi halde
red edilir.
X=RND
IF RND < 256/27*X(1-X)^3 THEN PRINT X
Örnek:
Γ ( α , β)
X
dağılımına sahip
rasgele değişkenin
olasılık yoğunluk fonksiyonu
−
x α − 1e β
x
f ( x) =
ile verilir.
, x≥0
Γ ( α )βα
Özel olarak α = 3 / 2, β = 1 olan Gamma
dağılımından sayı üretilmek istensin. Bu durumda
2 x1 / 2 e − x
f ( x) =
, x≥0
π
olur. E ( X ) = 3 / 2 olmak üzere yardımcı dağılım olarak
θ = 3 / 2 parametreli üstel dağılım seçilsin. Bu üstel dağılımın
olasılık yoğunluk fonksiyonu
− x
g( x) = 2 e 3 , x ≥ 0
2
3
dır.
a = max
x ≥0
f ( x)
= max
x≥0
g ( x)
3
π
x1 / 2 e
11
− 3x
olmak üzere x = 3 / 2 değerinde
3/ 2
ulaşır. Bu durumda, a = 3
2 π .e
algoritmadaki U ≤
U≤
biçiminde
f ( x)
maksimum değerine
g ( x)
değerini alır. Böylece
f (X )
eşitsizliği,
a.g ( X )
2e 1 / 2 − X3
X e
3
olup,
bu
eşitsizlik
sağlandığında
θ = 3/ 2
parametreli üstel dağılımdan üretilen X sayısı kabul edilir.
Đlgili bilgisayar deyimleri aşağıdaki gibi olabilir.
X= -3/2*LOG(RND)
IF RND< SQR (2*EXP(1)/3)*X^1/2*EXP(-X/3)
THEN PRINT X
12
Download