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