Sabtu, 12 September 2009

FUNGSI DISTRIBUSI DALAM TEKNIK SAMPLING

tugas kuliah pada tanggal 9september 2009
1. Uniform (a,b)
Fungsi Distribusi Uniform
Function Uniform (a,b : double) : double;
Var u : double;
Begin
u := random;
Uniform := (b-a) * u + a;
End;

2. eksponential
Function Eksponensial (beta : double) : double;
Var u : double;
Begin
u := random;
Eksponensial := -beta * ln(u);
End;

3. normal
Procedure Normal (mean,variance : double ; Var z1,z2 : double);
Var u1,u2,v1,v2,w,y,x1,x2 : double;
Begin
Repeat
u1 := random;
u2 := random;
v1 := 2 * u1 – 1;
v2 := 2 * u2 – 1;
w := sqr(v1) + sqr(v2);
if w <= 1 then
begin
y := sqrt ((-2*ln(w))/w);
x1 := v1 * y;
x2 := v2 * y;
z1 := sqrt (variance) * x1 + mean;
z2 := sqrt (variance) * x2 + mean;
end
Until w <= 1;
End;

4. lognormal
procedure lognormal (mean,varr : double;
Var zln1,zln2 : double);
Var y1, y2 : double;
begin
Normal (mean,varr,y1,y2);
zln1 := exp(y1);
zln2 := exp(y2);
end;

5. weibul
Function Weibull (alfa,beta: double) : double;
Var u,z : double;
Begin
u := random;
z := -ln(u);
Weibull := beta * exp (ln(z)/alfa);
End;

6. t-student
function tdistribution(m:integer):double;

Label r2;
Var v,x,r,s,c,a,f,g,mm : real;
begin
mm:=0;
if m < 1 then
begin
writeln('impermissible degrees of freedom.');
halt;
end;
if (m mm) then
begin
s:=m;
c:=-0.25*(s+1);
a:=4/power((1+1/s),c);
f:=16/a;
if m>1 then
begin
g:=s-1;
g:=power(((s+1)/g),c)*sqrt((s+s)/g);
end else
g := 1;
mm:=m;
end;
r2:repeat
r:=random;
until r > 0.0;
x:=(2*random-1)*g/r;
v:=x*x;
if (v>(5-a*r)) then
begin
if ((m>=3) and (r*(v+3)>f)) then goto r2;
if (r>power((1+v/s),c)) then goto r2;
end;
tdistribution :=x;
end;

begin
tipe11[1]:=0.2;
tipe11[1]:=0.3;
tipe11[1]:=0.5;
tipe11[1]:=0.8;
tipe11[1]:=1.0;
end.

Minggu, 06 September 2009

MENGESTIMASI PARAMETER

Pembuatan simulator adalah suatu system perlu dilakukan dalam pengamatan kerja system yang akan disimulasikan ke dalam computer. Saat ini akan dibuat simulator untuk menghitung bias taksiran dari suatu data sample. Sebelumnya harus ditentukan terlebih dahulu distribusi data sebagai pola parameter input simulator.
Dalam menentukan distribusi data, yang pertama kali harus dilakukan adalah menduga distribusi yang paling mirip dengan pola-pola yang ada dalam model matematika seperti Uniform, Exponential, Normal, Gamma, dan lain-lain yang berdistribusi kontinu. Atau data yang berpola diskrit seperti Uniform, Binomial, Poisson, Geometri, dan lain-lain. Setelah diketahui gambaran kasar pola datanya, selanjutnya ditentukan besarnya nilai parameter distribusi. Dan yang terakhir digunakan hipotesa statistic untuk menarik kesimpulan apakah nilai dugaan sama dengan nilai parameter.
Fungsi simulasi untuk mengetahui apakah nilai dugaan sama dengan nilai parameter yang diduga maka bisa dengan cara menghitung nilai ekspektasi dari nilai dugaan tersebut. Jika nilai ekspektasi dari dugaan sama dengan nilai parameter yang sebenarnya artinya nilai dugaan tersebut bersifat unbias. Sebaliknya jika nilai ekspektasi dari dugaan berbeda dengan nilai parameter yang sebenarnya artinya nilai dugaan tersebut bias.
Pengertian di atas tentang penaksiran parameter, sekarang akan dicoba untuk membuat simulator untuk menaksir bias dari suatu nilai dugaan tertentu, yaitu apakah varians sample sama dengan varians populasi dengan menggunakan perhitungan rumus yang ada. Data sample yang diambil secara random ditetapkan berdistribusi normal dengan rata-rata 60 dan varians 1. Seperti biasa sebelum dibuat program komputernya kita harus membuat algoritmanya terlebih dahulu. Berikut ini algoritmanya :
1.Mulai
2.Dibangkitkan data x berdistribusi normal dengan rata-rata 60 dan varians 1 sebanyak 100 sebagai populasi
3.Diambil sample sebanyak 10 buah kemudian dihitung dan
4.Diulangi langkah no 3 sebanyak 1000 kali
5.Dihitung bias dari S12 dan S22
6.Dibandingkan hasil dari langkah no 5
7.Selesai



Langkah simulasi menggunakan program minitab :

1.Simpan makro minitab yang berisi tentang perintah pembangkitan data randommenggunagan bootsrap
Misal :
d:\bootvar.txt

Isi makro bootvar :

macro
bootvar x
mconstant i n b lower upper stat_b se_b
mcolumn x y stat
let n=10
let b=1000
do i=1:b
sample n x y;
replacement.
let stat(i)=stde(y)**2
enddo
let stat_b=mean(stat)
let se_b=stde(stat)
sort stat stat
let lower=stat(25)
let upper=stat(975)
print stat_b se_b lower upper
endmacro

2.Dalam minitab tuliskan perintah enable command
3.Tulis
MTB > random 100 c1;
Subs > normal 60 1.0.
4.Panggil makro untuk melakukan resampling 10 data sebanyak 1000 kali
MTB > %d:\bootvar.txt c1

Maka akan tampil di minitab hasilnya sbb :
stat_b 1.12677
se_b 0.584805
lower 0.307798
upper 2.46402

stat_b adalah rata-rata dari sampling sebanyak 10 data yang diresampling sebanyak 1000 kali.
Se_b adalah varians dari dari sampling sebanyak 10 data yang diresampling sebanyak 1000 kali.
Lower adalah bahwa 25 data terbawah berada pada nilai 0,307798
Upperb adalah bahwa 25 data teratas berada pada nilai 2,46402

setelah melihat nilai varians daripada populasi yang ada yaitu sebesar 1 dengan nilai statistik varians yaitu sebesar 0,5848 maka tidak terbukti bahwa varians statistik unbiased terhadap varians populasi

tugas simulasi mencari nilai Phi

Matematika adalah ilmu yang kita ketahui sangat berpengaruh dalam berbagai bidang ilmu.banyak sekali materi-materi yang digunakan, yaitu salah satunya adalah macam-macam bentuk bidang datar contonya adalah lingkaran dan juga persegi. Pada setiap bidang datar selalu mempunyai luasan dan keliling dengan rumus perhitungan tertentu yang berbeda-beda satu sama yang lainnya. Apabila kita bandingkan antara luas dengan keliling bangun lingkaran dan persegi dengan nilai jari-jari lingkaran dan nilai sisi persegi juga diketahui maka kita dapat menduga nilai phi. Dimana nilai phi selalu dipakai dalam menghitung luas lingkaran itu. Seperti yang sudah diketahui selama ini nilai phi yang sebenarnya sama dengan 3,14 atau 22/7. Maka kita dapat membuat suatu simulasi dalam menaksir nilai phi.

Untuk membuat suatu simulasi dapat dibuat dengan menggunakan program Pascal, dengan terlebih dahulu harus dibuat suatu algoritmanya. Berikut algoritma program untuk menghitung nilai phi1 :
1. Mulai
2. Ditetapkan i:=0
3. i:=i+1
4. Dibangkitkan 10000 titik
x ~ U(0,1) dan y ~ U(0,1)
5. Ditetapkan nilai phi:=4*m/n
6. Jika i < 1000 kembali ke langkah 3
7. Nilai phi sama dengan jumlahan dari tiap phi dibagi 1000
8. Ditulis nilai phi
9. Selesai

Dari susunan algoritma tersebut maka dibuat program simulasinya dengan program Pascal sebagai berikut :
program phi1;
uses wincrt;
var x,y,p:real;
i,m,n:integer;
begin
randomize;
n:=10000;
m:=0;
for i:=1 to n do
begin
x:=random;
y:=random;
if(x*x+y*y)<=1 then m:=m+1;
end;
p:=4*m/n;
writeln(p);
end.

Setelah program tersebut selesai dijalankan dengan menekan tombol ctrl+F9 dan diperoleh nilai phi yaitu sebesar 3,1628000000E+00. Sehingga mendapatkan nilai phi yang dihasilkan masih jauh dari nilai phi yang sebenarnya. Nilai phi yang dihasilkan ini bergantung pada algoritma dan program yang dibuat. Sehingga langkah selanjutnya adalah akan dibuat program baru tetapi yang lebih detail dengan menambah variabel s yaitu sebagai banyaknya sampel yang diambil diulang sampai 1000 kali. Berikut adalah contoh programnya :

program phi2;
uses wincrt;
var x,y,p,s:real;
j,i,m,n:integer;
begin
s:=0;
for i:=1 to 1000 do
begin
randomize;
n:=10000;
m:=0;
for i:=1 to n do
begin
x:=random;
y:=random;
if(x*x+y*y)<=1 then m:=m+1;
end;
p:=4*m/n;
s:=s+p;
end;
p:=s/1000;
writeln(p);
end.

Hasil dari program tersebut jika dijalankan diperoleh nilai phi yaitu sebesar 3,1415904000E+00. Nilai hasil tersebut sudah mendekati nilai phi yang sebenarnya. Artinya untuk membuat suatu program simulasi dalam menaksir suatu nilai, sifatnya harus trial and error sampai diperoleh nilai yang paling mendekati nilai yang sebenarnya.