Proses AR

Model AR juga dikenal sebagai model autoregresif. Sesuai dengan namanya, autoregresi mengacu pada proses stokastik di mana output model pada waktu t bergantung pada output dirinya sendiri pada waktu sebelum t.
import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

Membuat Data Proses AR

Fungsi berikut disiapkan untuk menghasilkan data.

def create_ARdata(phis=[0.1], N=500, init=1, c=1, sigma=0.3):
    """Membuat data untuk proses AR"""
    print(f"==Membuat data panjang {N} untuk proses AR({len(phis)})==")
    data = np.zeros(N)
    data[0] = init + np.random.normal(0, sigma)

    for t in range(2, N):
        res = c + np.random.normal(0, sigma)
        for j, phi_j in enumerate(phis):
            res += phi_j * data[t - j - 1]
        data[t] = res
    return data

Jika Koefisien Lebih Kecil dari 1

plt.figure(figsize=(12, 6))
phis = [0.1]
ar1_1 = create_ARdata(phis=phis)
plt.plot(ar1_1)
plt.title(f"Jika koefisien adalah {phis[0]}", fontsize=15)
plt.show()
==Membuat data panjang 500 untuk proses AR(1)==

png

Jika Koefisien Sama dengan 1

plt.figure(figsize=(12, 6))
phis = [1]
ar1_2 = create_ARdata(phis=phis)
plt.plot(ar1_2)
plt.title(f"Jika koefisien adalah {phis[0]}", fontsize=15)
plt.show()
==Membuat data panjang 500 untuk proses AR(1)==

png

Jika Koefisien Lebih Besar dari 1

plt.figure(figsize=(12, 6))
phis = [1.04]
ar1_2 = create_ARdata(phis=phis)
plt.plot(ar1_2)
plt.title(f"Jika koefisien adalah {phis[0]}", fontsize=15)
plt.show()
==Membuat data panjang 500 untuk proses AR(1)==

png

AR(2)

plt.figure(figsize=(12, 6))
phis = [0.1, 0.3]
ar2_1 = create_ARdata(phis=phis, N=100)
plt.plot(ar2_1)
plt.title(f"Jika koefisien adalah {phis}", fontsize=15)
plt.show()
==Membuat data panjang 100 untuk proses AR(2)==

png

plt.figure(figsize=(12, 6))
phis = [0.1, -1.11]
ar2_1 = create_ARdata(phis=phis)
plt.plot(ar2_1)
plt.title(f"Jika koefisien adalah {phis}", fontsize=15)
plt.show()
==Membuat data panjang 500 untuk proses AR(2)==

png

Estimasi Model

from statsmodels.tsa.ar_model import AutoReg

res = AutoReg(ar1_1, lags=1).fit()

out = "AIC: {0:0.3f}, HQIC: {1:0.3f}, BIC: {2:0.3f}"
print(out.format(res.aic, res.hqic, res.bic))
AIC: 231.486, HQIC: 236.445, BIC: 244.124
print(res.params)
print(res.sigma2)
res.summary()
[1.03832755 0.07236388]
0.09199676371696269
AutoReg Model Results
Dep. Variable:yNo. Observations:500
Model:AutoReg(1)Log Likelihood-112.743
Method:Conditional MLES.D. of innovations0.303
Date:Sat, 13 Aug 2022AIC231.486
Time:01:55:17BIC244.124
Sample:1HQIC236.445
500
coefstd errzP>|z|[0.0250.975]
const1.03830.05220.0590.0000.9371.140
y.L10.07240.0451.6210.105-0.0150.160
Roots
RealImaginaryModulusFrequency
AR.113.8190+0.0000j13.81900.0000

Komentar

(Komentar akan muncul setelah disetujui)