Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

Nama : Haniatur Rosyidah

NIM : 24010213120031
Kelas : A

TUGAS TEKNIK SIMULASI

1. Berdasarkan sintaks pada pertemuan minggu 9 (Pembangkitan Normal Baku


menggunakan metode Box Muller), buatlah sintaks program untuk simulasi
pembangkitan data berdistribusi:
a. Normal (miu,sigma),
b. Chi kuadrat (db=r),
c. t (db = v),
d. F (db1,db2)

2. Buatlah program R untuk mensimulasikan perhitungan peluang kumulatif dari distribusi


:
a. normal dengan mean dan standar deviasi tertentu (dengan n yg berbeda)
b. normal chi kuadrat dengan db tertentu (dengan n yg berbeda)
Validasi Hasilnya dengan hasil penghitungan dari fungsi bawaan R

Penyelesaian :

1.a. Pembangkitan data berdistribusi Normal ( miu, sigma ) dengan metode Box Muller

Algoritma :
1. Bangkitkan U1 dan U2 dari distribusi Uniform (0,1)
2. Tentukan

Z1 2 ln U1 cos 2 U 2
Z2 2 ln U1 sin 2 U 2
3. Hitung transformasi variabel
X Z

Sintaks :
normal=function(n,mu,sigma)
{
u1=runif(n,0,1)
u2=runif(n,0,1)
z1=sqrt(-2*log(u1))*cos(2*pi*u2)
z2=sqrt(-2*log(u1))*sin(2*pi*u2)
z=c(z1,z2)
x=mu+(sigma*z)
cat('========================================================\n')
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

cat('Data Normal Hasil Simulasi dengan rata-


rata=',mu,'varian=',sigma^2,'\n')
cat('========================================================\n')
print(x)
cat("=======================================================\n")
cat(" Uji kecocokan Distribusi Normal\n")
cat("=======================================================\n")
ks.test(x,"pnorm",mu,sigma) ## uji kolmogorov
}
Contoh dan Validasi :
hani=normal(50,2,4)
hani
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

Untuk uji validasi, hipotesis yang digunakan adalah H0 : data berdistribusi normal , H1 :
data tidak berdistribusi normal.
Pada taraf signifikansi = 5% , H0 diterima karena nilai p-value = 0.3042 > = 0.05 .
sehingga data yang dibangkitkan berdistribusi normal.

1.b. Pembangkitan data berdistribusi Chi Kuadrat ( db = r ) dengan metode Box Muller

Algoritma :
1. Bangkitkan U1 dan U2 dari distribusi Uniform (0,1)
2. Tentukan
= 2log(1) cos(22)
3. Hitung transformasi variabel
y = z2
4. Hitung = =1

Sintaks :

rchikuadrat=function(n,r)
{
x=rep(0,n)
for(i in 1:n){
u1=runif(n,0,1)
u2=runif(n,0,1)
z=sqrt(-2*log(u1))*cos(2*pi*u2)
d=z^2
x[i]=sum(d)
}
cat('=====================================\n')
cat('Data Simulasi Chikuadrat dengan df=',r,'\n')
cat('=====================================\n')
print(x)
## Permeriksaan Distribusi Data Hasil Simulasi
cat("================================================\n")
cat(" Uji kecocokan Distribusi Chikuadrat\n")
cat("================================================\n")
ks.test(x,"pchisq",df=r) ## uji kolmogorov
}

Contoh dan Validasi :


rchikuadrat(50,6)
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

Untuk uji validasi, hipotesis yang digunakan adalah H0 : data berdistribusi Chisquare , H1 :
data tidak berdistribusi Chisquare.
Pada taraf signifikansi = 5% , H0 diterima karena nilai p-value = 0.7407 > = 0.05 .
sehingga data yang dibangkitkan berdistribusi Chisquare.

1.c. Pembangkitan data berdistribusi t (db = v) dengan metode Box Muller

Algoritma :
1. Bangkitkan Z dari distribusi normal baku
2. Bangkitkan X dari distribusi ChiKuadrat derajat bebas v seperti pada
program di poin b.
3. Lakukan transformasi variabel

=
/
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

Sintaks :

random_t=function(n,v)
{
##Pembangkitan Data Normal Baku
u1=runif(n,0,1)
u2=runif(n,0,1)
z1=sqrt(-2*log(u1))*cos(2*pi*u2)
z2=sqrt(-2*log(u1))*sin(2*pi*u2)
z=c(z1,z2)
##Pembangkitan Data Chikuadrat df=v
x=rep(0,n)
for(i in 1:n){
u1=runif(v,0,1)
u2=runif(v,0,1)
z1=sqrt(-2*log(u1))*cos(2*pi*u2)
z2=sqrt(-2*log(u1))*sin(2*pi*u2)
d=c(z1,z2)
d=d^2
x[i]=sum(d)
}
##Transformasi variabel
t=z/sqrt(x/v)
cat('=====================================\n')
cat('Data Simulasi Distribusi t dengan df=',v,'\n')
cat('=====================================\n')
print(t)
## Pemeriksaan Distribusi Data Hasil Simulasi
cat("======================================================
=\n")
cat(" Uji kecocokan Distribusi t\n")
cat("======================================================
=\n")
ks.test(t,"pt",df=v) ## uji kolmogorov
}
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

Contoh dan Validasi :


random_t(50,4)

Untuk uji validasi, hipotesis yang digunakan adalah H0 : data berdistribusi t , H1 : data tidak
berdistribusi t.
Pada taraf signifikansi = 5% , H0 diterima karena nilai p-value = 0.3256 > = 0.05 .
sehingga data yang dibangkitkan berdistribusi t.
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

1.d. Pembangkitan data berdistribusi F ( db1, db2 ) dengan metode Box Muller

Algoritma :
1. Bangkitkan x1 yaitu data berdistribusi chi-kuadrat derajat bebas v1
2. Bangkitkan x2 yaitu data berdistribusi chi-kuadrat derajat bebas v2
3. Lakukan transformasi variabel yaitu
1/1
= 2/2

Sintaks :

random_F=function(n,v1,v2)
{
##Pembangkitan Data Chikuadrat df=v1
x1=rep(0,n)
for(i in 1:n){
u1=runif(v1,0,1)
u2=runif(v1,0,1)
z=sqrt(-2*log(u1))*cos(2*pi*u2)
d=z^2
x1[i]=sum(d)
}
##Pembangkitan Data Chikuadrat df=v2
x2=rep(0,n)
for(i in 1:n){
u1=runif(v2,0,1)
u2=runif(v2,0,1)
z=sqrt(-2*log(u1))*cos(2*pi*u2)
d=z^2
x2[i]=sum(d)
}
##Transformasi variabel
f=(x1/v1)/(x2/v2)
cat('=====================================\n')
cat('Data Simulasi Distribusi F dengan df1=',v1,'dan
df2=',v2,'\n')
cat('=====================================\n')
print(f)
cat("====================================================\n")
cat(" Uji kecocokan Distribusi F\n")
cat("====================================================\n")
ks.test(f,"pf",df1=v1,df2=v2) ## uji kolmogorov
}

Contoh dan Validasi :

random_F(100,4,3)
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

Untuk uji validasi, hipotesis yang digunakan adalah H0 : data berdistribusi F , H1 : data tidak
berdistribusi F.
Pada taraf signifikansi = 5% , H0 diterima karena nilai p-value = 0.9102 > = 0.05 .
sehingga data yang dibangkitkan berdistribusi F.
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

2.a. Perhitungan Peluang Distribusi Normal

Algoritma
1. Bangkitkan X dari Uniform (a,b)
2. Tentukan fungsi densitas distrribusi normal
3. Hitung y, yaitu rata-rata dari fungsi densitas
4. Hitung int = (b-a)*y
Sintaks Program

pnorm_MC = function(n,a,b,mu,sigma)
{
x=runif(n,a,b)
fx=(1/sigma*sqrt(2*pi))*exp(-((x-mu)^2)/2*(sigma^2))
y=mean(fx)
int=(b-a)*y
return(int)
}
Simulasi

pnorm_MC(100,0,4,2,5)

Validasi

pnorm(4,2,5)-pnorm(0,2,5)

Nilai dari pnorm(4,2,5) - pnorm(0,2,5) = 0.3108435 , nilai ini hampir sama dengan nilai
pnorm_MC(100,0,4,2,5) = 0.3152061 sehingga bisa disimpulkan bahwa hasil yang
diperoleh dari pendekatan monte carlo valid.
Nama : Haniatur Rosyidah
NIM : 24010213120031
Kelas : A

2.b. Perhitungan Peluang Distribusi Chi Kuadrat

Algoritma
1. Bangkitkan X dari Uniform (a,b)
2. Tentukan fungsi densitas distrribusi Chi Kuadrat
3. Hitung y, yaitu rata-rata dari fungsi densitas
4. Hitung int = (b-a)*y
Sintaks Program

pchisq_MC = function(n,a,b,v)
{
x=runif(n,a,b)
fx=(1/(2^(v/2)*gamma(v/2)))*x^(v/2-1)*exp(-x/2)
y=mean(fx)
int=(b-a)*y
return(int)
}
Simulasi
pchisq_MC(100,0,4,2)

Validasi
pchisq(4,2)-pchisq(0,2)

Nilai dari pchisq(4,2) - pchisq(0,2) = 0.8646647 , nilai ini hampir sama dengan nilai
pchisq_MC(100,0,4,2) = 0.8662956 sehingga bisa disimpulkan bahwa hasil yang
diperoleh dari pendekatan monte carlo valid.

You might also like