contoh simulasi yang lain

Minggu, 04 Oktober 2009


Pembangkit angka acak



Interface
Uses util, tipe;


{Type
tipe1 = array[1..5] of double;}
Var
tipe11 : tipe1;
{ 1 } Function Uniform (a,b : double) : double;
{ 2 } Function Eksponensial (beta : double) : double;
{ 3 } Function Erlang (n : longint ; beta : double) : double;
{ 4a} Function Gamma (alfa,beta : double) : double;
{ 4b} Function InvGamma (alfa,beta : double) : double;


{ 5 } Function Weibull (alfa,beta: double) : double;


{ 6a} Procedure Normal (mean,variance : double ; Var z1,z2 : double);
{ 6b} procedure lognormal (mean,varr : double; Var zln1,zln2 : double);


{ 7 } Function Beta (alfa1,alfa2,a,b : double) : double;
{ 8 } Function Bernoulli (p : double) : double;
{ 9 } Function Acak_Diskrit_Sebarang (n : longint ; x,probd : tipe1) : double;
{10 } Function Randi (n : longint ; probd : tipe1) : longint;
{11 } Function Binomial (n : longint ; p : double) : double;
{12 } Function Geometri (p : double) : double;
{13 } Function Binomial_Negatip (n : longint ; p : double) : double;
{14 } Function Poisson (beta : double) : double;
{15 } Function tdistribution(m:integer):double;


Implementation


Function Uniform (a,b : double) : double;
Var u : double;
Begin
u := random;
Uniform := (b-a) * u + a;
End;




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




Function Erlang (n : longint ; beta : double) : double;
Var u,sum : double;
i : longint;
Begin
sum := 1;
for i:=1 to n do
begin
u := random;
sum := sum * u;
end;
Erlang := -beta * ln(sum);
End;




Function Gamma (alfa,beta : double) : double;
Var selesai : boolean;
a,b,u,p,y,q,teta,d,u1,u2,v,w,z : double;
Begin
if alfa < 1 then
begin
b := 1 + alfa/exp(1);
Repeat
selesai := false;
u := random;
p := b * u;
if p > 1 then
begin
y := -ln((b-p)/alfa);
u := random;
if exp((alfa-1)*ln(y)) >= u then
begin
Gamma := beta * y;
selesai := true
end
end
else
begin
y := exp (ln(p)/alfa);
u := random;
if exp(-y) >= u then
begin
Gamma := beta * y;
selesai := true
end
end
Until selesai;
end
else
if (alfa > 0.99999999) and (alfa < 1.0000001) then
begin
y := Eksponensial (1);
Gamma := beta * y;
end
else
begin
a := 1 / sqrt(2*alfa-1);
b := alfa - ln(4);
q := alfa + 1/a;
teta := 4.5;
d := 1 + ln(teta);
Repeat
selesai := false;
u1 := random;
u2 := random;
v := a * ln(u1/(1-u1));
y := alfa * exp(v);
z := sqr(u1) * u2;
w := b + q * v - y;
if (w+d-teta*z >= 0) then
begin
Gamma := beta * y;
selesai := true;
end
else
if w >= ln(z) then
begin
Gamma := beta * y;
selesai := true
end
Until selesai;
end
End;


Function InvGamma(alfa,beta : double) : double;
Var temp : double;
begin
temp := gamma(alfa,beta);
InvGamma := sqrt(1/temp);
end;


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




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;




Function Beta (alfa1,alfa2,a,b : double) : double;
Var u1,u2,y : double;
Begin
u1 := Gamma (alfa1,1);
u2 := Gamma (alfa2,1);
y := u1/(u1+u2);
Beta := a + (b-a) * y;
End;




Function Bernoulli (p : double) : double;
Var u : double;
Begin
u := random;
if u <= p then
Bernoulli := 1
else
Bernoulli := 0;
End;




Function Acak_Diskrit_Sebarang (n : longint ; x,probd : tipe1) : double;
Var u : double;
i : longint;
Begin
u := random;
for i:=1 to n-1 do
if u <= probd[i] then
begin
Acak_Diskrit_Sebarang := x[i];
exit
end;
Acak_Diskrit_Sebarang := x[i];
End;




Function Randi (n : longint ; probd : tipe1) : longint;
Var u : double;
i : longint;
Begin
u := random;
for i:=1 to n-1 do
if u <= probd[i] then
begin
Randi := i;
exit
end;
Randi := n;
End;




Function Binomial (n : longint ; p : double) : double;
Var sum,u : double;
i : longint;
Begin
sum := 0;
for i:=1 to n do
begin
u := Bernoulli(p);
sum := sum + u;
end;
Binomial := sum
End;




Function Geometri (p : double) : double;
Var u : double;
Begin
u := random;
Geometri := ln(u) / ln(1-p);
End;




Function Binomial_Negatip (n : longint ; p : double) : double;
Var sum,u : double;
i : longint;
Begin
sum := 1;
for i:=1 to n do
begin
u := random;
sum := sum * u;
end;
Binomial_Negatip := ln(sum) / ln(1-p);
End;




Function Poisson (beta : double) : double;
Var lamda,a,b,u : double;
i : longint;
Begin
lamda := 1/beta;
a := exp(-lamda);
b := 1; i := 0;
Repeat
u := random;
b := b * u;
if b < a then
Poisson := i
else
i := i + 1;
Until b < a;
End;


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;


function tdistribution(m:integer):double;
{ created :
based on Principles of Random Variate Generation
by John Dagpunar, 1988
published by Claredon Press - OXFORD


please check if any other theory of t-distribution }


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.


Fungsion Bernauli



program bernoul;
uses wincrt;
Function Bernoulli(p : real) : real;
Var u : real;
Begin
u:= random;
if u <= p then
Bernoulli := 1
else
Bernoulli := 0;
End;
var i,n:integer;
s,p:real;
begin
write('berapa peluang p =');read(p);
write('berapa data = ');read(n);
for i:=1 to n do
begin
s:=bernoulli(p);
writeln;
write('data',s:10:0);
end;
end.


Fungsion binomial

uses wincrt;
Function Binomial_Negatip (n : longint ; p : real) : real;
Var sum,u : real;
i : longint;
Begin
sum := 1;
for i:=1 to n do
begin
u := random;
sum := sum * u;
end;
Binomial_Negatip := ln(sum) / ln(1-p);
End;
var p,x:real;
j,n,m:integer;
begin
write('Banyak data yang akan dibangkitkan =');read(m);
write('Peluang suatu kejadian =');read(p);
write('Kejadian ke- =');read(n);
for j:=1 to m do
begin
x:=binomial_negatip(n,p);
writeln('data =',x:10:0);
end;
end.


Fungsion log normal

uses wincrt;
procedure normal(mean,variance:real; Var z1,z2 : real);
Var u1,u2,v1,v2,w,y,x1,x2: real;
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;
procedure lognormal (mean,varr : real; Var zln1,zln2 : real);
Var y1, y2 : real;
begin
Normal (mean,varr,y1,y2);
zln1 := exp(y1);
zln2 := exp(y2);
end;
var a,b,c,d,e,f:real;
i,n:integer;
begin
write('mean =');read(a);
write('variance =');read(b);
write('
write('berapa data yang akan dibangkitkan ?');read(n);
for i:=1 to n do
begin
lognormal(a,b,c,d);
writeln('zln1 =',e);
writeln('zln2 =',f);
write('-------------------');
end;


Fungsion normal

uses wincrt;
procedure normal(mean,variance:real; Var z1,z2 : real);
Var u1,u2,v1,v2,w,y,x1,x2: real;
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;
var p,o,i,u:real;
f,n:integer;
begin
write('mean =');read(p);
write('variance =');read(o);
write('berapa data yang dibangkitkan ?');read(n);
for f:=1 to n do
begin
normal(p,o,i,u);
writeln('z1 =',i:10:2);
writeln('z2 =',u:10:2);
writeln('---------------------------------');
end;


Fungsion Bublesort

program sorting;
uses wincrt;
type tipelarik=array [1..100] of real;




var e,c,m:integer;
d:tipelarik;


procedure tukarkan(var a,b:real);
var t:real;
begin
t:=a;
a:=b;
b:=t;
end;


procedure bublesort(var a:tipelarik;n:integer);
var i,j: integer;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then tukarkan(a[j],a[j+1])
end;




begin
write('jumlah data');readln(m);
for e:=1 to m do
readln(d[e]);


bublesort(d,m);


for c:=1 to m do
writeln(d[c]:0:0)


Fungsion median

function median (vektor:larik; N:integer);
var x,med:real;
begin
x:=n div 2
if n mod 2=0
med:=vektor[x]+vektor[x+1]/2;
else
med:=vektor[x+1]
end;
end.

Fungion run test

program sorting;
uses wincrt;
type tipelarik=array [1..100] of real;

var e,c,m,z:integer;
d,f,vektor:tipelarik;
med:real;


procedure tukarkan(var a,b:real);
var t:real;
begin
t:=a;
a:=b;
b:=t;
end;


procedure median(vektor:tipelarik;n:integer);
var x:integer;
begin
x:=n div 2;
if n mod 2=0 then
med:=(vektor[x]+vektor[x+1])/2
else
med:=vektor[x+1];
end;


procedure bublesort(var a:tipelarik;n:integer);
var i,j: integer;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then tukarkan(a[j],a[j+1])
end;


begin
write('jumlah data=');
readln(m);
writeln('masukkan data=');
for e:=1 to m do
readln(d[e]);


f:=d;
{mengecek bahwa f adalah data awal}
Write('data sebelum urut=');
writeln(f[1]);


writeln('data yang diurutkan=');
bublesort(d,m);


for c:=1 to m do
writeln(d[c]:0:0);


median(d,m);
write('median=');
writeln(med:0:2);


for z:=1 to m do
begin
f[z]:=f[z]-med;
writeln(f[z]:0:2);
end;


Beberapa contoh syntax pembangkit bilangan random bag. 1

Kali ini akan diberikan contoh beberapa syntak pembangkit bilangan random dari beberapa distribusi yaitu:
1. Distribusi uniform
2. Distribusi Eksponensial
3. Distribusi Normal
4. Distribusi Lognormal
5. Distribuso Weibull
6. Distribusi t-student
7. Distribusi fisher
Fungsi Distribusi Uniform
Function Uniform (a,b : double) : double;
Var u : double;
Begin
u := random;
Uniform := (b-a) * u + a;
End;
Fungsi Distribusi Eksponensial
Function Eksponensial (beta : double) : double;
Var u : double;
Begin
u := random;
Eksponensial := -beta * ln(u);
End;
Fungsi Distribusi 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; Procedure Distribusi 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; Fungsi Distribusi Weibull Function Weibull (alfa,beta: double) : double; Var u,z : double; Begin u := random; z := -ln(u); Weibull := beta * exp (ln(z)/alfa); End; Fungsi Distribusi 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
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.

Yang ge bingung ma jurnal autokorelasi

Sabtu, 12 September 2009

Aqu sih dapet ni alamat dari karlinarachmasita.blogspot.com cuy..!
alamat mengenai journal autokorelasi
http://en.wikipedia.org/wiki/Autocorrelation

http://www.duke.edu/~rnau/testing.htm

http://www.xycoon.com/autocorrelation.htm

http://74.125.153.132/search?q=cache:dq-gMQpze3wJ:homepages.uel.ac.uk/D.A.C.Boyd/FE2007%2520Autocorrelation.doc+autocorrelation+in+regression&cd=7&hl=id&ct=clnk&gl=id

http://www.bearcave.com/misl/misl_tech/wavelets/stat/index.html

http://www.google.com/books?hl=id&lr=&id=JxMj3UcSc_EC&oi=fnd&pg=PA237&dq=autocorrelation+in+econometrics&ots=ASR_UAHB3b&sig=5htf5-hr0S_Mk6VeRGzPwUSPbbc#v=onepage&q=autocorrelation%20in%20econometrics&f=false

http://www.jstor.org/pss/2938229

Kuliah simulasi minggu ke tiga

Pada kuliah minggu ke tiga, dibahas mengenai pembangkit bilangan acak.Pembangkitan bilangan acak dapat pula disebut dengan pseudo-random generation.Mengapa tidak disebut dengan random data generation??. Kata pseudo random generation sebenarnya berasal dari kata pseudo yang artinya semu atau bukan sebenarnya. Dalam hal ini, pseudo-random generation dapat diartikan sebagai barisan bilangan random yang dibangkitkan dengan menggunakan rumus sehingga masih bisa diduga apa yang akan muncul. Bilangan yang muncul dalam pseudo-random generation tidaklah benar-benar acak atau acak semu.

Pada kali ini diberikan contoh sebagai berikut:


Pada gambar diatas, yang dimaksud dengan modulo adalah sisa bilangan bulat dengan pembagian. Modulo diperbesar sampai 2k-1 adalah untuk membuat agar periode pengulangan terlihat panjang.
Jika m=5 maka bilangan yang mungkin muncul adalah 0,1,2,3,4.

Sedangkan rumus dari pseudo-random generation adalah sebagai berikut:



BILANGAN BINER

Dikutip dari http://id.wikipedia.org/wiki/Sistem_bilangan_biner Sistem bilangan biner atau sistem bilangan basis dua adalah sebuah sistem penulisan angka dengan menggunakan dua simbol yaitu 0 dan 1. Sistem bilangan biner modern ditemukan oleh Gottfried Wilhelm Leibniz pada abad ke-17. Sistem bilangan ini merupakan dasar dari semua sistem bilangan berbasis digital. Dari sistem biner, kita dapat mengkonversinya ke sistem bilangan Oktal atau Hexadesimal. Sistem ini juga dapat kita sebut dengan istilah bit, atau Binary Digit. Pengelompokan biner dalam komputer selalu berjumlah 8, dengan istilah 1 Byte. Dalam istilah komputer, 1 Byte = 8 bit. Kode-kode rancang bangun komputer, seperti ASCII, American Standard Code for Information Interchange menggunakan sistem peng-kode-an 1 Byte.
Bilangan desimal yang dinyatakan sebagai bilangan biner akan berbentuk sebagai berikut:



Sebagai contoh
bilangan biner terbesar 1 digit adalah 1
bilangan biner terbesar 2 digit adalah 11 atau 3
bilangan biner terbesar 3 digit adalah 111 atau 7
bilagan biner terbesar 32 digit adalah 11...1 atau 2k-1
Jika bilangan biner lebih dari 32 digit maka komputer dikatakan overflow.



1. Pada simulasi kali ini, diberikan contoh simulasi syntax yang digunakan untuk membangkitkan distribusi uniform x ~ u(a,b) dengan bahasa Pascal. Commandnya adalah sebagai berikut:

function uniform (a,b:real):real;
begin
uniform:=a+(b-a)*random;
end;

SIMULASI berdistribusi eksponensial

function expo(mean:real):real;
begin
expo:=-loge(random)*mean;
end;

3. Simulasi mengenai inverse transform

diberikan F(x)= u, u ~ u(0,1)dengan gambar distribusi sebagai berikut:


dapatkan persamaan untuk x?!
jawab: