Anda di halaman 1dari 9

ARW

clc;
clear;

% data = xlsread("D:\0_TESIS\MKA\Data Temperatur Maksimum.xlsx", 1, "B2:N71");


% data_train = xlsread("D:\0_TESIS\MKA\Data Temperatur Maksimum.xlsx", 1, "B2:N64");
% data_test = xlsread("D:\0_TESIS\MKA\Data Temperatur Maksimum.xlsx", 1, "B65:N71");
% jumlah_waktu = size(data_train, 1);
% jumlah_wilayah = size(data_train, 2);

data = xlsread("D:\0_TESIS\MKA\DATA BALI.xlsx", 1, "F2:F438");


data_train = xlsread("D:\0_TESIS\MKA\DATA BALI.xlsx", 1, "F2:F351");
data_test = xlsread("D:\0_TESIS\MKA\DATA BALI.xlsx", 1, "F352:F438");
jumlah_waktu = size(data_train, 1);
jumlah_wilayah = size(data_train, 2);

mean = mean(data_train)

mean = 6.0350

variansi = var(data_train)

variansi = 306.2287

% Plot data asli


figure;
plot(data_train);
title('Data Train');

1
% Plot rolling mean
figure;
movmean_data_train = movmean(data_train, 10); % Misalnya, moving average dengan jendela 10
plot(movmean_data_train);

2
% title('Moving Average (Data Train)');

% Uji ADF untuk menentukan stasioneritas dari Data Train


[h, pValue, ~] = adftest(data_train);
disp(['P-value dari uji ADF: ', num2str(pValue)]);

P-value dari uji ADF: 0.001

if h == 1
disp('Data train tidak stasioner dalam rata-rata');
else
disp('Data train stasioner dalam rata-rata');
end

Data train tidak stasioner dalam rata-rata

% Uji ADF untuk menentukan stasioneritas dari Data Train


[h, pValue, ~] = kpsstest(data_train);
disp(['P-value dari uji KPSS: ', num2str(pValue)]);

P-value dari uji KPSS: 0.1

if h == 1
disp('Data train tidak stasioner dalam variansi');
else
disp('Data train stasioner dalam variansi');

3
end

Data train stasioner dalam variansi

% Membuat QQ plot
qqplot(data_train);
title('QQ Plot dari Data Train');

% Membuat boxplot
figure;
boxplot(data_train);
title('Boxplot dari Data Train');
xlabel('Wilayah');
ylabel('Data');

4
% % Menerapkan transformasi Box-Cox pada data
% [transformed_data, lambda] = boxcox(data_train);
%
% % Menampilkan data yang telah diubah dan nilai lambda
% disp('Data yang telah diubah:');
% disp(transformed_data);
% disp(['Nilai Lambda: ', num2str(lambda)]);

acf_table = zeros(21, jumlah_wilayah); % Misalnya, rentang lag dari -10 hingga +10
pacf_table = zeros(21, jumlah_wilayah);
for i = 1:jumlah_wilayah
timeseries_data = data_train(:, i);

figure;
autocorr(timeseries_data, 20); % Misalnya, rentang lag dari 0 hingga 20
% title(['ACF untuk Wilayah ', num2str(i)]);
title('ACF dari Data Train');
xlabel('Lag');
ylabel('ACF');

figure;
parcorr(timeseries_data, 20); % Misalnya, rentang lag dari 0 hingga 20
% title(['PACF untuk Wilayah ', num2str(i)]);
title('PACF dari Data Train');
xlabel('Lag');

5
ylabel('PACF');
end

6
model_arima = cell(1, jumlah_wilayah);
for i = 1:jumlah_wilayah
timeseries_data = data_train(:, i);
p = 1;
d = 1;
q = 1;
model_arima{i} = arima(p, d, q);
model_arima{i} = estimate(model_arima{i}, timeseries_data);
end

ARIMA(1,1,1) Model (Gaussian Distribution):

Value StandardError TStatistic PValue


_________ _____________ __________ ___________

Constant 0.0032394 0.088427 0.036633 0.97078


AR{1} 0.31087 0.032513 9.5614 1.1616e-21
MA{1} -0.95889 0.023307 -41.141 0
Variance 275.82 7.6599 36.008 6.2475e-284

future_steps = 87;
forecast_results = zeros(future_steps, jumlah_wilayah);
for i = 1:jumlah_wilayah
[forecast_i, ~] = forecast(model_arima{i}, future_steps);
forecast_results(:, i) = forecast_i;
end

disp('Hasil Prediksi untuk Data Curah Hujan:');

Hasil Prediksi untuk Data Curah Hujan:

disp(forecast_results);

0.0032
0.0075
0.0120
0.0167
0.0214
0.0261
0.0308
0.0355
0.0402
0.0449
0.0496
0.0543
0.0590
0.0637
0.0684
0.0731
0.0778
0.0825
0.0872
0.0919
0.0966
0.1013
0.1060
0.1107

7
0.1154
0.1201
0.1248
0.1295
0.1342
0.1389
0.1436
0.1483
0.1530
0.1577
0.1624
0.1671
0.1718
0.1765
0.1812
0.1859
0.1906
0.1953
0.2000
0.2047
0.2094
0.2141
0.2188
0.2235
0.2282
0.2329
0.2376
0.2423
0.2470
0.2517
0.2564
0.2611
0.2658
0.2705
0.2752
0.2799
0.2846
0.2893
0.2940
0.2987
0.3034
0.3081
0.3128
0.3175
0.3222
0.3269
0.3316
0.3363
0.3410
0.3457
0.3504
0.3551
0.3598
0.3645
0.3692
0.3739
0.3786
0.3833
0.3880
0.3927
0.3974
0.4021
0.4068

8
% Plot data uji
figure;
plot(data_test, '-o', 'LineWidth', 1.5); % Data uji sebagai data aktual
hold on;

% Plot hasil prediksi (forecast)


plot(forecast_results, '-o', 'LineWidth', 1.5); % Hasil prediksi dari model ARIMA
title('Perbandingan Data Test dengan Hasil Prediksi');
xlabel('Waktu');
ylabel('Data');
legend('Data Test', 'Hasil Prediksi');
grid on;

Anda mungkin juga menyukai