Random Number Generator + Random Variate Generator
Random Number Generator + Random Variate Generator
0 1 x
Karena kita tidak bisa membangkitkan Random
Number yang “sesungguhnya” secara numerik,
maka agar generator kita dapat menghasilkan tiruan
yang semirip mungkin dengan Random Number
sesungguhnya, beberapa syarat harus dipenuhi :
• Linear Congruential
Generator (LCG)
• Start with a four-digit positive integer Z0 and square it to
obtain an integer with up to eight digits : if necessary, append
zeros to the left to make it exactly eight digits
• Take the middle four digits of this eight digit number as the
next four digit number, Z1.
• Place a decimal point at the left of Z 1 to obtain first U(0,1)
random number U1
• Square Z1, take the middle four digits as Z 2 and place a
decimal point at the left Z2 to obtain U2
• And so on ……
i Zi Ui (Zi)2
0 4 4 16
1 6 6 36
2 6 6 36
3 6 6 ?
i zi zi2 ui
0 13
1 13 169 16
2 16 256 25
3 25 625 62
4 62 3844 84
5 84 7056 5
6 5 25 25
7 25 625 62
8 62 3844 84
9 84 7056 5
10 5 25 25
11 25 625 62
12 62 3844 84
13 84 7056 5
14 5 25 25
15 25 625 62
16 62 3844 84
17 84 7056 5
18 5 25 25
19 25 625 62
20 62 3844 84
i Zi Ui (Zi)2
0 7182 - 51581124
Ui
• Kalau dua digit Ui, maka ui
99
Ui
• Kalau tiga digit Ui, maka ui
999
• Demikian seterusnya….
Linear Congruential Generator
(LCG)
Formula pembangkit metode LCG adalah sbb:
xn (axn 1 c) mod m
• Panjang kerandoman m, yaitu dari 0 s/d m-1
• xn akan bernilai antara 0 s/d m-1, sehingga untuk
membangkitkan bilangan random antara 0 dan 1,
maka digunakan formulasi un = xn/m
• Jika c = 0 maka dinamakan sebagai Multiplicative
LCG (atau MLCG)
Contoh LCG
• Anggap bahwa
– komputer dengan 32 bit, maka m=231-1.
– digunakan MLCG dan
– diset a=16807
• Maka, dengan menentukan nilai awal x0=12345 dan dua
bilangan random secara terurut adalah sbb:
x1= 16807 x 12345 mod m
= 207482415
u1= x1/m
= 0.0966165285
• Transformasi Invers
• Composisition
• Convolution
• Acceptance Rejection (AR)
• Adaptive Acceptence Rejection (AAR)
• Slice sampling
Transformasi Invers
• Syarat Transformasi Invers
– Fungsi mempunyai CDF yang close form
• Metodenya adalah sbb:
F(x) F ( x ) 1 exp( x)
1
u 1 exp( x)
u 1 u exp( x )
1
x ln(1 u )
1
ln(u )
0 x
Maka x dibangkitkan dengan cara :
x
F ( x) 1 e
x Jika dari LCG
U 1 e diperoleh U = 0.6, maka
x :
1 U e
x 1.ln (1 0.6)
ln (1 U ) x
0.916
x . ln (1 U )
Composition (Mixture form)
• Perhatikan bentuk fungsi berikut
f(x)
Half Normal
I II Exponential
f ( x) k1 f1 ( x) I ( ,0] k2 f 2 ( x) I[0, )
Dimana data di daerah I dibangkitkan dengan Normal dan
di daerah II dengan Exponential
Contoh Composition -1-
1 2
f ( x) exp(1 x) I ( ,0) exp(2 x) I (0, )
2 2
Contoh Composition -2-
f1 ( x) 1, 0 x 1
f 2 ( x) exp(( x 1)), x 1
I
II
f ( x ) 1, 0 x 1
0
1
f ( x) 0.5 f1 ( x) I (0,1] 0.5 f 2 ( x) I (1, )
Convolution
Misalkan sebuah fungsi
Erlang(m, ), maka cara
pembangkitan datanya
adalah dengan mengkon-
volusikan data bangkitan
Exponential().
Acceptance Rejection (AR)
• Sangat bagus untuk fungsi yang tidak jelas pdf atau bukan
• Dapat mengakomodasikan fungsi yang tidak mempunyai CDF close form
• Caranya adalah sbb:
tx
f(x) Reject
f(x)
Accept
rx
x
Algoritma AR
• Bangkitkan x ~ rx
• Bangkitkan u ~ U(0,1)
f ( x)
• If u
t ( x) then
Accept x
Else
Reject x
Contoh AR -1-
• Bangkitkan data dari pola berikut ini
y
1
• Bangkitkan x ~
U(0,1)
Y=x • Bangkitkan y ~
U(0,1)
• If y ≤ x then
Accept x
Else Reject x
x
0 1
Adaptive AR
Adaptive AR
Slice Sampling
• Sampling dilakukan dengan dua sisi, yaitu sisi
horisontal dan sisi vertikal.
• Sisi vertikal dilakukan random nilai dari NOL
sampai ketinggian densitasnya
• Sisi horisontal dilakukan dengan acuan
‘densitas setimbang’, yaitu dilakukan random
nilai berdasar pada ketinggian densitas tertentu
diambil batas kiri dan batas kanannya.
Slice Sampling
Suatu contoh pergerakan sampling selama proses Slice Sampling
Slice Sampling
There are also fancier versions that will automatically grow
the bracket if it is too small. Radford Neal’s paper discusses
this and many other ideas.
Radford M. Neal, “Slice Sampling”, Annals of Statistics 31,
705-767, 2003.
Iain Murray has Matlab code on the web. I have Python
code on the web also. The Matlab statistics toolbox
includes a slicesample() function these days.
It is easy and requires almost no tuning. If you’re currently
solving a problem with Metropolis-Hastings, you should
give this a try. Remember, the “best” M-H step size may
vary, even with a single run!
Manfaat RVG dalam
Numerical (Monte Carlo) Integrartion
Numerical Integration
(Low dan Kelton, 2000)
(b a)
a
g ( x)dx
(b a)
I
• Diketahui bahwa E[Y ] Y ( n)
• Sehingga nilai integral I dapat didekati secara
numerik oleh n n
Y i g(x ) i
Y ( n) i
(b a) i
n n
• Berarti, bangkitkan data x1 , x2 ,..., xyang
n mempunyai
distribusi Uniform dan masukkan nilainya ke fungsi
g(x) jumlahkan nilainya dan hitung rata-ratanya
sebagai taksiran nilai integral yang sedang dicari.
• Berapa banyak data yang harus dibangkitkan?
• Data harus dibangkitkan sebanyak mungkin sampai nilai rata-
ratanya mencapai titik konvergen.
16
14
12
R a ta -ra ta
10
0
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99
Ite rasi
Burn-in
Pengujian Kesesuaian Distribusi Data
(Goodness-of-fit Test)
48
Normalitas Data
49
Kenormalan Data
• Symmetric (mean=median=mode)
• Plot deskriptif data
– Plot pada kertas Normal membentuk diagonal
– Histogram cenderung simetri
– Bersifat mesokurtic
– Kurtosis mendekati nilai 0.
• Uji kenormalan data (Kolmogorov-Smirnov)
– H0 adalah “Data berdistribusi Normal”.
– H0 tidak ditolak atau P_value > α
Demo MINITAB
51
Menormalkan data
• Transformasi Box-Cox normal
– Contoh: Exponential normal
Uniform normal?
• Grouping / sub-grouping
– Homogen di setiap sub-group
– gunakan mean sub-group normal
– Contoh: generate di MINITAB
Kolmogorov-Smirnov
Contoh
54
Implementasi Numerik
data frek. frek.kum.
1
data frek
kumulatif Relatif
1 1 2 2 2/11
2
2 2 4 4/11
2
3 3 3 7 7/11
3 4 2 9 9/11
3 5 1 10 10/11
4 9 1 11 1
4 jumlah 11
5
9
12
11
10
11
8
11
6 Series2
11
4
11
2
11
0
1 2 3 4 5 9
Demo MINITAB
57