LAMPIRAN-LAMPIRAN
Lampiran 1. Tabel Hasil Pengumpulan Data (dalam ton)
Tahun Penjualan Besi As ST41 Putih ukuran 7mm x 6m
Bulan
1999 2000 2001 2002 2003 2004 2005 2006
Januari
- 264 324 322 285 275 295 301
Februari
- 269 266 283 275 331 304 302
Maret
- 268 317 267 301 322 328 292
April
- 276 342 269 266 289 344 301
Mei
- 272 334 277 327 313 326 300
Juni
- 280 336 280 328 311 322 317
Juli
- 282 340 318 338 317 306 312
Agustus
- 329 315 327 299 288 284 320
September
- 333 270 289 355 276 277 282
Oktober 225 336 267 332 311 296 293 280
November 231 283 278 340 302 311 310 311
Desember 244 354 292 313 289 289 312
Sumber : PT. Batraja Rona Steel
Lampiran 2a. Perhitungan Koefisien
Autokorelasi
Rata-rata penjualan
300.662
86
311
...
231
225
+
+
+
=
=
Y
ton
Batas signifikan tidak berbeda dari nol
untuk autokorelasi dan autokorelasi parsial :
)
86
/
1
(
96
,
1
)
86
/
1
(
96
,
1
)
(
)
(
≤
≤
+
=>
−
≤
≤
−
Z
αSd
r
kZ
αSd
r
k0.2113
0.2113
-
≤
r
k≤
Autokorelasi
:
Time lag
1 :
2 2 2 1)
66
.
300
311
...(
)
66
.
300
231
(
)
66
.
300
225
(
)
662
.
300
311
)(
66
.
300
280
..(
)
66
.
300
244
)(
66
.
300
231
(
)
66
.
300
231
)(
66
.
300
225
(
−
+
−
+
−
−
−
+
−
−
+
−
−
=
r
0.503011 62365.22 31370.36 1= = rTime lag
2 :
2 2 2 2)
66
.
300
311
...(
)
66
.
300
231
(
)
66
.
300
225
(
)
662
.
300
311
)(
66
.
300
282
..(
)
66
.
300
264
)(
66
.
300
231
(
)
66
.
300
244
)(
66
.
300
225
(
−
+
−
+
−
−
−
+
−
−
+
−
−
=
r
0.2388
62365.22
14894.94
2=
=
r
Time lag
3 :
2 2 2 3 ) 66 . 300 311 ...( ) 66 . 300 231 ( ) 66 . 300 225 ( ) 662 . 300 311 )( 66 . 300 320 ..( ) 66 . 300 269 )( 66 . 300 231 ( ) 66 . 300 264 )( 66 . 300 225 ( − + − + − − − + − − + − − = r0.139684
62365.22
8711.45
3=
=
r
.
.
.
Time lag
10 :
2 2 2 10 ) 66 . 300 311 ...( ) 66 . 300 231 ( ) 66 . 300 225 ( ) 662 . 300 311 )( 66 . 300 301 ..( ) 66 . 300 333 )( 66 . 300 231 ( ) 66 . 300 329 )( 66 . 300 225 ( − + − + − − − + − − + − − = r-0.13276
62365.22
8279.73
-10=
=
r
timelag 1
2 3 4 5 6 7 8 9 10
Autokorelasi
0.5 0.24 0.14 0.07 -0.04 -0.02 0.06 0.04 -0.03
-0.1
Lampiran 2b. Perhitungan Koefisien
Autokorelasi Parsial
Autokorelasi Parsial
:
Time lag
1 :
0.503011
1 11=
ρ
=
φ
Time lag
2 :
-0.01899
0.503011
-1
0.503011
-0.238834
1
2 2 2 1 2 1 2 22=
=
−
−
=
ρ
ρ
ρ
φ
Time lag
3 :
0.0302
0.503011)
x
0.01899
-0.238834
x
(0.512563
-1
0.503011)
x
0.01899
-0.238834
x
(0.512563
-0.139684
)
(
1
)
(
1 22 2 21 1 22 2 21 3 33−
+
=
=
+
−
=
ρ
φ
ρ
φ
ρ
φ
ρ
φ
ρ
φ
x
x
x
x
.
.
.
timelag 1
2 3 4 5 6 7 8 9 10
Autokorelasi
parsial
0.5 -0.02 0.03 -0.01
-0.07
0.03 0.07 -0.02 -0.04
-0.1
Lampiran 2c. Perhitungan Koefisien Parameter Model AR, MA, dan ARMA
Untuk parameter AR
0.503011
1=
φ
μ
= 300.662
t t t t tY
Y
Y
=
μ
(
1
−
φ
1)
+
φ
1 −1+
ε
=
300
,
662
(
1
−
0
.
503
)
+
0
,
503
−1+
ε
Jadi persamaannya menjadi :
Y
t=
149
,
426
+
0
.
503
Y
t−1+
ε
tUntuk parameter MA
( )
2 2 2 2 1 1 1 −+
−−
−=
t t t tY
Y
Y
Y
θ
θ
θ
σ
2 2 1 10.503011
0.238834
=
θ
+
θ
−
θ
0.2515
2
0.503011
1=
=
θ
0.17557
)
0.2515
(
)
0.2515
(
0.503011
0.238834
2 2=
+
−
=
θ
2 10.1755
0.251
662
.
300
+
−
−−
−=
t t t tY
ε
ε
ε
Untuk parameter ARMA
1
φ
=
1 2r
r
=0.47481
2 1 10
.
2374
0
.
0179
47481
.
0
905
.
157
+
−+
−
−−
−=
t t t t tY
Y
ε
ε
ε
Lampiran 3. Kode Program Aplikasi
{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1} {$MINSTACKSIZE $00004000} {$MAXSTACKSIZE $00100000} {$IMAGEBASE $00400000} {$APPTYPE GUI} unit ARMA_singleMovingAverage; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, ADODB, Grids, DBGrids, Chart, TeEngine, Series, TeeProcs, DbChart , Jpeg;
type TForm1 = class(TForm) Plogin: TPanel; Label1: TLabel; Label2: TLabel; NamaUser: TEdit; PasswordUser: TEdit; Bmasuklogin: TButton; Bubahpass: TButton; Pkeluarlogin: TPanel; Byakinkeluarlogin: TButton; Label3: TLabel; Bbatalkeluarlogin: TButton; Pdata: TPanel; Bstatsioner: TButton; Bkeluarlogin: TButton; Pstasioner: TPanel; Bpemilihanmetode: TButton; Pbanding: TPanel; Pperamalan: TPanel; Bselesai: TButton; Pperamalan1: TPanel; Label21: TLabel; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; ADOStoredProc1: TADOStoredProc; ADOCommand1: TADOCommand; ADOTable1: TADOTable; ADODataSet1: TADODataSet; Pgantipassword: TPanel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; namaganti: TEdit; passlama: TEdit; passbaru: TEdit;
konfirmasipassbaru: TEdit; Bgantipassbaru: TButton; Bbatalganti: TButton; DataSource1: TDataSource; Memo1: TMemo; Bkel3: TButton; Pautokorelasiparsial: TPanel; Bestimasiparameter: TButton; Pautokorelasiparsial1: TPanel; Memo2: TMemo; Pdata1: TPanel; DBGrid1: TDBGrid; Label4: TLabel; Pstasioner1: TPanel; Memo3: TMemo; Pdugaparameter: TPanel; Pdugaparameter1: TPanel; Memo4: TMemo; Bdiagnosa: TButton; Phasildiagnosis: TPanel; Phasildiagnosis1: TPanel; BsinglemovingAvg: TButton; Memo5: TMemo; PsingleMA: TPanel; PSingleMA1: TPanel; Bkeputusan: TButton; Memo6: TMemo; Memo7: TMemo; Bkel1: TButton; Bbantuan1: TButton; Bkembalikeeditdata: TButton; Bbantuan2: TButton; Bkel2: TButton; Bbantuan3: TButton; Bkembalipilih: TButton; Bbantuan4: TButton; Bkel4: TButton; Bkembali4: TButton; Bkembali5: TButton; Bbantuan5: TButton; Bkeluar5: TButton; Bkembali6: TButton; Bbantuan6: TButton; Bkeluar6: TButton; Bbantuan7: TButton; Bkeluar7: TButton; Chart1: TChart; Series2: TFastLineSeries; Chart2: TChart; Series3: TFastLineSeries; Chart3: TChart; Series4: TFastLineSeries; Chart4: TChart; varabelramal: TEdit; Bramalpenjualan: TButton; Bkembali8: TButton;
Bmasukramal: TButton; PArma: TPanel; Pratageraktunggal: TPanel; Plogo: TPanel; Image1: TImage; Label27: TLabel; Series6: TFastLineSeries; Series7: TFastLineSeries; Series5: TFastLineSeries; Series8: TFastLineSeries; Series10: TFastLineSeries; PBantuan: TPanel; Btentangkami: TButton; Button3: TButton; BOk: TButton; PBantuan2: TPanel; Memo8: TMemo; Bliatdetail: TButton; Pview2: TPanel; Pview: TPanel; Bsel: TButton; Bview: TButton; Phasilkeptsan: TPanel; Phasilkeptsan1: TPanel; Memo9: TMemo; Bokkeptsan: TButton; Bkembali9: TButton; Bbantuan9: TButton; Bkeluar9: TButton; DBChart1: TDBChart; Series1: TLineSeries;
procedure BbatalkeluarloginClick(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure BkeluarloginClick(Sender: TObject); procedure ByakinkeluarloginClick(Sender: TObject); procedure BmasukloginClick(Sender: TObject); procedure BstatsionerClick(Sender: TObject); procedure BpemilihanmetodeClick(Sender: TObject); procedure BarmaClick(Sender: TObject);
procedure BselesaiClick(Sender: TObject); procedure BubahpassClick(Sender: TObject); procedure BbatalgantiClick(Sender: TObject); procedure BgantipassbaruClick(Sender: TObject); procedure Bkel3Click(Sender: TObject);
procedure BbandingClick(Sender: TObject);
procedure BestimasiparameterClick(Sender: TObject); procedure BsinglemovingAvgClick(Sender: TObject); procedure BkeputusanClick(Sender: TObject); procedure Bkel1Click(Sender: TObject);
procedure BkembalikeeditdataClick(Sender: TObject); procedure Bkel2Click(Sender: TObject);
procedure BkembalipilihClick(Sender: TObject); procedure Bkel4Click(Sender: TObject); procedure Bkembali4Click(Sender: TObject); procedure Bkembali5Click(Sender: TObject);
procedure Bkeluar5Click(Sender: TObject); procedure Bkeluar6Click(Sender: TObject); procedure Bkembali6Click(Sender: TObject); procedure Bkeluar7Click(Sender: TObject); procedure Bkembali7Click(Sender: TObject); procedure BkembaliputusClick(Sender: TObject);
procedure NamaUserKeyPress(Sender: TObject; var Key: Char); procedure PasswordUserKeyPress(Sender: TObject; var Key: Char); procedure namagantiKeyPress(Sender: TObject; var Key: Char); procedure passbaruKeyPress(Sender: TObject; var Key: Char);
procedure konfirmasipassbaruKeyPress(Sender: TObject; var Key: Char); procedure passlamaKeyPress(Sender: TObject; var Key: Char);
procedure varabelramalKeyPress(Sender: TObject; var Key: Char); procedure BramalpenjualanClick(Sender: TObject);
procedure BmasukramalClick(Sender: TObject); procedure Bkembali8Click(Sender: TObject); procedure BdiagnosaClick(Sender: TObject); procedure BtentangkamiClick(Sender: TObject); procedure Button3Click(Sender: TObject); procedure BOkClick(Sender: TObject); procedure Bbantuan2Click(Sender: TObject); procedure Bbantuan3Click(Sender: TObject); procedure Bbantuan6Click(Sender: TObject); procedure Bbantuan7Click(Sender: TObject); procedure Bbantuan4Click(Sender: TObject); procedure Bbantuan5Click(Sender: TObject); procedure BliatdetailClick(Sender: TObject); procedure BselClick(Sender: TObject); procedure BviewClick(Sender: TObject); procedure Bbantuan1Click(Sender: TObject); procedure autokorelasipar();
procedure Bkeluar9Click(Sender: TObject); procedure BokkeptsanClick(Sender: TObject); procedure Bkembali9Click(Sender: TObject); procedure Bbantuan9Click(Sender: TObject); private { Private declarations } SqlTemp: String; public { Public declarations } end; var Form1: TForm1;
var blnpenjualan,thnpenjualan,nopenjualan : array of Integer;
errorARMAduga,errorduga,autokorelasi,datapenjualan,datasimpanbaru,errorsimpanbaru,autokorelasiparsi al,parameterAR,parameterMA,parameterMA1,parameterARARMA,parameterMAARMA,SMA,hasilrama lanMA,hasilramalanARMA,hasilramalanAR : array of Double;
totaldatapenjualan,meandatapenjualan,batasbawahsignifikanNol,batasatassignifikanNol,miu0AR,miu0M A,miu0ARMA,MAEARMA,MAPEARMA,MSEARMA,MAESMA,MAPESMA,MSESMA : real; banyakdata,timelagautokorelasi,timelagautokorelasiparsial,metode,sign,tandaARMA,tanda : Integer; anu : string;
implementation {$R *.dfm}
procedure TForm1.BbatalkeluarloginClick(Sender: TObject); begin
Pkeluarlogin.Visible:=false end;
procedure TForm1.FormCreate(Sender: TObject); begin Phasilkeptsan.Visible:=false; Pview.Visible:=false; PBantuan.Visible:=false; PsingleMA.Visible:=false; Phasildiagnosis.Visible:=false; Pautokorelasiparsial.Visible:=false; Pdugaparameter.Visible:=false; Pgantipassword.Visible:=false; Pperamalan.Visible:=false; Pbanding.Visible:=false; Pstasioner.Visible:=false; Pdata.Visible:=false; Pkeluarlogin.Visible:=false; end;
procedure TForm1.BkeluarloginClick(Sender: TObject); begin
pkeluarlogin.Visible:=true end;
procedure TForm1.ByakinkeluarloginClick(Sender: TObject); begin
Application.Terminate; end;
procedure TForm1.BmasukloginClick(Sender: TObject); begin
if trim(NamaUser.Text)='' then begin
ShowMessage('tolong masukkan username anda!'); NamaUser.SetFocus;
end else
if Trim(PasswordUser.Text)='' then begin
ShowMessage('tolong masukkan password anda!'); PasswordUser.SetFocus;
end else begin
SqlTemp := 'SELECT * FROM login'; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := SqlTemp +' WHERE Nama ='''+ NamaUser.Text+ ''' AND Password = '''+PasswordUser.Text+'''';
ADOQuery1.Open; if not ADOQuery1.Eof then begin
ADOQuery1.SQL.Clear; Plogin.Visible:=false; Pdata.Visible:=true; end else begin ADOQuery1.Close;
MessageBox(Self.Handle,'nama atau password tidak cocok','Validasi',MB_OK); NamaUser.SetFocus;
end; end; end;
procedure TForm1.BstatsionerClick(Sender: TObject); var i,a,step:integer; var pembagiautokorelasi:Real; begin i:=0; timelagautokorelasi:=0; pembagiautokorelasi:=0; totaldatapenjualan:=0; Pstasioner.Visible:=true; Pdata.Visible:=false;
//simpan data penjualan ke suatu variabel di delphi ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:= 'select * from Data_penjualan_BesiAsPutih7mmx6m'; ADOQuery1.Open; SetLength(nopenjualan,ADOQuery1.RecordCount); SetLength(blnpenjualan,ADOQuery1.RecordCount); SetLength(thnpenjualan,ADOQuery1.RecordCount); SetLength(datapenjualan,ADOQuery1.RecordCount); ADOQuery1.First;
while not ADOQuery1.Eof do begin
nopenjualan[i] := ADOQuery1.Fields[0].AsInteger; blnpenjualan[i] := ADOQuery1.Fields[1].AsInteger; thnpenjualan[i] := ADOQuery1.Fields[2].AsInteger; datapenjualan[i] := ADOQuery1.Fields[3].AsVariant; totaldatapenjualan:=totaldatapenjualan + datapenjualan[i]; i:=i+1; ADOQuery1.Next; end; ADOQuery1.Close; //hitung autokorelasi data SetLength(autokorelasi,11); autokorelasi[0]:=1;
banyakdata:=i;
meandatapenjualan := (totaldatapenjualan / i); for a:=1 to i do
begin
pembagiautokorelasi := pembagiautokorelasi + (datapenjualan[a-1]-meandatapenjualan)*(datapenjualan[a-1]-meandatapenjualan); end; for a:=1 to 10 do begin autokorelasi[a]:= 0; step:=0;
while step<(i-a) do begin autokorelasi[a]:=autokorelasi[a]+ ((datapenjualan[step]-meandatapenjualan)*(datapenjualan[step+a]-meandatapenjualan)) ; step:=step+1; end; autokorelasi[a]:=(autokorelasi[a] / pembagiautokorelasi); end; Series2.Clear; Series2.AddArray(autokorelasi); batasbawahsignifikanNol := ((0-1.96) / sqrt(i)); batasatassignifikanNol := (1.96 / sqrt(i)); Memo3.Clear;
Memo3.Lines.Add('Cek Data dengan Test Kestasioneran pada data penjualan Besi As putih PT.Brataja Rona Steel');
Memo3.Lines.Add('============================================'); Memo3.Lines.Add('');
Memo3.Lines.Add('Nilai Autokorelasi(hubungan antar variabel dengan variabel/"data penjualan" sendiri) dengan selisih waktu: ');
Memo3.Lines.Add(''); for a:=1 to 10 do begin
Memo3.Lines.Add('time lag '+ IntToStr(a) +' = '+ FloatToStr(autokorelasi[a]) +'.');
if (autokorelasi[a]<batasatassignifikanNol) and (autokorelasi[a]>batasbawahsignifikanNol) then begin timelagautokorelasi:=timelagautokorelasi; end else begin timelagautokorelasi:=a; end; end; Memo3.Lines.Add('');
Memo3.Lines.Add('Batas signifikan nyata Null (kondisi/batas dimana suatu nilai autokorelasi bisa dinyatakan null): ');
Memo3.Lines.Add('');
Memo3.Lines.Add(FloatToStr(batasbawahsignifikanNol)+' < bts < '+FloatToStr(batasatassignifikanNol)+'.');
Memo3.Lines.Add('');
Memo3.Lines.Add('Setelah melakukan analisis/cek data pada data penjualan Besi As putih, maka dapat disimpulkan bahwa:');
if timelagautokorelasi < 4 then begin
Memo3.Lines.Add('Data penjualan tersebut mempunyai kestasioneran.'); end else
begin
Memo3.Lines.Add('Data penjualan tersebut tidak mempunyai kestasioneran'); end;
end;
procedure TForm1.BpemilihanmetodeClick(Sender: TObject); begin tanda:=0; Pbanding.Visible:=true; Pstasioner.Visible:=false; autokorelasipar(); Bestimasiparameter.Click; Bdiagnosa.Click;
BsinglemovingAvg.Click; Bkeputusan.Click; Bokkeptsan.Click; Memo1.Clear;
memo1.Lines.Add('Silakan Anda lanjutkan ke peramalan data penjualan Besi As ST41 putih ukuran 7mmx6m untuk masa mendatang dengan menekan tombol "Peramalan".');
memo1.Lines.Add('');
memo1.Lines.Add('Untuk melihat secara detail mengenai perbandingan metode Autoregressive Moving Average dan metode Rata-rata Bergerak Tunggal dapat dilakukan dengan menekan tombol "Lihat Analisis Data".');
memo1.Lines.Add(''); end;
procedure TForm1.BarmaClick(Sender: TObject); begin
Pbanding.Visible:=false; Pperamalan.Visible:=true; varabelramal.SetFocus; end;
procedure TForm1.BselesaiClick(Sender: TObject); begin
Application.Terminate; end;
procedure TForm1.BubahpassClick(Sender: TObject); begin Pgantipassword.Visible:=true; Plogin.Visible:=false; namaganti.SetFocus; namaganti.Text:=''; passlama.Text:=''; passbaru.Text:=''; konfirmasipassbaru.Text:=''; end;
procedure TForm1.BbatalgantiClick(Sender: TObject); Begin Pgantipassword.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.BgantipassbaruClick(Sender: TObject); begin
if trim(namaganti.Text)='' then begin
ShowMessage('tolong masukkan username anda!'); namaganti.SetFocus;
end else
if Trim(passlama.Text)='' then begin
ShowMessage('tolong masukkan password yang anda ingin ganti!'); passlama.SetFocus;
end else
ShowMessage('tolong masukkan password baru yang anda inginkan!'); passbaru.SetFocus;
end else
if Trim(konfirmasipassbaru.Text)='' then begin
ShowMessage('tolong masukkan konfirmasi password sesuai password baru!'); konfirmasipassbaru.SetFocus;
end else begin
SqlTemp := 'SELECT * FROM login'; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := SqlTemp +' WHERE Nama ='''+ namaganti.Text+ ''' AND Password = '''+passlama.Text+'''';
ADOQuery1.Open; if not ADOQuery1.Eof then begin
if CompareStr(UpperCase(passbaru.Text),UpperCase(konfirmasipassbaru.Text))=0 then begin
ADOQuery1.Close; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='UPDATE login SET Password = ''' + passbaru.Text + ''' WHERE Nama ='''+ namaganti.Text+ ''' AND Password = '''+passlama.Text+'''';
ADOQuery1.ExecSQL; Pgantipassword.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end else begin
MessageBox(Self.Handle,'konfirmasi password tidak sama dengan password baru','Validasi',MB_OK); end;
end else begin
MessageBox(Self.Handle,'nama atau password salah','Validasi',MB_OK); namaganti.SetFocus;
end end; end;
procedure TForm1.Bkel3Click(Sender: TObject); begin Pbanding.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.BbandingClick(Sender: TObject); var t,a,I,J,p,k,hu: Integer;
var matriksparsial,matriksinvers : array of array of Real; var penampungautokorelasiparsial : array of Real; begin
if tanda=1 then begin
Pbanding.Visible:=false; Pautokorelasiparsial.Visible:=true; end else begin Pbanding.Visible:=false; Pautokorelasiparsial.Visible:=false; end; SetLength(matriksparsial,10); SetLength(matriksinvers,10);
for I := Low(matriksparsial) to High(matriksparsial) do begin
SetLength(matriksparsial[I],10); SetLength(matriksinvers[I],10); end;
for I:=Low(matriksparsial) to High(matriksparsial) do begin for J:=0 to 9 do begin matriksparsial[I,J] := autokorelasi[abs(J-I)]; if I=J then begin matriksinvers[I,J]:=1; end else begin matriksinvers[I,J]:=0; end; end; end; SetLength(autokorelasiparsial,11); autokorelasiparsial[0]:=1; SetLength(penampungautokorelasiparsial,10); for p:=0 to 9 do begin for k:=0 to p do begin for I:=k to (p+k) do begin if k=I then begin for J:=0 to p do begin matriksparsial[k,J]:=(matriksparsial[k,J] / matriksparsial[k,k]); matriksinvers[k,J]:=(matriksinvers[k,J] / matriksparsial[k,k]); end; end else begin for J:= 0 to p do begin hu:= I mod (p+1); matriksparsial[hu,J]:=matriksparsial[hu,J]-(matriksparsial[hu,J]*matriksparsial[k,J]); matriksinvers[hu,J]:=(matriksinvers[hu,J]-(matriksinvers[hu,J]*matriksparsial[k,J])); end; end; end; end; autokorelasiparsial[p+1]:=0;
for t:=0 to 9 do begin autokorelasiparsial[p+1]:=autokorelasiparsial[p+1]+ (matriksinvers[p,t]*autokorelasi[t+1]); end; end; Memo2.Clear; Memo2.Lines.Add('Autokorelasi parsial : '); for a:=1 to 10 do begin
Memo2.Lines.Add('time lag '+ IntToStr(a) +' = '+ FloatToStr(autokorelasiparsial[a]) +'.');
if (autokorelasiparsial[a]<batasatassignifikanNol) and (autokorelasiparsial[a]>batasbawahsignifikanNol) then begin timelagautokorelasiparsial:=timelagautokorelasiparsial; end else begin timelagautokorelasiparsial:=a; end; end; Series3.Clear; Series3.AddArray(autokorelasiparsial); Memo2.Lines.Add('');
Memo2.Lines.Add('Tes signifikan berbeda dari Null');
Memo2.Lines.Add('autokorelasi pada time lag :'+IntToStr(timelagautokorelasi));
Memo2.Lines.Add('autokorelasi parsial pada time lag :'+IntToStr(timelagautokorelasiparsial)); Memo2.Lines.Add('');
Memo2.Lines.Add('Jadi model AR yang cocok untuk peramalan adalah AR('+IntToStr(timelagautokorelasiparsial)+') ');
Memo2.Lines.Add('');
Memo2.Lines.Add('Jadi model MA yang cocok untuk peramalan adalah MA('+IntToStr(timelagautokorelasi)+') ');
Memo2.Lines.Add('');
Memo2.Lines.Add('Jadi model ARMA yang cocok untuk peramalan adalah
ARMA('+IntToStr(timelagautokorelasiparsial)+','+IntToStr(timelagautokorelasi)+') '); end;
procedure TForm1.BestimasiparameterClick(Sender: TObject); var i,h,jlhdataerror,a,tempAR,j: integer;
var o,p,q,penampung,totalerror : real; var persamaan:string;
var parameteryo,parameterMAtemp:array of array of real; var parameterMAtemp1:array of array of real;
var parametery1,parameteryoy1,Absduga:array of real;
var errorduga,errorARMAduga,hasilramalanduga,hasilramalanARMAduga: array of Double; begin tempAR:=0; miu0MA:=meandatapenjualan; if tanda =1 then begin Pautokorelasiparsial.Visible:=false; Pdugaparameter.Visible:=true; end else begin Pautokorelasiparsial.Visible:=false; Pdugaparameter.Visible:=false; end;
SetLength(parameterAR,11); SetLength(parameterARARMA,11); SetLength(parameterMAARMA,11); SetLength(parameterMA,11); SetLength(parameterMA1,11); SetLength(parameterMAtemp,1); SetLength(parameterMAtemp[0],2); SetLength(parameterMAtemp1,1); SetLength(parameterMAtemp1[0],2); SetLength(Absduga,2); SetLength(errorduga,(banyakdata-timelagautokorelasiparsial)); SetLength(hasilramalanduga,(banyakdata-timelagautokorelasiparsial)); //duga parameterAR for a:=1 to 10 do
if a< (timelagautokorelasiparsial+1) then begin parameterAR[a-1]:=autokorelasiparsial[a]; tempAR:=tempAr+1; end else begin parameterAR[a-1]:=0; tempAR:=tempAr+1; end; parameterAR[tempAr]:=0; SetLength(parameteryo,2); //duga miu0 AR miu0AR:=1;
for a:=1 to timelagautokorelasiparsial do begin
miu0AR:= miu0AR- parameterAR[a-1]; end;
miu0AR:= (miu0AR*meandatapenjualan); //duga parameterMA
parameterMAtemp1[0,0]:=0; parameterMAtemp1[0,1]:=0; for a:=1 to timelagautokorelasi do begin
if timelagautokorelasi=1 then begin
parameterMA[a-1]:=(autokorelasi[a])/(-autokorelasi[a-1]); end else if timelagautokorelasi=2 then
begin if a=1 then begin parameterMA[a-1]:= -autokorelasi[a]/(2*autokorelasi[a-1]); end else begin parameterMA[a-1]:=(autokorelasi[a-2]*parameterMA[a-2]*parameterMA[a-2]+autokorelasi[a-1]*parameterMA[a-2]+autokorelasi[a])/(-autokorelasi[a-2]); end; end; end; //duga parameteryo for a:=1 to 2 do begin SetLength(parameteryo[a-1],11);
end; SetLength(parametery1,11); for a:=1 to 1 do begin for j:=1 to 11 do begin if ((a+j)-3) < 0 then begin parameteryo[a-1,j-1]:=0; end else begin parameteryo[a-1,j-1]:=-parameterAR[(a+j)-3]; end; if a=j then begin parameteryo[a-1,j-1]:=parameteryo[a-1,j-1]+1; end else begin parameteryo[a-1,j-1]:=parameteryo[a-1,j-1]; end; end; end; if timelagautokorelasi=1 then begin for a:=2 to 2 do begin for j:=1 to 11 do begin parameteryo[a-1,j-1]:=-parameterAR[(a+j)-3]; if a=j then begin parameteryo[a-1,j-1]:=parameteryo[a-1,j-1]+1; end; end; end;
end else if timelagautokorelasi>1 then begin for a:=2 to 2 do begin for j:=1 to 11 do begin if ((a+j)-(4+timelagautokorelasi)) < 0 then begin if j=1 then begin parameteryo[a-1,j-1]:=-parameterAR[1]; end else if j=2 then
begin parameteryo[a-1,j-1]:=-parameterAR[2]-parameterAR[0]; end else begin parameteryo[a-1,j-1]:=1-parameterAR[3]; end; end else begin parameteryo[a-1,j-1]:=-parameterAR[(a+j)-2];
end; end; end; end; //duga parametery1 for a:=1 to 11 do begin if (a-2)<0 then begin parametery1[a-1]:=1; end else begin parametery1[a-1]:=autokorelasi[a-1]; end; end; //duga parameteryoy1 SetLength(parameteryoy1,2); for a:=1 to 2 do begin parameteryoy1[a-1]:=0; for j:=1 to 11 do begin parameteryoy1[a-1]:=parameteryoy1[a-1]+ (parameteryo[a-1,j-1]*parametery1[j-1]); end; end;
//duga parameter ARARMA tempAR:=0;
for a:=1 to 9 do
if a< (timelagautokorelasiparsial+1) then begin parameterARARMA[a-1]:=autokorelasi[a+1]/autokorelasi[a]; tempAR:=tempAr+1; end else begin parameterARARMA[a-1]:=0; tempAR:=tempAr+1; end; parameterARARMA[tempAr]:=0; //duga miu0 ARARMA
miu0ARMA:=1;
for a:=1 to timelagautokorelasiparsial do begin
miu0ARMA:= miu0ARMA- parameterARARMA[a-1]; end; miu0ARMA:= (miu0ARMA*meandatapenjualan); //initialisasi parameterMAARMA for a:=0 to 9 do begin parameterMAARMA[a]:=0; end; //duga parametermA penampung:=parameteryoy1[1]; for a:=1 to timelagautokorelasi do begin
begin parameterMAARMA[a-1]:=(parameterARARMA[a-1]/2); penampung:=penampung - parameteryoy1[1]*(parameterARARMA[a-1]-parameterMAARMA[a-1])*parameterMAARMA[a-1]; end else begin parameterMAtemp[0,0]:=(-(parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a- 1])+sqrt((parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a-1])*(parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a-1])-4*parameteryoy1[1]*penampung))/(2*parameteryoy1[1]); parameterMAtemp[0,1]:=(-(parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a-1])- sqrt((parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a-1])*(parameteryoy1[0]-parameteryoy1[1]*parameterARARMA[a-1])-4*parameteryoy1[1]*penampung))/(2*parameteryoy1[1]); end; end; for h:=1 to 2 do begin if timelagautokorelasiparsial=0 then begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin
errorduga[i-timelagautokorelasiparsial]:= 0; end;
end else begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin hasilramalanduga[i-timelagautokorelasiparsial]:=miu0ARMA; for j:=1 to timelagautokorelasiparsial do begin hasilramalanduga[i-timelagautokorelasiparsial]:=hasilramalanduga[i-timelagautokorelasiparsial]+(parameterARARMA[j-1]*datapenjualan[i-j]); end; end; //hitung et
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin
errorduga[i-timelagautokorelasiparsial]:= datapenjualan[i]-hasilramalanduga[i-timelagautokorelasiparsial];
end; end;
//cek apakah ada pengaruh MA
SetLength(errorARMAduga,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); if timelagautokorelasi=0 then
begin
for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do begin //set error ARMA duga parameter
errorARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]:= errorduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]; //jlhdataerror:=jlhdataerror+1; end; end else begin SetLength(hasilramalanARMAduga,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); //duga hasil ramalan ARMA dan parameter MA
for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do begin
hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]:=errorduga[i-1]+hasilramalanduga[i-1]; parameterMAARMA[timelagautokorelasi-1]:=parameterMAtemp[0,h-1]; for j:=1 to timelagautokorelasi do begin hasilramalanARMAduga[i- (timelagautokorelasi+timelagautokorelasiparsial)]:=hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]-(parameterMAARMA[j-1]*errorduga[i-j-1]); end; end; Absduga[h-1]:=0;
for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do begin errorARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]:= datapenjualan[i]-hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]; //jlhdataerror:=jlhdataerror+1; Absduga[h-1]:=Absduga[h-1]+abs(errorARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]); end; end; end;
//perbandingan untuk mendapatkan minimum absolut error utk pendugaan parameter Ma if Absduga[0] < Absduga[1] then
begin parameterMAARMA[timelagautokorelasi-1]:=parameterMAtemp[0,0]; end else begin parameterMAARMA[timelagautokorelasi-1]:=parameterMAtemp[0,1]; end; Memo4.Clear;
Memo4.Lines.Add('Estimasi Parameter dari Model AR, MA, dan ARMA'); Memo4.Lines.Add('===========================');
Memo4.Lines.Add('');
Memo4.Lines.Add('Bentuk matematis AR('+IntToStr(timelagautokorelasiparsial)+') : '); persamaan := 'Xt = '+FloatToStr(miu0AR);
for a:=1 to timelagautokorelasiparsial do begin
persamaan:= persamaan +' + '+ Format('%.5f', [parameterAR[a-1]]) +' * Xt-'+ IntToStr(a); end;
persamaan:=persamaan + ' + et'; Memo4.Lines.Add(persamaan); Memo4.Lines.Add('');
Memo4.Lines.Add('Bentuk matematis MA('+IntToStr(timelagautokorelasi)+') : '); persamaan := 'Xt = '+FloatToStr(meandatapenjualan);
persamaan:=persamaan + ' + et'; for a:=1 to timelagautokorelasi do begin if parameterMAARMA[a-1]<0 then begin persamaan:= persamaan + ' + '; end else begin persamaan:= persamaan + ' - '; end;
persamaan:= persamaan + FloatToStr(abs(parameterMA[a-1])) +' * et-'+IntToStr(a); end;
Memo4.Lines.Add('');
Memo4.Lines.Add('Bentuk matematis
ARMA('+IntToStr(timelagautokorelasiparsial)+','+IntToStr(timelagautokorelasi)+') : '); persamaan := 'Xt = '+FloatToStr(miu0ARMA) +' + ';
for a:=1 to timelagautokorelasiparsial do begin
persamaan:= persamaan + Format('%.5f', [parameterARARMA[a-1]]) +' * Xt-'+ IntToStr(a); end;
persamaan:=persamaan + ' + et'; for a:=1 to timelagautokorelasi do begin if parameterMA[a-1]<0 then begin persamaan:= persamaan + ' + '; end else begin persamaan:= persamaan + ' - '; end;
persamaan:= persamaan + FloatToStr(abs(parameterMAARMA[a-1])) +' * et-'+IntToStr(a); end;
Memo4.Lines.Add(persamaan); end;
procedure TForm1.BsinglemovingAvgClick(Sender: TObject); var SMA1,SMA2,SMA3:array of real;
var i,j,cekdata,flag:Integer; var PESMA1,PESMA2,PESMA3,APESMA1,APESMA2,APESMA3,abserrorSMA1,abserrorSMA2,abserror SMA3,squareerrorSMA1,squareerrorSMA2,squareerrorSMA3 : real; begin if tanda = 1 then begin PsingleMA.Visible:=true; Phasildiagnosis.Visible:=false; end else begin PsingleMA.Visible:=false; Phasildiagnosis.Visible:=false; end; SetLength(SMA1,banyakdata+1); SetLength(SMA2,banyakdata+1); SetLength(SMA3,banyakdata+1); SetLength(SMA,banyakdata+1); PESMA1:=0; PESMA2:=0; PESMA3:=0; APESMA1:=0; APESMA2:=0; APESMA3:=0; squareerrorSMA1:=0; squareerrorSMA2:=0; squareerrorSMA3:=0; abserrorSMA1:=0; abserrorSMA2:=0; abserrorSMA3:=0; cekdata:=0;
flag:=0;
if banyakdata > 10 then begin
for i:=1 to banyakdata+1 do begin SMA3[i-1]:=0; if i<11 then begin SMA3[i-1]:=0; end else begin if i=(banyakdata+1) then begin for j:=1 to 10 do begin SMA3[i-1]:=SMA3[i-1]+datapenjualan[j+i-12]; end; SMA3[i-1]:=SMA3[i-1]/10; end else // utk i= banyakdata+1 begin for j:=1 to 10 do begin SMA3[i-1]:=SMA3[i-1]+datapenjualan[j+i-12]; end; SMA3[i-1]:=SMA3[i-1]/10; abserrorSMA3:=abserrorSMA3+ abs(datapenjualan[i-1]-SMA3[i-1]); squareerrorSMA3:=squareerrorSMA3+ ((datapenjualan[i-1]-SMA3[i-1])*(datapenjualan[i-1]-SMA3[i-1])); PESMA3:=PESMA3+(100*(datapenjualan[i-1]-SMA3[i-1])/SMA3[i-1]); APESMA3:=APESMA3+abs(100*(datapenjualan[i-1]-SMA3[i-1])/SMA3[i-1]); end; end; end; cekdata:=cekdata+1; end; if banyakdata >7 then begin
for i:=1 to banyakdata+1 do begin SMA2[i-1]:=0; if i<8 then begin SMA2[i-1]:=0; end else begin if i=(banyakdata+1) then begin for j:=1 to 7 do begin SMA2[i-1]:=SMA2[i-1]+datapenjualan[j+i-9]; end; SMA2[i-1]:=SMA2[i-1]/7; end else // utk i= banyakdata+1 begin
for j:=1 to 7 do begin
SMA2[i-1]:=SMA2[i-1]+datapenjualan[j+i-9]; end; SMA2[i-1]:=SMA2[i-1]/7; abserrorSMA2:=abserrorSMA2+ abs(datapenjualan[i-1]-SMA2[i-1]); squareerrorSMA2:=squareerrorSMA2+ ((datapenjualan[i-1]-SMA2[i-1])*(datapenjualan[i-1]-SMA2[i-1])); PESMA2:=PESMA2+(100*(datapenjualan[i-1]-SMA2[i-1])/SMA2[i-1]); APESMA2:=APESMA2+abs(100*(datapenjualan[i-1]-SMA2[i-1])/SMA2[i-1]); end; end; end; cekdata:=cekdata+1; end; if banyakdata >5 then begin
for i:=1 to banyakdata+1 do begin SMA1[i-1]:=0; if i<6 then begin SMA1[i-1]:=0; end else begin if i=(banyakdata+1) then begin for j:=1 to 5 do begin SMA1[i-1]:=SMA1[i-1]+datapenjualan[j+i-7]; end; SMA1[i-1]:=SMA1[i-1]/5; end else // utk i= banyakdata+1 begin for j:=1 to 5 do begin SMA1[i-1]:=SMA1[i-1]+datapenjualan[j+i-7]; end; SMA1[i-1]:=SMA1[i-1]/5; abserrorSMA1:=abserrorSMA1+ abs(datapenjualan[i-1]-SMA1[i-1]); squareerrorSMA1:=squareerrorSMA1+ ((datapenjualan[i-1]-SMA1[i-1])*(datapenjualan[i-1]-SMA1[i-1])); PESMA1:=PESMA1+(100*(datapenjualan[i-1]-SMA1[i-1])/SMA1[i-1]); APESMA1:=APESMA1+abs(100*(datapenjualan[i-1]-SMA1[i-1])/SMA1[i-1]); end; end; end; cekdata:=cekdata+1; end; if cekdata=1 then begin
for i:=1 to banyakdata+1 do begin
SMA[i-1]:=SMA1[i-1]; end;
flag:=1;
end else if cekdata=2 then begin
if squareerrorSMA1 < squareerrorSMA2 then begin
for i:=1 to banyakdata+1 do begin SMA[i-1]:=SMA1[i-1]; end; flag:=1; end else begin
for i:=1 to banyakdata+1 do begin
SMA[i-1]:=SMA2[i-1]; end;
flag:=2; end;
end else if cekdata=3 then begin
if (squareerrorSMA1 < squareerrorSMA2) and (squareerrorSMA1 < squareerrorSMA3) then begin
for i:=1 to banyakdata+1 do begin
SMA[i-1]:=SMA1[i-1]; end;
flag:=1;
end else if (squareerrorSMA2<squareerrorSMA1) and (squareerrorSMA2<squareerrorSMA3) then begin
for i:=1 to banyakdata+1 do begin SMA[i-1]:=SMA2[i-1]; end; flag:=2; end else begin
for i:=1 to banyakdata+1 do begin SMA[i-1]:=SMA3[i-1]; end; flag:=3; end; end; Memo6.Clear;
Memo6.Lines.Add('Rata-rata Bergerak Tunggal'); Memo6.Lines.Add('======================'); Memo6.Lines.Add('');
Memo6.Lines.Add('Interval : '); Memo6.Lines.Add('i=5 ');
Memo6.Lines.Add('Absolute error: '+FloatToStr(abserrorSMA1)); Memo6.Lines.Add('Squared error: '+FloatToStr(squareerrorSMA1)); Memo6.Lines.Add('');
Memo6.Lines.Add('i=7 ');
Memo6.Lines.Add('Absolute error: '+FloatToStr(abserrorSMA2)); Memo6.Lines.Add('Squared error: '+FloatToStr(squareerrorSMA2)); Memo6.Lines.Add('');
Memo6.Lines.Add('i=10 ');
Memo6.Lines.Add('Absolute error: '+FloatToStr(abserrorSMA3)); Memo6.Lines.Add('Squared error: '+FloatToStr(squareerrorSMA3));
Memo6.Lines.Add('');
Memo6.Lines.Add('Berdasarkan ukuran absolute error'); if flag = 1 then
begin
Memo6.Lines.Add('Interval yang digunakan dalam model rata-rata bergerak tunggal adalah : 5.'); MSESMA := squareerrorSMA1/(banyakdata-5);
MAESMA := abserrorSMA1/(banyakdata-5); MAPESMA:= APESMA1/(banyakdata-5); end else if flag=2 then
begin
Memo6.Lines.Add('Interval yang digunakan dalam model rata-rata bergerak tunggal adalah : 7.'); MSESMA := squareerrorSMA2/(banyakdata-7);
MAESMA := abserrorSMA2/(banyakdata-7); MAPESMA:= APESMA2/(banyakdata-7); end else if flag=3 then
begin
Memo6.Lines.Add('Interval yang digunakan dalam model rata-rata bergerak tunggal adalah : 10.'); MSESMA := squareerrorSMA3/(banyakdata-10); MAESMA := abserrorSMA3/(banyakdata-10); MAPESMA:= APESMA3/(banyakdata-10); end; Series4.Clear; Series4.AddArray(SMA); Series10.Clear; Series10.AddArray(datapenjualan); end;
procedure TForm1.BkeputusanClick(Sender: TObject); begin
metode:=0; Memo9.Clear;
Memo9.Lines.Add('MAE ARMA : '+FloatToStr(MAEARMA)); Memo9.Lines.Add('MSE ARMA : '+FloatToStr(MSEARMA)); Memo9.Lines.Add('MAPE ARMA : '+FloatToStr(MAPEARMA)); Memo9.Lines.Add('');
Memo9.Lines.Add('MAE rata-rata bergerak tunggal : '+FloatToStr(MAESMA)); Memo9.Lines.Add('MSE rata-rata bergerak tunggal : '+FloatToStr(MSESMA)); Memo9.Lines.Add('MAPE rata-rata bergerak tunggal : '+FloatToStr(MAPESMA)); Memo9.Lines.Add('');
if MAPESMA=MAPEARMA then begin
Memo9.Lines.Add('kesimpulan: ');
Memo9.Lines.Add('tidak dapat menolak Ho ( Tidak ada perbedaan antara metode Autoregressive-Moving Average dan metode Rata-rata Bergerak Tunggal). ');
Memo9.Lines.Add(''); end else
begin
Memo9.Lines.Add('kesimpulan: ');
Memo9.Lines.Add('dapat menolak Ho (ada perbedaan antara metode Autoregressive-Moving Average dan metode Rata-rata Bergerak Tunggal). ');
Memo9.Lines.Add('');
if MAPESMA <MAPEARMA then begin
Memo9.Lines.Add('Dari hasil MAE, MSE serta MAPE yang dihasilkan, maka dapat disimpulkan bahwa : Rata-rata bergerak tunggal lebih akurat dalam meramalkan penjualan besi As ST41 putih ukuran 7mm x 6m. ');
metode:=2; end else begin
Pratageraktunggal.Font.Color:=clBtnShadow;
Memo9.Lines.Add('Dari hasil MAE, MSE serta MAPE yang dihasilkan, maka dapat disimpulkan bahwa : metode Autoregressive Moving Average lebih akurat dalam meramalkan penjualan besi As ST41 putih ukuran 7mm x 6m. '); metode:=1; end; end; PsingleMA.Visible:=false; Phasilkeptsan.Visible:=true; end;
procedure TForm1.Bkel1Click(Sender: TObject); begin Pdata.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.BkembalikeeditdataClick(Sender: TObject); begin
Pdata.Visible:=true; Pstasioner.Visible:=false; end;
procedure TForm1.Bkel2Click(Sender: TObject); begin Pstasioner.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.BkembalipilihClick(Sender: TObject); begin
Pstasioner.Visible:=true; Pbanding.Visible:=false; end;
procedure TForm1.Bkel4Click(Sender: TObject); begin PsingleMA.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.Bkembali4Click(Sender: TObject); begin
Phasildiagnosis.Visible:=true; PsingleMA.Visible:=false; end;
procedure TForm1.Bkembali5Click(Sender: TObject); begin
Phasildiagnosis.Visible:=false; Pdugaparameter.Visible:=true; end;
procedure TForm1.Bkeluar5Click(Sender: TObject); begin Phasildiagnosis.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.Bkeluar6Click(Sender: TObject); begin Pdugaparameter.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.Bkembali6Click(Sender: TObject); begin
Pdugaparameter.Visible:=false; Pautokorelasiparsial.Visible:=true; end;
procedure TForm1.Bkeluar7Click(Sender: TObject); begin Pautokorelasiparsial.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.Bkembali7Click(Sender: TObject); begin Pautokorelasiparsial.Visible:=false; Pbanding.Visible:=true; Bmasukramal.Visible:=false; Bkembalipilih.Visible:=true; end;
procedure TForm1.BkembaliputusClick(Sender: TObject); begin
PsingleMA.Visible:=true; end;
procedure TForm1.NamaUserKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then
BmasukloginClick(Sender); end;
procedure TForm1.PasswordUserKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then
BmasukloginClick(Sender); end;
procedure TForm1.namagantiKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then
BgantipassbaruClick(Sender); end;
procedure TForm1.passbaruKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then
BgantipassbaruClick(Sender); end;
procedure TForm1.konfirmasipassbaruKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
BgantipassbaruClick(Sender); end;
procedure TForm1.passlamaKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then
BgantipassbaruClick(Sender); end;
procedure TForm1.varabelramalKeyPress(Sender: TObject; var Key: Char); begin
if key = #13 then BramalpenjualanClick(sender); if ((key <#58) and (key >#47)) or (key=#8) then begin end else begin key:=#0; end; end;
procedure TForm1.BramalpenjualanClick(Sender: TObject); var j,i,x,penurun : integer;
var ramalan,databaru,errorMAbaru : array of Double; begin
begin
MessageBox(Self.Handle,'silakan masukkan bulan sebelum meramal','Validasi',MB_OK); end else
begin
Memo7.clear;
Memo7.Lines.Add('Hasil peramalan Besi As ST41 putih ukuran 7mmx6m PT.Batraja Rona Steel'); Memo7.Lines.Add('Untuk '+varabelramal.Text+' bulan ke depan adalah :');
x:=StrToInt(varabelramal.Text); if metode=1 then begin if tandaARMA=1 then begin SetLength(ramalan,x); SetLength(databaru,x+timelagautokorelasiparsial); penurun:=timelagautokorelasiparsial;
for i:=1 to timelagautokorelasiparsial do begin databaru[i-1]:=datapenjualan[banyakdata-penurun]; penurun:=penurun-1; end; for i:= 1 to x do begin ramalan[i-1]:=miu0AR; for j:=1 to timelagautokorelasiparsial do begin ramalan[i-1]:=ramalan[i-1]+parameterAR[j-1]*databaru[i+timelagautokorelasiparsial-j-1]; end; databaru[timelagautokorelasiparsial+i-1]:=ramalan[i-1]; end; Memo7.Lines.Add(FloatToStr(ramalan[x-1])); end else if tandaARMA=2 then
begin
SetLength(ramalan,x);
SetLength(errorMAbaru,x+timelagautokorelasi); penurun:=timelagautokorelasi;
for i:=1 to timelagautokorelasi do begin errorMAbaru[i-1]:=datapenjualan[banyakdata-penurun]-hasilramalanMA[banyakdata-penurun]; penurun:=penurun-1; end; for i:= 1 to x do begin ramalan[i-1]:=miu0MA; for j:=1 to timelagautokorelasi do begin ramalan[i-1]:=ramalan[i-1]-(parameterMA[j-1]*errorMAbaru[i-1+timelagautokorelasi-j]); end; errorMAbaru[i-1+timelagautokorelasi]:=0; end; Memo7.Lines.Add(FloatToStr(ramalan[x-1])); end else if tandaARMA=3 then
begin
SetLength(ramalan,x);
SetLength(databaru,x+timelagautokorelasiparsial); SetLength(errorMAbaru,x+timelagautokorelasi); penurun:=timelagautokorelasiparsial;
for i:=1 to timelagautokorelasiparsial do begin databaru[i-1]:=datapenjualan[banyakdata-penurun]; penurun:=penurun-1; end; penurun:=timelagautokorelasi+1; for i:=1 to timelagautokorelasi do begin errorMAbaru[i-1]:=errorduga[banyakdata-penurun]; penurun:=penurun-1; end; for i:=1 to x do begin ramalan[i-1]:=miu0ARMA; for j:=1 to timelagautokorelasiparsial do begin ramalan[i-1]:=ramalan[i-1]+(parameterARARMA[j-1]*databaru[i+timelagautokorelasiparsial-j-1]); end; errorMAbaru[i-1+timelagautokorelasi]:= 0; for j:=1 to timelagautokorelasi do begin ramalan[i-1]:=ramalan[i-1]-(parameterMAARMA[j-1]*errorMAbaru[i-1+timelagautokorelasi-j]); end; end; Memo7.Lines.Add(FloatToStr(ramalan[x-1])+' ton'); end;
end else if metode=2 then begin
Memo7.Lines.Add(FloatToStr(SMA[banyakdata])+' ton'); end;
end; end;
procedure TForm1.BmasukramalClick(Sender: TObject); begin Pbanding.Visible:=false; Pperamalan.Visible:=true; varabelramal.SetFocus; varabelramal.Text:=''; Memo7.Clear; end;
procedure TForm1.Bkembali8Click(Sender: TObject); begin
Pperamalan.Visible:=false; Pbanding.Visible:=true; end;
procedure TForm1.BdiagnosaClick(Sender: TObject); var
errorARARMA,errortes,error,errorARMA,errorAR,errorMA,hasilramalan,hasilramalanduga,hasilramalan ARMAduga : array of Double;
var hint1,hint2,hint3,i,j,jlhdataerror,turun:Integer; var
totalerrorARMA,Abs1,Abs2,Abs3,SE1,SE2,SE3,PE1,PE2,PE3,APE1,APE2,APE3,MAE1,MAE2,MAE3, MAPE1,MAPE2,MAPE3,MSE1,MSE2,MSE3:Real;
begin
Memo5.Clear;
hint1:=0; hint2:=0; hint3:=0; jlhdataerror:=0;
Abs1:=0; abs2:=0; Abs3:=0; SE1:=0; SE2:=0; SE3:=0; PE1:=0; PE2:=0; PE3:=0; APE1:=0; APE2:=0; APE3:=0; MSE1:=0; MSE2:=0; MSE3:=0; MAPE1:=0; MAPE2:=0; MAPE3:=0; MAE1:=0; MAE3:=0; miu0MA:=meandatapenjualan; Memo5.Clear; if tanda =1 then begin Pdugaparameter.Visible:=false; Phasildiagnosis.Visible:=true; end else begin Pdugaparameter.Visible:=false; Phasildiagnosis.Visible:=false; end; SetLength(errorduga,(banyakdata-timelagautokorelasiparsial)); SetLength(hasilramalanduga,(banyakdata-timelagautokorelasiparsial)); SetLength(error,(banyakdata-timelagautokorelasiparsial)); SetLength(errorAR,(banyakdata-timelagautokorelasiparsial)); SetLength(errorARARMA,(banyakdata-timelagautokorelasiparsial)); SetLength(errorMA,(banyakdata)); SetLength(errortes,(banyakdata+timelagautokorelasi+3)); SetLength(hasilramalanAR,(banyakdata-timelagautokorelasiparsial)); SetLength(hasilramalanMA,(banyakdata)); SetLength(hasilramalan,(banyakdata-timelagautokorelasiparsial)); SetLength(Datasimpanbaru,100); SetLength(errorsimpanbaru,100); if timelagautokorelasiparsial>0 then begin hint1:=1; for i:=1 to 100 do begin errorsimpanbaru[i-1]:=0; end; //hitung errorar if timelagautokorelasiparsial=0 then begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin
errorAR[i-timelagautokorelasiparsial]:= 0; end;
end else begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin
hasilramalanAR[i-timelagautokorelasiparsial]:=miu0AR; for j:=1 to timelagautokorelasiparsial do
hasilramalanAR[i-timelagautokorelasiparsial]:=hasilramalanAR[i-timelagautokorelasiparsial]+parameterAR[j-1]*datapenjualan[i-j]; end;
//Memo5.Lines.Add('AR ke '+IntToStr(i)+' = '+FloatToStr(hasilramalanAR[i-timelagautokorelasiparsial]));
end; //hitung et
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin errorAR[i-timelagautokorelasiparsial]:= datapenjualan[i]-hasilramalanAR[i-timelagautokorelasiparsial]; Abs1:=Abs1+abs(errorAR[i-timelagautokorelasiparsial]); SE1:=SE1+(errorAR[i-timelagautokorelasiparsial]*errorAR[i-timelagautokorelasiparsial]); PE1:=PE1+(100*(errorAR[i-timelagautokorelasiparsial]/hasilramalanAR[i-timelagautokorelasiparsial])); APE1:=APE1+abs(100*(errorAR[i-timelagautokorelasiparsial]/hasilramalanAR[i-timelagautokorelasiparsial])); end; MAE1:=abs1/(banyakdata-timelagautokorelasiparsial); MSE1:=SE1/(banyakdata-timelagautokorelasiparsial); MAPE1:=APE1/(banyakdata-timelagautokorelasiparsial); end; end; //duga errorMA if timelagautokorelasi>0 then begin hint2:=1;
for i:=1 to (banyakdata+timelagautokorelasi) do begin
errortes[i-1]:=0; end;
for i:= 1 to (banyakdata) do begin hasilramalanMA[i-1]:=miu0MA+errortes[i-1+timelagautokorelasi]; for j:=1 to timelagautokorelasi do begin hasilramalanMA[i-1]:=hasilramalanMA[i-1]-(parameterMA[j-1]*errortes[i-1+timelagautokorelasi-j]); end; errortes[i-1+timelagautokorelasi]:=datapenjualan[i-1]-hasilramalanMA[i-1]; end;
for i:= timelagautokorelasi to (banyakdata-1) do begin errorMA[i-timelagautokorelasi]:= datapenjualan[i]-hasilramalanMA[i]; Abs2:=Abs2+abs(errorMA[i-timelagautokorelasi]); SE2:=SE2+(errorMA[i-timelagautokorelasi]*errorMA[i-timelagautokorelasi]); PE2:=PE2+(100*(errorMA[i-timelagautokorelasi]/hasilramalanMA[i])); APE2:=APE2+abs(100*(errorMA[i-timelagautokorelasi]/hasilramalanMA[i])); end; MAE2:=abs2/(banyakdata); MSE2:=SE2/(banyakdata); MAPE2:=APE2/(banyakdata); end;
//hasil ramalan dari ARARMA
if (timelagautokorelasi>0) and (timelagautokorelasiparsial>0) then begin
hint3:=1;
if (timelagautokorelasiparsial=0) and (timelagautokorelasi=0) then begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin errorduga[i-timelagautokorelasiparsial]:= 0; end; end else begin
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin hasilramalanduga[i-timelagautokorelasiparsial]:=miu0ARMA; for j:=1 to timelagautokorelasiparsial do begin hasilramalanduga[i-timelagautokorelasiparsial]:=hasilramalanduga[i-timelagautokorelasiparsial]+(parameterARARMA[j-1]*datapenjualan[i-j]); end; end; //hitung et
for i:= timelagautokorelasiparsial to (banyakdata-1) do begin
errorduga[i-timelagautokorelasiparsial]:= datapenjualan[i]-hasilramalanduga[i-timelagautokorelasiparsial];
end; end;
//cek apakah ada pengaruh MA
SetLength(errorARMAduga,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); if timelagautokorelasi=0 then
begin
for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do begin //set error ARMA duga parameter
errorARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]:= errorduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]; jlhdataerror:=jlhdataerror+1; end; end else begin SetLength(hasilramalanARMAduga,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); //duga hasil ramalan ARMA dan parameter MA
for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do begin hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]:=errorduga[i-1]+hasilramalanduga[i-1]; for j:=1 to timelagautokorelasi do begin hasilramalanARMAduga[i- (timelagautokorelasi+timelagautokorelasiparsial)]:=hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]-(parameterMAARMA[j-1]*errorduga[i-j-1]); end; end; SetLength(hasilramalanARMA,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); SetLength(errorARMA,(banyakdata-timelagautokorelasi-timelagautokorelasiparsial)); for i:= (timelagautokorelasi+timelagautokorelasiparsial) to (banyakdata-1) do
begin hasilramalanARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]:=hasilramalanARMAduga[i-(timelagautokorelasi+timelagautokorelasiparsial)]; errorARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]:= datapenjualan[i]-hasilramalanARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]; Abs3:=Abs3+abs(errorARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]);
SE3:=SE3+(errorARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]*errorARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]); PE3:=PE3+(100*(errorARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)]/hasilramalanARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)])); APE3:=APE3+abs(100*(errorARMA[i- (timelagautokorelasi+timelagautokorelasiparsial)]/hasilramalanARMA[i-(timelagautokorelasi+timelagautokorelasiparsial)])); end; MAE3:=abs3/(banyakdata-(timelagautokorelasi+timelagautokorelasiparsial)); MSE3:=SE3/(banyakdata-(timelagautokorelasi+timelagautokorelasiparsial)); MAPE3:=APE3/(banyakdata-(timelagautokorelasi+timelagautokorelasiparsial)); end; end;
Memo5.Lines.Add('Hasil Diagnosis Model'); Memo5.Lines.Add(''); if hint1=1 then begin Memo5.Lines.Add('Model AR('+IntToStr(timelagautokorelasiparsial)+') / ARMA('+IntToStr(timelagautokorelasiparsial)+',0) adalah :'); Memo5.Lines.Add('MAE = ' +FloatToStr(MAE1)); Memo5.Lines.Add('MSE = ' +FloatToStr(MSE1)); Memo5.Lines.Add(''); end; if hint2=1 then begin Memo5.Lines.Add('Model MA('+IntToStr(timelagautokorelasi)+') / ARMA(0,'+IntToStr(timelagautokorelasi)+') adalah :'); Memo5.Lines.Add('MAE = ' +FloatToStr(MAE2)); Memo5.Lines.Add('MSE = ' +FloatToStr(MSE2)); Memo5.Lines.Add(''); end; if hint3=1 then begin Memo5.Lines.Add('Model ARMA('+IntToStr(timelagautokorelasiparsial)+','+IntToStr(timelagautokorelasi)+') adalah :'); Memo5.Lines.Add('MAE = ' +FloatToStr(MAE3)); Memo5.Lines.Add('MSE = ' +FloatToStr(MSE3)); Memo5.Lines.Add(''); end; turun:=timelagautokorelasiparsial; for j:=1 to timelagautokorelasiparsial do begin Datasimpanbaru[j-1]:=datapenjualan[banyakdata-turun]; turun:=turun-1; end; if hint3=1 then begin
if (MAE1 < MAE2) and (MAE1<MAE3) then begin
tandaARMA:=1; MAPEARMA:=MAPE1; MAEARMA:=MAE1; MSEARMA:=MSE1;
Memo5.Lines.Add('Jadi berdasarkan MAE dan MSE yang diperoleh, maka model yang terpilih adalah Model AR('+IntToStr(timelagautokorelasiparsial)+') /
end else if (MAE2 < MAE1) and (MAE2<MAE3) then begin tandaARMA:=2; MAPEARMA:=MAPE2; MAEARMA:=MAE2; MSEARMA:=MSE2;
Memo5.Lines.Add('Jadi berdasarkan MAE dan MSE yang diperoleh, maka model yang terpilih adalah Model MA('+IntToStr(timelagautokorelasi)+') / ARMA(0,'+IntToStr(timelagautokorelasi)+')'); turun:=timelagautokorelasi; for j:=1 to timelagautokorelasi do begin errorsimpanbaru[j-1]:=errortes[banyakdata-turun]; turun:=turun-1; end;
end else if (MAE3 < MAE1) and (MAE3<MAE2) then begin tandaARMA:=3; MAPEARMA:=MAPE3; MAEARMA:=MAE3; MSEARMA:=MSE3; end;
end else if hint2=1 then begin
tandaARMA:=2; MAPEARMA:=MAPE2; MAEARMA:=MAE2; MSEARMA:=MSE2;
Memo5.Lines.Add('Jadi berdasarkan MAE dan MSE yang diperoleh, maka model yang terpilih adalah Model MA('+IntToStr(timelagautokorelasi)+') / ARMA(0,'+IntToStr(timelagautokorelasi)+')'); turun:=timelagautokorelasi; for j:=1 to timelagautokorelasi do begin errorsimpanbaru[j-1]:=errortes[banyakdata-turun]; turun:=turun-1; end;
end else if hint1=1 then begin
tandaARMA:=1; MAPEARMA:=MAPE1; MAEARMA:=MAE1; MSEARMA:=MSE1;
Memo5.Lines.Add('Jadi berdasarkan MAE dan MSE yang diperoleh, maka model yang terpilih adalah Model AR('+IntToStr(timelagautokorelasiparsial)+') / ARMA('+IntToStr(timelagautokorelasiparsial)+',0)'); end; Series5.Clear; Series6.Clear; Series7.Clear; Series8.Clear; Series6.AddArray(datapenjualan); for j:=1 to (timelagautokorelasi+timelagautokorelasiparsial) do begin series7.Add(hasilramalanARMA[0],'',clWindow); end; series7.AddArray(hasilramalanARMA); for j:=1 to (timelagautokorelasiparsial) do
begin series5.Add(hasilramalanAR[0],'',clWindow); end; series5.AddArray(hasilramalanAR); for j:=1 to (timelagautokorelasi) do begin series8.Add(hasilramalanMA[0],'',clWindow); end; series8.AddArray(hasilramalanMA); end;
procedure TForm1.BtentangkamiClick(Sender: TObject); begin
Memo8.Clear;
Memo8.Lines.Add('Program Aplikasi Perbandingan dan Peramalan Metode Autoregressive-Moving Average dengan Rata-rata Bergerak Tunggal');
Memo8.Lines.Add('============================================================= ============================');
Memo8.Lines.Add('');
Memo8.Lines.Add('Membandingkan metode ARMA dengan metode Rata-rata bergerak tunggal, kemudian meramalkan tingkat penjualan Besi As putih untuk periode mendatang berdasarkan metode yang memiliki keakuratan terbaik');
Memo8.Lines.Add(''); Memo8.Lines.Add('Oleh :');
Memo8.Lines.Add('Johan untuk PT. Batraja Rona Steel.'); Memo8.Lines.Add('');
Memo8.Lines.Add('Informasi lebih lanjut hubungi'); Memo8.Lines.Add('Email : joh4n_m4@yahoo.com'); end;
procedure TForm1.Button3Click(Sender: TObject); begin
Memo8.Clear;
Memo8.Lines.Add('Cara Pemakaian Program Aplikasi');
Memo8.Lines.Add('============================================================= ============================');
Memo8.Lines.Add('');
Memo8.Lines.Add('1. Login dengan menggunakan nama serta password yang spesifik (hanya yang berkepentingan yang memiliki akses menggunakan program aplikasi ini)');
Memo8.Lines.Add(' Dalam Menu Login, pengguna diberikan hak akses untuk mengganti password atau untuk keluar dari program aplikasi');
Memo8.Lines.Add('');
Memo8.Lines.Add('2. Masuk ke menu/tampilan Utama, terdapat 2 pilihan utama ke menu lainnya yakni menu Lihat Grafik Data serta menu Cek Data (kestasioneran)');
Memo8.Lines.Add(' Di menu/tampilan Utama ini disajikan data penjualan Besi As ST41 putih ukuran 7mmx6m PT.Batraja Rona Steel');
Memo8.Lines.Add('');
Memo8.Lines.Add('3. Apabila menu Lihat Grafik Data terpilih, akan muncul menu/tampilan grafik data penjualan Besi As ST41 putih ukuran 7mmx6m PT.Batraja Rona Steel.');
Memo8.Lines.Add('');
Memo8.Lines.Add('4. Cek Data (Kestasioneran) menunjukkan apakah data penjualan Besi As putih memiliki kestasioneran atau tidak.');
Memo8.Lines.Add('Dalam menu ini ditampilkan grafik serta nilai autokorelasi yang diperlukan untuk menunjukkan kestasioneran data. Apabila memiliki kestasioneran, maka dilanjutkan dengan pemilihan metode');
Memo8.Lines.Add('5. Pemilihan Metode peramalan, terdapat 2 pilihan menu yakni ke menu peramalan Besi As ST41 putih ukuran 7mmx6m dan ke menu Lihat Analisis Data. ');
Memo8.Lines.Add('');
Memo8.Lines.Add('6. Dalam Lihat Analisis Data, awal analisis yakni mencari autokorelasi parsial dari data penjualan untuk memperoleh model-model ARMA yang sesuai.');
Memo8.Lines.Add(' Dalam menu ini disajikan grafik serta nilai autokorelasi parsial. Tahap selanjutnya adalah estimasi parameter untuk model-model ARMA');
Memo8.Lines.Add('');
Memo8.Lines.Add('7. Tahap estimasi parameter menampilkan model matematis dari masing-masing model ARMA yang sesuai dengan data penjualan. Tahap selanjutnya adalah diagnosis model-model ARMA.');
Memo8.Lines.Add('');
Memo8.Lines.Add('8. Tahap diagnosis model menampilkan grafik perbandingan data aktual dengan model-model ARMA yang sesuai dengan data penjualan serta disajikan MAE dan MSE dari masing-masing model ARMA.');
Memo8.Lines.Add('Tahap selanjutnya adalah Analisis peramalan Rata-rata Bergerak Tunggal.'); Memo8.Lines.Add('');
Memo8.Lines.Add('9. Tahap peramalan Rata-rata Bergerak Tunggal menyajikan absolut dan squared error dari masing-masing model Rata-rata Bergerak tunggal. Tahap selanjutnya adalah keputusan pemilihan metode.');
Memo8.Lines.Add('');
Memo8.Lines.Add('10. Tahap keputusan. Dalam menu ini menampilkan keterangan metode mana yang lebih akurat.');
Memo8.Lines.Add('');
Memo8.Lines.Add('11. Dalam tahap peramalan, pengguna dapat memasukkan t periode kedepan yang ingin diprediksi hasil ramalannya berdasarkan metode yang terpilih sebelumnya.');
Memo8.Lines.Add('');
Memo8.Lines.Add('12. Dalam setiap menu terdapat menu Bantuan, Keluar serta Kembali.'); Memo8.Lines.Add(' Menu Bantuan : menampilkan cara pemakaian program aplikasi serta tentang kami');
Memo8.Lines.Add(' Menu Keluar : Keluar ke menu login (log out dari program aplikasi).'); Memo8.Lines.Add(' Menu Kembali : Kembali ke menu sebelumnya dari menu sekarang.'); end;
procedure TForm1.BOkClick(Sender: TObject); begin
PBantuan.Visible:=false; if sign=1 then
begin
Pdata.Visible:=true; end else if sign=2 then begin
Pstasioner.Visible:=true; end else if sign=3 then begin
Pbanding.Visible:=true; end else if sign=4 then begin
Pautokorelasiparsial.Visible:=true; end else if sign=5 then
begin
Pdugaparameter.Visible:=true; end else if sign=6 then begin
Phasildiagnosis.Visible:=true; end else if sign=7 then
begin
PsingleMA.Visible:=true; end else if sign=8 then begin
Phasilkeptsan.Visible:=true; end;
sign:=0; end;
procedure TForm1.Bbantuan2Click(Sender: TObject); begin Memo8.Clear; PBantuan.Visible:=true; Pstasioner.Visible:=false; sign:=2; end;
procedure TForm1.Bbantuan3Click(Sender: TObject); begin memo8.Clear; PBantuan.Visible:=true; Pbanding.Visible:=false; sign:=3; end;
procedure TForm1.Bbantuan6Click(Sender: TObject); begin Memo8.Clear; Memo8.Lines.Add(''); PBantuan.Visible:=true; Pdugaparameter.Visible:=false; sign:=5; end;
procedure TForm1.Bbantuan7Click(Sender: TObject); begin Memo8.Clear; Memo8.Lines.Add(''); PBantuan.Visible:=true; Pautokorelasiparsial.Visible:=false; sign:=4; end;
procedure TForm1.Bbantuan4Click(Sender: TObject); begin Memo8.Clear; Memo8.Lines.Add(''); PBantuan.Visible:=true; PsingleMA.Visible:=false; sign:=7; end;
procedure TForm1.Bbantuan5Click(Sender: TObject); begin
Memo8.Clear; Memo8.Lines.Add('');
PBantuan.Visible:=true; Phasildiagnosis.Visible:=false; sign:=6;
end;
procedure TForm1.BliatdetailClick(Sender: TObject); begin
tanda:=1; autokorelasipar(); end;
procedure TForm1.BselClick(Sender: TObject); begin
Pdata.Visible:=true; Pview.Visible:=false; end;
procedure TForm1.BviewClick(Sender: TObject); begin
Pdata.Visible:=false; Pview.Visible:=true; end;
procedure TForm1.Bbantuan1Click(Sender: TObject); begin memo8.Clear; Pdata.Visible:=false; PBantuan.Visible:=true; sign:=1; end; procedure TForm1.autokorelasipar; var a,I,q,r: Integer;
var nampung:Real;
var matriksparsial : array of array of Real; begin if tanda=1 then begin Pbanding.Visible:=false; Pautokorelasiparsial.Visible:=true; end else begin Pbanding.Visible:=false; Pautokorelasiparsial.Visible:=false; end; SetLength(matriksparsial,10);
for I := Low(matriksparsial) to High(matriksparsial) do begin SetLength(matriksparsial[I],10); end; for q :=0 to 9 do begin for r:=0 to 9 do begin matriksparsial[q,r]:=0;
end; end; setlength(autokorelasiparsial,11); for q:=0 to 9 do begin if q=0 then begin matriksparsial[q,q]:=autokorelasi[q+1]; end else if q=1 then
begin matriksparsial[q,q]:=(autokorelasi[q+1]-autokorelasi[q]*autokorelasi[q])/(1-autokorelasi[q]*autokorelasi[q]); end else begin for r:=1 to (q-1) do begin matriksparsial[q-1,r-1]:=matriksparsial[q-2,r-1]-matriksparsial[q-1,q-1]*matriksparsial[q-2,q-r-1]; end; nampung:=0; for r:=1 to q do begin nampung:=nampung + (matriksparsial[q-1,r-1]*autokorelasi[q-r+1]); end; matriksparsial[q,q]:=(autokorelasi[q+1]-nampung)/(1-nampung); end; end; autokorelasiparsial[0]:=1; for q:=1 to 10 do begin autokorelasiparsial[q]:= matriksparsial[q-1,q-1]; end; Memo2.Clear;
Memo2.Lines.Add('Autokorelasi parsial dari data penjualan Besi As ST41 putih ukuran 7mmx6m : '); Memo2.Lines.Add('');
for a:=1 to 10 do begin
Memo2.Lines.Add('time lag '+ IntToStr(a) +' = '+ FloatToStr(autokorelasiparsial[a]) +'.');
if (autokorelasiparsial[a]<batasatassignifikanNol) and (autokorelasiparsial[a]>batasbawahsignifikanNol) then begin timelagautokorelasiparsial:=timelagautokorelasiparsial; end else begin timelagautokorelasiparsial:=a; end; end; Series3.Clear; Series3.AddArray(autokorelasiparsial); Memo2.Lines.Add('');
Memo2.Lines.Add('Tes signifikan berbeda dari Null');
Memo2.Lines.Add('autokorelasi pada time lag :'+IntToStr(timelagautokorelasi));
Memo2.Lines.Add('autokorelasi parsial pada time lag :'+IntToStr(timelagautokorelasiparsial)); Memo2.Lines.Add('');
Memo2.Lines.Add('Jadi model AR yang cocok untuk peramalan adalah AR('+IntToStr(timelagautokorelasiparsial)+') ');
Memo2.Lines.Add('Jadi model MA yang cocok untuk peramalan adalah MA('+IntToStr(timelagautokorelasi)+') ');
Memo2.Lines.Add('');
Memo2.Lines.Add('Jadi model ARMA yang cocok untuk peramalan adalah
ARMA('+IntToStr(timelagautokorelasiparsial)+','+IntToStr(timelagautokorelasi)+') '); end;
procedure TForm1.Bkeluar9Click(Sender: TObject); begin Phasilkeptsan.Visible:=false; Plogin.Visible:=true; NamaUser.Text:=''; PasswordUser.Text:=''; NamaUser.SetFocus; end;
procedure TForm1.BokkeptsanClick(Sender: TObject); begin
Phasilkeptsan.Visible:=false; Pbanding.Visible:=true; end;
procedure TForm1.Bkembali9Click(Sender: TObject); begin
PsingleMA.Visible:=true; Phasilkeptsan.Visible:=false; end;
procedure TForm1.Bbantuan9Click(Sender: TObject); begin Memo8.Clear; Memo8.Lines.Add(''); PBantuan.Visible:=true; Phasilkeptsan.Visible:=false; sign:=8; end; end.