library(forecast) # library untuk peramalan
## Warning: package 'forecast' was built under R version 4.4.3
set.seed(6) # Mengunci Data frame agar nilai-nilai di dalamnya tidak berubah
# Parameter sebenarnya
phi_true <- 0.5
# Skenario
n_values <- c(30, 150, 300) # Banyak data (panjang data)
sigma_values <- c(1, 15, 40) # Variansi
n_sim <- 100 # Banyak replikasi (pengulangan)
hasil <- data.frame() # Data frame skenario
semua_data <- data.frame() # Data frame semua data yang digenerate
# Pembuatan data
for(n in n_values){
for(sigma in sigma_values){
phi_est <- numeric(n_sim)
for(i in 1:n_sim){
# Generate ARIMA(1,1,0)
Data_stasioner <- arima.sim(model = list(ar = phi_true), n = n, sd = sqrt(sigma)) # Data yang sudah stasioner
Data <- cumsum(Data_stasioner) # karena d = 1 (lawan differencing untuk mengubah ke data yang belum stasioner)
# Estimasi model
fit <- Arima(Data, order = c(1,1,0))
# Ambil koefisien AR
phi_est[i] <- coef(fit)[1]
# Masukan ke data frame semua_data
semua_data <- rbind(semua_data,
data.frame(Phi = phi_est[i],
n = n,
Sigma = sigma))
}
# Ringkasan
mean_phi <- mean(phi_est)
bias <- mean_phi - phi_true
sd_phi <- sd(phi_est)
# Masukan data ke dalam data frame hasil
hasil <- rbind(hasil,
data.frame(n = n,
Sigma = sigma,
Mean_phi = mean_phi,
Bias = bias,
Sd_phi = sd_phi))
}
}
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Merubah nama agar tidak menimbulkan kesalahpahaman
hasil <- hasil %>% rename("Sigma^2" = Sigma)
hasil
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 30 1 0.4839320 -0.016067992 0.15742355
## 2 30 15 0.4632481 -0.036751868 0.17610256
## 3 30 40 0.4941948 -0.005805200 0.16421097
## 4 150 1 0.4984056 -0.001594417 0.07223779
## 5 150 15 0.4863713 -0.013628653 0.07810199
## 6 150 40 0.4862145 -0.013785483 0.07339715
## 7 300 1 0.4981912 -0.001808805 0.05056263
## 8 300 15 0.4968725 -0.003127465 0.05564830
## 9 300 40 0.4913927 -0.008607294 0.05578195
Secara umum, nilai rata-rata estimasi parameter \(\phi\) berada di sekitar nilai sebenarnya, yaitu 0,5. Nilai bias yang dihasilkan pada seluruh skenario relatif kecil dan cenderung mendekati nol. Selain itu, nilai standar deviasi estimasi menunjukkan adanya perbedaan yang cukup jelas antar skenario, terutama dipengaruhi oleh ukuran sampel.
library(ggplot2)
# Boxplot distribusi estimasi phi
ggplot(aes(x = interaction(n, Sigma), y = Phi), data = semua_data) + geom_boxplot() +
labs(title = "Distribusi Estimasi Phi", x = "Skenario (n, sigma^2)", y = "Estimasi Phi") +
theme_classic() + theme(plot.title = element_text(hjust = 0.5, face = "bold"))
Dari boxplot di atas dapat kita lihat bahwa semakin besar n maka range dan IQR estimasi \(\phi\) cenderung semakin kecil. Hal ini berarti bahwa semakin besar n maka distribusi \(\hat{\phi}\) semakin terkonsentrasi di nilai yang sebenarnya. Sebaliknya, semakin besar \(\sigma^2\) maka IQR cenderung semakin membesar, terutama pada ukuran sampel kecil.
# Pemisahan data berdasarkan n
for (a in n_values) {
cat("Data dengan n =", a, "\n" , sep = " ")
Data_n <- hasil %>% filter(n == a) %>% arrange(`Sigma^2`)
print(Data_n)
cat(rep("==", 25), "\n\n")
}
## Data dengan n = 30
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 30 1 0.4839320 -0.01606799 0.1574235
## 2 30 15 0.4632481 -0.03675187 0.1761026
## 3 30 40 0.4941948 -0.00580520 0.1642110
## == == == == == == == == == == == == == == == == == == == == == == == == ==
##
## Data dengan n = 150
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 150 1 0.4984056 -0.001594417 0.07223779
## 2 150 15 0.4863713 -0.013628653 0.07810199
## 3 150 40 0.4862145 -0.013785483 0.07339715
## == == == == == == == == == == == == == == == == == == == == == == == == ==
##
## Data dengan n = 300
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 300 1 0.4981912 -0.001808805 0.05056263
## 2 300 15 0.4968725 -0.003127465 0.05564830
## 3 300 40 0.4913927 -0.008607294 0.05578195
## == == == == == == == == == == == == == == == == == == == == == == == == ==
Pada n = 30, nilai standar deviasi masing-masing \(\sigma^2\) relatif besar (sekitar 0,15 – 0,17). Hal ini menunjukkan bahwa estimasi parameter \(\phi\) masih cukup bervariasi.
Pada n = 150, standar deviasi masing-masing \(\sigma^2\) menurun (sekitar 0,072 – 0.078). Hal ini menandakan bahwa estimasi parameter \(\phi\) menjadi lebih stabil.
Pada n = 300, standar deviasi masing-masing \(\sigma^2\) semakin kecil (sekitar 0,05 - 0,55), menunjukkan estimasi parameter \(\phi\) yang semakin konsisten.
Kondisi ini menunjukan bahwa semakin besar ukuran sampel maka estimasi parameter \(\phi\) semakin tidak bervariasi (konsisten).
# Pemisahan data berdasarkan sigma
for (b in sigma_values) {
cat("Data dengan sigma^2 =", b, "\n" , sep = " ")
Data_s <- hasil %>% filter(`Sigma^2` == b) %>% arrange(n)
print(Data_s)
cat(rep("==", 25), "\n\n")
}
## Data dengan sigma^2 = 1
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 30 1 0.4839320 -0.016067992 0.15742355
## 2 150 1 0.4984056 -0.001594417 0.07223779
## 3 300 1 0.4981912 -0.001808805 0.05056263
## == == == == == == == == == == == == == == == == == == == == == == == == ==
##
## Data dengan sigma^2 = 15
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 30 15 0.4632481 -0.036751868 0.17610256
## 2 150 15 0.4863713 -0.013628653 0.07810199
## 3 300 15 0.4968725 -0.003127465 0.05564830
## == == == == == == == == == == == == == == == == == == == == == == == == ==
##
## Data dengan sigma^2 = 40
## n Sigma^2 Mean_phi Bias Sd_phi
## 1 30 40 0.4941948 -0.005805200 0.16421097
## 2 150 40 0.4862145 -0.013785483 0.07339715
## 3 300 40 0.4913927 -0.008607294 0.05578195
## == == == == == == == == == == == == == == == == == == == == == == == == ==
Pada \(\sigma^2\) yang sama, nilai estimasi parameter \(\phi\) semakin konsisten (tidak bervariasi) saat bertambahnya ukuran sampel. Hal ini menandakan bahwa pengaruh \(\sigma^2\) terhadap nilai estimasi parameter \(\phi\) lebih rendah dari pada pengaruh ukuran sampel.
Semakin besar \(\sigma^2\) maka nilai estimasi parameter \(\phi\) cenderung semakin bervariasi.
# Visualisasi perbandingan bias untuk setiap n
ggplot(data = hasil, aes(x = `Sigma^2`, y = Bias, color = factor(n), group = n)) +
geom_line(size = 1) +
geom_point(size = 2) +
theme_classic() +
labs(
title = "Perbandingan Bias Untuk Setiap n",
x = "Sigma^2",
y = "Bias",
color = "n:"
) +
theme(
plot.title = element_text(hjust = 0.5, size = 14, face = "bold")
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Pada n = 30: Nilai bias berfluktuasi dan tidak menunjukkan pola yang konsisten terhadap perubahan \(\sigma^2\).
Pada n = 150 dan 300: Nilai bias relatif stabil dan mendekati 0.
Semakin besar ukuran sampel (n) dengan asumsi memiliki \(\sigma^2\) yang sama, bias cenderung semakin mendekati 0 atau bias semakin kecil.
Ukuran sampel 300 memiliki nilai bias yang terkecil, namun bias naik bebarengan dengan naiknya \(\sigma^2\).
# Visualisasi perbandingan bias untuk setiap sigma^2
ggplot(data = hasil, aes(x = n, y = Bias, color = factor(`Sigma^2`), group = `Sigma^2`)) +
geom_line(size = 1) +
geom_point(size = 2) +
theme_classic() +
labs(
title = "Perbandingan Bias Untuk Setiap Sigma^2",
x = "n",
y = "Bias",
color = "Sigma^2:"
) +
theme(
plot.title = element_text(hjust = 0.5, size = 14, face = "bold")
)
Semakin kecil \(\sigma^2\) dengan asumsi memiliki ukuran sampel yang sama, bias cenderung mendekati 0 atau semakin mendekati parameter asli.
Pada \(\sigma^2 = 15\) memliki nilai bias awal yang besar, kemudian bias menurun seiring bertambahnya ukuran sampel.
Pengaruh \(\sigma^2\) terhadap hasil estimasi terlihat jelas pada ukuran sampel yang besar Pada ukuran sampel kecil, pengaruh variansi error (\(\sigma^2\)) terhadap hasil estimasi tidak selalu terlihat secara konsisten karena tingginya variasi akibat keterbatasan data. Namun demikian, variansi error yang besar tetap berpotensi meningkatkan ketidakstabilan estimasi parameter.
Semakin besar n, bias semakin menurun. Kondisi ini cenderung konsisten pada \(\sigma^2\) yang menandakan bahwa pengaruh ukuran sampel terhadap bias lebih besar daripada pengaruh \(\sigma^2\).
Hasil simulasi menunjukkan adanya interaksi antara ukuran sampel dan variansi error:
Pada n kecil, pengaruh \(\sigma^2\) tidak terlihat jelas terhadap variansi estimasi dan bias.
Pada n besar, pengaruh \(\sigma^2\) mulai terlihat terhadap variansi estimasi dan bias.
Hal ini menandakan bahwa kestabilan estimasi parameter dipengaruhi secara simultan oleh ukuran sampel dan variansi error.
Berdasarkan hasil simulasi estimasi parameter autoregressive (\(\phi\)) pada model ARIMA(1,1,0), diperoleh beberapa kesimpulan sebagai berikut:
Estimator parameter \(\phi\) menunjukkan bias yang kecil dan mendekati nol pada seluruh skenario, sehingga dapat dikatakan bahwa estimator bersifat mendekati tidak bias.
Ukuran sampel (n) memiliki pengaruh yang signifikan terhadap kestabilan estimasi, dimana semakin besar ukuran sampel, variansi estimasi semakin kecil dan hasil estimasi semakin konsisten.
Variansi error (\(\sigma^2\)) berpengaruh terhadap variansi estimasi, namun pengaruh tersebut tidak selalu terlihat secara konsisten pada ukuran sampel kecil karena tingginya variasi hasil estimasi. Pengaruh variansi error terhadap kestabilan estimasi lebih jelas terlihat pada ukuran sampel yang lebih besar, ketika variasi akibat keterbatasan data telah berkurang.
Terdapat interaksi antara ukuran sampel dan variansi error dalam mempengaruhi kualitas estimasi parameter, dimana ukuran sampel yang besar mampu mengurangi dampak variansi error (\(\sigma^2\)) terhadap hasil estimasi.