Selasa, 29 Desember 2009

Regresi Linier

LISTING PROGRAM

uses crt;

type data = array[1..100] of real;

statis = object

procedure input;

procedure regresi_yx;

procedure regresi_xy;

procedure menu;

end;

var i,n : integer;

a,b : real;

x,y,x2,y2,xy : data;

pil : char;

function sigma(k:data):real;

var dat : real;

begin

dat := 0;

for i:= 1 to n do

dat:=dat+k[i];

sigma:=dat;

end;

procedure statis.input;

begin

clrscr;

write('Banyaknya data : ');

readln(n);

writeln;

writeln('Nilai X : ');

writeln;

for i:= 1 to n do

begin

write('Nilai X-',i,' : ');

readln(x[i]);

end;

writeln;

writeln('Nilai Y : ');

writeln;

for i:= 1 to n do

begin

write('Nilai Y-',' : ');

readln(y[i]);

end;

for i:= 1 to n do

begin

x2[i]:=x[i]*x[i];

y2[i]:=y[i]*y[i];

xy[i]:=x[i]*y[i];

end;

readln;

end;

procedure statis.regresi_yx;

begin

clrscr;

a:=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));

b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));

writeln;

writeln('Regresi Y terhadap X');

Writeln('--------------------');

writeln;

writeln('a = ',a:4:2);

writeln('b = ',b:4:2);

writeln;

writeln('Y = ',a:4:2,'+ (',b:4:2,') X');

readln;

readln;

end;

procedure statis.regresi_xy;

begin

clrscr;

a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));

b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));

writeln;

writeln('Regresi X terhadap Y');

Writeln('--------------------');

writeln;

writeln('a = ',a:4:2);

writeln('b = ',b:4:2);

writeln('X = ',a:4:2,'+ (',b:4:2,') Y');

readln;

readln;

end;

procedure statis.menu;

begin

repeat

clrscr;

writeln('Menu');

writeln('1. Input');

writeln('2. Regresi y terhadap x');

writeln('3. Regresi x terhadap y');

writeln('4. Keluar');

writeln('Masukkan pilihan anda : ');

read(pil);

case pil of

'1':begin

input

end;

'2':begin

regresi_yx

end;

'3':begin

regresi_xy

end;

'4':halt;

end;

until pil = '4';

readln;

end;

var s : statis;

begin

s.menu;

end.

PENJELASAN PROGRAM

Pada laporan akhir kali ini akan membahas mengenai regresi linier. Regresi linier adalah persamaan matematika yang memungkinkan kita meramalkan nilai-nilai suatu peubah tidak bebas dari nilai-nilai satu atau lebih peubah bebas. Pada listing program diatas terdapat beberapa procedure dan juga function. Procedure-procedure tersebut diantaranya function sigma dan beberapa procedure, yakni procedure statis.input, procedure statis.regresi_yx, procedure statis.regresi_xy, procedure statis.menu. Pada procedure menu berisi beberapa pilihan, yakni 1. input, 2. Regresi y terhadap x, 3. Regresi x terhadap y, dan 4. Keluar.

LOGIKA PROGRAM

uses crt;

type data = array[1..100] of real;

statis = object

procedure input;

procedure regresi_yx;

procedure regresi_xy;

procedure menu;

end;

var i,n : integer;

a,b : real;

x,y,x2,y2,xy : data;

pil : char;

Pada listing program ini, uses crt berfungsi apabila akan digunakan unit crt. Pertama-tama dalam membuat suatu program maka kita harus mendeklarasikan tipe data apa saja yang akan dipakai. Kita mendeklarasikan type data yakni bertipe array. Selain itu juga beberapa procedure yang akan dipakai, yakni procedure input, procedure regresi_yx, procedure regresi_xy dan procedure menu. Dan mita juga memakai beberapa variabel. i,n bertipe data integer, a, b bertipe data real kemudian juga ada x, y, x2, y2, xy dan juga ada pilihan yang bertipe data char.

function sigma(k:data):real;

var dat : real;

begin

dat := 0;

for i:= 1 to n do

dat:=dat+k[i];

sigma:=dat;

end;

Function sigma diatas berfungsi untuk mencari jumlah dari semua data yang telah dinput, dan bertipe data real. Rumus dari penjumlahan adalah dat:=dat+k[i];, dimana k:data dan sigma:=dat;. Data tersebut dimulai dari data 1 sampai dengan data ke-n.

procedure statis.input;

begin

clrscr;

write('Banyaknya data : ');

readln(n);

writeln;

writeln('Nilai X : ');

writeln;

for i:= 1 to n do

begin

write('Nilai X-',i,' : ');

readln(x[i]);

end;

writeln;

writeln('Nilai Y : ');

writeln;

for i:= 1 to n do

begin

write('Nilai Y-',' : ');

readln(y[i]);

end;

for i:= 1 to n do

begin

x2[i]:=x[i]*x[i];

y2[i]:=y[i]*y[i];

xy[i]:=x[i]*y[i];

end;

readln;

end;

Selanjutnya procedure statis.input. Procedure ini digunakan untuk memasukkan input dari data. Pada procedure input ini kita akan diminta untuk menginput nilai x dan nilai y, dimana pada masing-masing inputan dari nilai x dan y ini kita diminta untuk menginput atau memasukkan data x dan y tersebut melalui keyboard. Setelai itu kita diminta looping sesuai jumlah yang kita input sebelumnya. Selain itu juga kita menghitung nilai dari x2, y2, dan xy. Untuk menghitung nilai x2 kita menggunakan rumus x2[i]:=x[i]*x[i];, untuk menghitung y2 kita menggunakan rumus y2[i]:=y[i]*y[i];, sedangkan untuk menghitung xy kita menggunakan rumus xy[i]:=x[i]*y[i];.

procedure statis.regresi_yx;

begin

clrscr;

a:=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));

b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));

writeln;

writeln('Regresi Y terhadap X');

Writeln('--------------------');

writeln;

writeln('a = ',a:4:2);

writeln('b = ',b:4:2);

writeln;

writeln('Y = ',a:4:2,'+ (',b:4:2,') X');

readln;

readln;

end;

Procedure selanjutnya yakni procedure statis.regresi_yx. Procedure tersebut digunakan untuk menampilkan regresi y terhadap x. Program tersebut pertama-tama akan mencetak Regresi y terhadap x. Untuk menghitung nilai a menggunakan rumus :=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));. Sedangkan untuk menghitung nilai b menggunakan rumus b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));. Nilai a akan ditampilkan sebagai nilai dari x, sedangkan nilai b akan ditampilkan sebagai nilai dari y apabila perhitungan dari rumus tersebut telah selesai.

procedure statis.regresi_xy;

begin

clrscr;

a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));

b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));

writeln;

writeln('Regresi X terhadap Y');

Writeln('--------------------');

writeln;

writeln('a = ',a:4:2);

writeln('b = ',b:4:2);

writeln('X = ',a:4:2,'+ (',b:4:2,') Y');

readln;

readln;

end;

Kemudian procedure statis.regresi_xy. Procedure tersebut digunakan untuk menampilkan regresi x terhadap y. Program tersebut pertama-tama akan mencetak Regresi x terhadap y. Untuk menghitung nilai a menggunakan rumus a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));, sedangkan untuk menghitung nilai b menggunakan rumus b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));. Seperti halnya program diatas, pada program ini nilai a juga akan ditampilkan sebagai nilai dari x, sedangkan nilai b akan ditampilkan sebagai nilai dari y apabila perhitungan dari rumus tersebut telah selesai.

procedure statis.menu;

begin

repeat

clrscr;

writeln('Menu');

writeln('1. Input');

writeln('2. Regresi y terhadap x');

writeln('3. Regresi x terhadap y');

writeln('4. Keluar');

writeln('Masukkan pilihan anda : ');

read(pil);

case pil of

'1':begin

input

end;

'2':begin

regresi_yx

end;

'3':begin

regresi_xy

end;

'4':halt;

end;

until pil = '4';

readln;

end;

var s : statis;

begin

s.menu;

end.

Selanjutnya akan masuk pada procedure yang terakhir dalam listing program diatas yakni procedure menu. Di dalam procedure menu diatas akan menjalankan perintah repeat (perulangan), kemudian clrscr digunakan untuk membersihkan layar dan juga akan mencetak menu pilihan, yaitu 1. input, 2. Regresi y terhadap x, 3. Regresi x terhadap y, 4. Keluar. Dan juga menampilkan tulisan Masukkan pilihan anda :. Kemudian memasukan pilihan user ke var pil. Repeat (perulangan) di sini di gunakan agar menu tidak akan keluar atau berakhir sampai user memilih menu pil 4. Pada program procedure menu ini menggunakan case of,dimana menu pertama hanya sebagai penulisan input dan selanjutnya adalah memperlihatkan regresi y terhadap x dan juga regresi x terhadap y.

OUTPUT PROGRAM

Tampilan menu awal.

Tampilan apabila memilih menu 1 dan kita menginput banyaknya data sebanyak 4.

Tampilan apabila memilih menu 2. Regresi y terhadap x.

Tampilan apabila memilih menu 3. Regresi x terhadap y.

Tidak ada komentar:

Posting Komentar