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 PV 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< x2 , d.y. olsun, uygun bir g ( x ) fonksiyonu da 21 g( x) 0 , 0< x 2 , 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 2U1 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 V (2 V ) ise 1 2. 2 X V alınır ve X sayısı çıkılır. 3 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 xD g ( x ) f ( x) olarak seçilebilir (mevcut olduğu taktirde a max xD 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< x2 , 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 x(2 x) g ( x) olmak üzere, maksimum değerini x 1’de almaktadır. f (1) 4 olarak seçilirse algoritmadaki Uag ( X ) f ( X ) a g (1) eşitsizliği U X (2 X ) biçiminde olur. Buna göre algoritma: 1) Birbirinden bağımsız U ~ U (0,1) üretilir. olarak X ~ U (0,2) ve 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 1 g ( x) , - 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 xR 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 1 x2 2 e 2 , x0 f ( x) , d . y. 0 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 x 0 f ( x) g ( x) max 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 1 2 ce 2 x , xd f ( x) 0 , d.y. olan dağılımdan sayı üretilmek istensin ( c sabiti f 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ı değişkeninin dağılım fonksiyonu bulalım. FY ( y ) P (Y y ) P ( W d 2 y ) y 2 d 2 1 e 2 2 2 P(W y d ) 0 Y rasgele , yd , y < d. ve olasılık yoğunluk fonksiyonu y2 d 2 ye 2 , yd g ( y) , y < d. 0 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 xd d2 2 f ( x) e c g ( x) d olarak bulunur. Bu durumda, algoritmadaki Uag ( X ) f ( X ) eşitsizliği U X 1 d biçiminde olup, bilgisayar programı aşağıdaki gibi olacaktır. 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 64 g (1 / 4 ) 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: ( , ) dağılımına sahip X rasgele değişkenin olasılık yoğunluk fonksiyonu x 1e x f ( x) ile verilir. , x0 ( ) Özel olarak 3 / 2, 1 olan Gamma dağılımından sayı üretilmek istensin. Bu durumda 2 x1 / 2 e x f ( x) , x0 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 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 sağlandığında 3 / 2 parametreli üstel dağılımdan üretilen X sayısı kabul edilir. İlgili bilgisayar deyimleri aşağıdaki gibi olabilir. biçiminde olup, bu eşitsizlik X= -3/2*LOG(RND) IF RND< SQR (2*EXP(1)/3)*X^1/2*EXP(-X/3) THEN PRINT X 12