Ekonometrika

Final Test


Kontak : \(\downarrow\)
Email
Instagram https://www.instagram.com/saram.05/
RPubs https://rpubs.com/sausanramadhani/

Data for Sales Analysis

The dataset below represents the monthly sales data of a company, including various factors that might influence product sales. The data is presented in a tabular format with each row representing a month and each column representing a variable.

library(tibble)

sales_data <- tibble::tibble(
  Month = seq.Date(from = as.Date("2019-01-01"), to = as.Date("2024-05-01"), by = "1 month"),
  Advertising_Expense = c(50, 75, 60, 65, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365, 370, 375, 380),
  Product_Quality = c(20, 25, 22, 23, 28, 30, 32, 35, 38, 40, 42, 45, 48, 50, 55, 60, 65, 68, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95, 98, 100, 102, 105, 108, 110, 112, 115, 118, 120, 122, 125, 128, 130, 132, 135, 138, 140, 142, 145, 148, 150, 152, 155, 158, 160, 162, 165, 168, 170, 172, 175, 178, 180, 182, 185),
  Product_Price = c(95, 112, 107, 100, 110, 105, 108, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365, 370, 375, 380, 385, 390, 395, 400),
  Sales_Promotion = c(15, 20, 18, 19, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142),
  Online_Marketing = c(76, 77, 78, 79, 80, 85, 82, 84, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200),
  Offline_Marketing = c(84, 85, 87, 89, 89, 90, 95, 92, 94, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208),
  Product_Sales = c(200, 220, 210, 215, 230, 240, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355, 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430, 435, 440, 445, 450, 455, 460, 465, 470, 475, 480, 485, 490, 495, 500, 505, 510, 515, 520, 525, 530, 535, 540)
)

head(sales_data)

Dataset ini mencakup variabel-variabel berikut:

  • Month: Bulan pengamatan.
  • Advertising_Expense: Jumlah yang dihabiskan untuk iklan (dalam dolar).
  • Product_Quality: Nilai kualitas produk (dalam skala dari 1 hingga 100).
  • Product_Price: Harga produk (dalam dolar).
  • Sales_Promotion: Pengeluaran untuk promosi penjualan (dalam dolar).
  • Online_Marketing: Pengeluaran untuk pemasaran online (dalam dolar).
  • Offline_Marketing: Pengeluaran untuk pemasaran offline (dalam dolar).
  • Product_Sales: Jumlah produk yang terjual.

Translated with DeepL.com (free version)

Regression Analysis

# Regression Analysis
reg_model <- lm(Product_Sales ~ Advertising_Expense + Product_Quality + Product_Price + Sales_Promotion + Online_Marketing + Offline_Marketing, data = sales_data)

# Summary of the regression model
summary(reg_model)
## 
## Call:
## lm(formula = Product_Sales ~ Advertising_Expense + Product_Quality + 
##     Product_Price + Sales_Promotion + Online_Marketing + Offline_Marketing, 
##     data = sales_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6031 -0.0697 -0.0051  0.0594  3.3179 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         297.58588   17.69853  16.814  < 2e-16 ***
## Advertising_Expense   0.46830    0.09830   4.764 1.31e-05 ***
## Product_Quality       0.12252    0.04597   2.665 0.009955 ** 
## Product_Price        -0.82782    0.03965 -20.880  < 2e-16 ***
## Sales_Promotion       4.68575    0.51594   9.082 9.71e-13 ***
## Online_Marketing     -0.85343    0.17905  -4.767 1.30e-05 ***
## Offline_Marketing    -0.58501    0.15959  -3.666 0.000537 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7478 on 58 degrees of freedom
## Multiple R-squared:  0.9999, Adjusted R-squared:  0.9999 
## F-statistic: 1.78e+05 on 6 and 58 DF,  p-value: < 2.2e-16

Didapatkan nilai p-value < 2.2e-16. Artinya, model ini memiliki pengaruh signifikan terhadap penjualan. Terlebih nilai multiple R-squared sebesar 0,9999 menunjukkan bahwa 99,99% variasi dalam penjualan dapat dijelaskan oleh model ini. Dengan begitu, menunjukkan model yang sangat baik.

Time Series Analysis

# Load necessary libraries for time series analysis
library(forecast)
library(tseries)

# Convert the sales data to a time series object
sales_ts <- ts(sales_data$Product_Sales, start = c(2019, 1), frequency = 12)

# Decompose the time series
decomposed_ts <- decompose(sales_ts)

# Plot the decomposed components
plot(decomposed_ts)

# Fit an ARIMA model
arima_model <- auto.arima(sales_ts)

# Summary of the ARIMA model
summary(arima_model)
## Series: sales_ts 
## ARIMA(2,1,2) with drift 
## 
## Coefficients:
##           ar1      ar2     ma1     ma2   drift
##       -1.3317  -0.9433  1.8308  0.8406  5.2913
## s.e.   0.1659   0.0541  0.2004  0.2023  0.2992
## 
## sigma^2 = 4.932:  log likelihood = -144.16
## AIC=300.32   AICc=301.79   BIC=313.27
## 
## Training set error measures:
##                       ME     RMSE     MAE        MPE      MAPE       MASE
## Training set -0.01087948 2.115745 1.02334 0.02892078 0.3669924 0.01663712
##                    ACF1
## Training set -0.3067911
# Forecast future sales
forecast_sales <- forecast(arima_model, h = 12)

# Plot the forecast
plot(forecast_sales)

Comparission Forecasting

# Split the data into training and test sets
train_ts <- window(sales_ts, end = c(2022, 12))
test_ts <- window(sales_ts, start = c(2023, 1))

# Fit various models
arima_model <- auto.arima(train_ts)
ets_model <- ets(train_ts)
tbats_model <- tbats(train_ts)

# Forecast using the models
forecast_arima <- forecast(arima_model, h = length(test_ts))
forecast_ets <- forecast(ets_model, h = length(test_ts))
forecast_tbats <- forecast(tbats_model, h = length(test_ts))

# Calculate RMSE for each model
rmse_arima <- sqrt(mean((forecast_arima$mean - test_ts)^2))
rmse_ets <- sqrt(mean((forecast_ets$mean - test_ts)^2))
rmse_tbats <- sqrt(mean((forecast_tbats$mean - test_ts)^2))

# Print RMSE values
cat("RMSE of ARIMA model:", rmse_arima, "\n")
## RMSE of ARIMA model: 3.810461
cat("RMSE of ETS model:", rmse_ets, "\n")
## RMSE of ETS model: 3.285274
cat("RMSE of TBATS model:", rmse_tbats, "\n")
## RMSE of TBATS model: 8.801739
# Compare models based on RMSE
best_model <- ifelse(min(rmse_arima, rmse_ets, rmse_tbats) == rmse_arima, "ARIMA", 
                     ifelse(min(rmse_arima, rmse_ets, rmse_tbats) == rmse_ets, "ETS", "TBATS"))

cat("The best model based on RMSE is:", best_model, "\n")
## The best model based on RMSE is: ETS

Setelah membuat model ARIMA, ETS, dan TBATS, didapatkan nilai RMSE masing-masing yaitu sebesar 3.810461, 3.285274, 8.801739. Model dengan nilai RMSE terendah adalah yang paling akurat. Dalam kasus ini, model ETS memiliki RMSE paling rendah (3.285274), sehingga model ETS adalah model terbaik untuk memprediksi penjualan dalam dataset ini.

Study Case (Data BPS)

Collect dataset from BPS to analyse the relationship between monthly economic indicators, including :

  • Inflation Rate
  • GDP Growth Rate
  • Unemployment Rate
  • Interest Rate
  • Consumer Confidence
  • Stock Market Index
  • Exchange Rate

Data Collection

library(readxl)
final_eko <- read_xlsx("final_test_eko.xlsx")
final_eko

Data Exploration

# Melihat struktur dataset
str(final_eko)
## tibble [144 × 9] (S3: tbl_df/tbl/data.frame)
##  $ Tahun              : num [1:144] 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 ...
##  $ Bulan              : chr [1:144] "Januari" "Februari" "Maret" "April" ...
##  $ Inflation_Rate     : num [1:144] 0.84 1.14 0.99 1.15 1.44 2.42 4.02 4.82 5.28 5.35 ...
##  $ GDP_Growth_Rate    : num [1:144] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 ...
##  $ Unemployment_Rate  : num [1:144] 1.19 1.24 1.24 1.24 1.24 ...
##  $ Interest_Rate      : num [1:144] 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5 ...
##  $ Consumer_Confidence: num [1:144] 107 102 102 106 106 ...
##  $ Stock_Market_Index : num [1:144] 2611 2549 2777 2971 2797 ...
##  $ Exchange_Rate      : num [1:144] 9365 9335 9115 9012 918 ...
# Melihat nama kolom
names(final_eko)
## [1] "Tahun"               "Bulan"               "Inflation_Rate"     
## [4] "GDP_Growth_Rate"     "Unemployment_Rate"   "Interest_Rate"      
## [7] "Consumer_Confidence" "Stock_Market_Index"  "Exchange_Rate"

Dataset kasus 2 final_eko memiliki 144 baris dan 9 kolom. Berikut ini variabel yang ada di dalamnya :

  • Tahun (num): tahun data dari 2010 hingga 2021
  • Bulan (chr): nama bulan (Januari, Februari, Maret, dll)
  • Inflation_Rate (num): tingkat inflasi bulanan
  • GDP_Growth_Rate (num): tingkat pertumbuhan GDP (Gross Domestic Product) per bulan
  • Unemployment_Rate (num): tingkat pengangguran per bulan
  • Interest_Rate (num): tingkat suku bunga bulanan
  • Consumer_Confidence (num): indeks kepercayaan konsumen per bulan
  • Stock_Market_Index (num): indeks pasar saham bulanan
  • Exchange_Rate (num): nilai tukar mata uang per bulan
# Menghitung statistik deskriptif
summary(final_eko)
##      Tahun         Bulan           Inflation_Rate   GDP_Growth_Rate 
##  Min.   :2010   Length:144         Min.   :-0.610   Min.   :0.1700  
##  1st Qu.:2013   Class :character   1st Qu.: 0.890   1st Qu.:0.4075  
##  Median :2016   Mode  :character   Median : 1.710   Median :0.4150  
##  Mean   :2016                      Mean   : 2.112   Mean   :0.4125  
##  3rd Qu.:2018                      3rd Qu.: 2.663   3rd Qu.:0.4700  
##  Max.   :2021                      Max.   : 8.380   Max.   :0.5300  
##  Unemployment_Rate Interest_Rate   Consumer_Confidence Stock_Market_Index
##  Min.   :0.8233    Min.   :3.500   Min.   : 77.3       Min.   :2549      
##  1st Qu.:0.9096    1st Qu.:4.750   1st Qu.:106.8       1st Qu.:4272      
##  Median :0.9850    Median :5.750   Median :114.3       Median :5078      
##  Mean   :1.0033    Mean   :5.788   Mean   :111.9       Mean   :5008      
##  3rd Qu.:1.0667    3rd Qu.:6.750   3rd Qu.:120.2       3rd Qu.:5949      
##  Max.   :1.2467    Max.   :7.750   Max.   :128.2       Max.   :6606      
##  Exchange_Rate  
##  Min.   :  918  
##  1st Qu.: 9669  
##  Median :13310  
##  Mean   :12215  
##  3rd Qu.:14103  
##  Max.   :16367

Seperti yang diminta, dataset terdiri dari tahun 2010 sampai 2021. Besaran nilai dari tiap variabel sebagai berikut :

  • Inflation_Rate berkisar dari -0.610 hingga 8.380 dengan rata-rata 2.112. Inflasi rendah artinya harga stabil, sedangkan inflasi tinggi bisa dikatakan kenaikan harga cepat.
  • GDP_Growth_Rate berada antara 0.170 hingga 0.530 dengan rata-rata 0.413. Hal ini menunjukkan bahwa pertumbuhan ekonomi yang stabil dengan varian kecil.
  • Unemployment_Rate bervariasi dari 0.823 hingga 1.247 dengan rata-rata 1.003. Tingkat pengangguran rendah artinya lebih banyak orang yang bekerja.
  • Interest_Rate berkisar dari 3.500 hingga 7.750 dengan rata-rata 5.788. Suku bunga yang lebih rendah bisa mempermudah pinjaman, sedangkan suku bunga tinggi bisa membuat pinjaman lebih mahal.
  • Consumer_Confidence berkisar dari 77.3 hingga 128.2 dengan rata-rata 111.9. Dilihat dari rata-ratanya yang terbilang tinggi, menunjukkan konsumen lebih percaya diri dan cenderung lebih banyak berbelanja.
  • Stock_Market_Index berkisar dari 2549 hingga 6606 dengan rata-rata 5008. Dapat dikatakan bahwa harga saham cenderung naik dilihat dari index yang tinggi. Artinya, perusahaan-perusahaan berkinerja baik.
  • Exchange_Rate berkisar dari 918 hingga 16367 dengan rata-rata 12215. Tingginya exchange rate mengartikan bahwa mata uang lokal lebih kuat daripada mata uang asing.

Correlation Analysis

Calculate the correlation matrix to examine the relationships between pairs of economic indicators.

# Memuat pustaka yang dibutuhkan
library(ggplot2)
library(ggcorrplot)
library(plotly)

# Menghitung matriks korelasi
correlation_matrix <- cor(final_eko[, -c(1, 2)], use = "complete.obs")

# Menampilkan matriks korelasi
print(correlation_matrix)
##                     Inflation_Rate GDP_Growth_Rate Unemployment_Rate
## Inflation_Rate           1.0000000       0.3422833         0.1521063
## GDP_Growth_Rate          0.3422833       1.0000000         0.2789882
## Unemployment_Rate        0.1521063       0.2789882         1.0000000
## Interest_Rate            0.3067269       0.5377455         0.1606966
## Consumer_Confidence      0.1123706       0.4045857        -0.4495206
## Stock_Market_Index      -0.2534055      -0.5406636        -0.6656832
## Exchange_Rate           -0.2583942      -0.7202913        -0.6461256
##                     Interest_Rate Consumer_Confidence Stock_Market_Index
## Inflation_Rate          0.3067269          0.11237064         -0.2534055
## GDP_Growth_Rate         0.5377455          0.40458566         -0.5406636
## Unemployment_Rate       0.1606966         -0.44952057         -0.6656832
## Interest_Rate           1.0000000          0.21135648         -0.5449807
## Consumer_Confidence     0.2113565          1.00000000          0.3017572
## Stock_Market_Index     -0.5449807          0.30175721          1.0000000
## Exchange_Rate          -0.4266062          0.02842479          0.7989091
##                     Exchange_Rate
## Inflation_Rate        -0.25839419
## GDP_Growth_Rate       -0.72029134
## Unemployment_Rate     -0.64612561
## Interest_Rate         -0.42660619
## Consumer_Confidence    0.02842479
## Stock_Market_Index     0.79890906
## Exchange_Rate          1.00000000
# Visualisasi matriks korelasi menggunakan ggcorrplot
ggcorrplot(correlation_matrix, 
           method = "circle", 
           type = "lower", 
           lab = TRUE, 
           lab_size = 3, 
           colors = c("red", "white", "blue"), 
           title = "Correlation Matrix Heatmap",
           ggtheme = theme_minimal())

Correlation Matrix Heatmap di atas menunjukkan seberapa kuat hubungan linear antara setiap pasangan variabel. Tujuannya untuk mengidentifikasi pasangan variabel yang memiliki hubungan signifikan.

Berikut ini hasil dari correlation matrix heatmap di atas :

  • Korelasi Kuat Positif : ditandai dengan lingkaran besar dan penuh warna biru yaitu pasangan variabel Stock_Market_Index dengan Exchange_Rate yang mana berkorelasi sebesar 0.8. Artinya ketika nilai tukar naik, maka indeks pasar saham juga cenderung naik.
  • Korelasi Kuat Negatif : ditandai dengan lingkaran besar dan penuh warna merah yaitu pasangan variabel GDP_Growth_Rate dengan Exchange_Rate yang mana berkorelasi sebesar -0,72. Artinya ketika pertumbuhan GDP naik, maka nilai tukar cenderung turun. Begitu pula korelasi pasangan variabel Unemployment_Rate dengan Stock_Market_Index (-0,67), Unemployment_Rate dengan Exchange_Rate (-0,65), GDP_Growth_Rate dengan Stock_Market_Index (-0,54).
  • Korelasi Lemah Positif : ditandai dengan lingkaran kecil dan warna biru pudar, dimana pasangan variabel dengan korelasi positif paling lemah yaitu Consumer_Confidence dengan Exchange_Rate sebesar 0,03. Artinya hampir tidak ada hubungan antara kepercayaan konsumen dengan nilai tukar.
  • Korelasi Lemah Negatif : ditandai dengan lingkaran kecil dan warna merah pudar, dimana pasangan variabel dengan korelasi negatif paling lemah yaitu Inflation_Rate dengan Stock_Market_Index sebesar -0,25. Artinya hubungan antara tingkat inflasi dengan indeks pasar saham sangat lemah.

Visualize the correlations using a heatmap or correlation plot.

library(plotly)

# Mengonversi matriks korelasi ke format dataframe
correlation_df <- as.data.frame(as.table(correlation_matrix))

# Membuat heatmap interaktif menggunakan plotly
heatmap_plot <- plot_ly(
  x = colnames(correlation_matrix), 
  y = rownames(correlation_matrix), 
  z = correlation_matrix, 
  type = "heatmap", 
  colorscale = "RdBu",
  reversescale = TRUE
) %>% layout(
  title = "Correlation Matrix Heatmap",
  xaxis = list(title = ""),
  yaxis = list(title = "")
)

# Menampilkan heatmap
heatmap_plot

Heatmap di atas menunjukkan hubungan antara variabel-variabel, sama halnya dengan matriks korelasi. Tiap sel heatmap mewakili hubungan 2 variabel, berikut penjelasan tiap warnanya :

  • Warna Biru : menunjukkan korelasi positif. Semakin gelap warna biru, semakin kuat korelasi positifnya.
  • Warna Merah : menunjukkan korelasi negatif. Semakin gelap warna merah, semakin kuat korelasi negatifnya.
  • Warna Putih : menunjukkan tidak ada korelasi atau korelasi yang sangat lemah.

Time Series Analysis

Conduct time series analysis for each economic indicator, including:

Checking for stationarity using appropriate tests (e.g., Augmented Dickey-Fuller test).

# Fungsi untuk memeriksa stasioneritas menggunakan ADF test
check_stationarity <- function(series) {
  adf_result <- adf.test(series)
  cat("ADF Statistic:", adf_result$statistic, "\n")
  cat("p-value:", adf_result$p.value, "\n")
  cat("Critical Values:", paste(adf_result$critical, collapse = ", "), "\n")
  cat("Result:", ifelse(adf_result$statistic < adf_result$critical[2], "Stationary", "Non-Stationary"), "\n")
}

# Melakukan uji stasioneritas untuk setiap variabel
variables <- colnames(final_eko)[-c(1, 2)]  # Excluding 'Tahun' and 'Bulan'

for (var in variables) {
  cat("Stationarity Test for", var, "\n")
  check_stationarity(final_eko[[var]])
  cat("\n")
}
## Stationarity Test for Inflation_Rate 
## ADF Statistic: -6.205589 
## p-value: 0.01 
## Critical Values:  
## Result:  
## 
## Stationarity Test for GDP_Growth_Rate 
## ADF Statistic: -2.803017 
## p-value: 0.2420838 
## Critical Values:  
## Result:  
## 
## Stationarity Test for Unemployment_Rate 
## ADF Statistic: -2.080191 
## p-value: 0.5430416 
## Critical Values:  
## Result:  
## 
## Stationarity Test for Interest_Rate 
## ADF Statistic: -2.435042 
## p-value: 0.3952948 
## Critical Values:  
## Result:  
## 
## Stationarity Test for Consumer_Confidence 
## ADF Statistic: -2.343315 
## p-value: 0.4334868 
## Critical Values:  
## Result:  
## 
## Stationarity Test for Stock_Market_Index 
## ADF Statistic: -2.782476 
## p-value: 0.2506362 
## Critical Values:  
## Result:  
## 
## Stationarity Test for Exchange_Rate 
## ADF Statistic: -1.294441 
## p-value: 0.8701992 
## Critical Values:  
## Result:

Berdasarkan hasil Augmented Dickey-Fuller test (ADF test), hanya terdapat 1 variabel yang stasioner yaitu Inflation_Rate. Dimana memiliki nilai p-value 0.01 (lebih kecil dari 0.05 = H0 ditolak) artinya data stasioner. Seharusnya bisa juga dilihat dari nilai ADF Statistic untuk menentukan data stasioner atau tidak. Jika nilai ADF Statistic lebih kecil dari Critical Values, maka data tersebut stasioner (H0 ditolak).

Applying transformations if necessary to achieve stationarity (e.g., first differencing).

# Menerapkan differencing untuk mencapai stasioneritas
final_eko_diff <- diff(final_eko[[var]], lag = 1)

Tujuan dari differencing adalah untuk membuat data menjadi lebih stabil dan menghilangkan tren sehingga lebih mudah untuk dianalisis dan diprediksi menggunakan model deret waktu seperti ARIMA.

Building time series models (e.g., ARIMA, GARCH) to forecast future values of each indicator.

# Membangun model ARIMA untuk meramalkan nilai di masa depan
var <- "Exchange_Rate"
model <- auto.arima(final_eko[[var]])
forecast_result <- forecast(model)

# Menampilkan hasil ramalan
print(forecast_result)
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 145       14504.69 13435.29 15574.10 12869.18 16140.20
## 146       14547.27 13447.98 15646.56 12866.05 16228.49
## 147       14589.85 13461.46 15718.24 12864.13 16315.57
## 148       14632.43 13475.67 15789.18 12863.32 16401.53
## 149       14675.01 13490.56 15859.45 12863.55 16486.46
## 150       14717.58 13506.08 15929.08 12864.76 16570.41
## 151       14760.16 13522.20 15998.12 12866.86 16653.46
## 152       14802.74 13538.87 16066.61 12869.81 16735.67
## 153       14845.32 13556.06 16134.58 12873.56 16817.07
## 154       14887.90 13573.73 16202.06 12878.06 16897.73
  • Point Forecast: Nilai yang diperkirakan untuk periode tertentu. Misalnya, pada periode 145, nilai yang diperkirakan adalah 14504.69.
  • Lo 80 dan Hi 80: Rentang kepercayaan 80%, yang berarti ada 80% kemungkinan bahwa nilai sebenarnya akan berada dalam rentang ini. Untuk periode 145, rentangnya adalah antara 13435.29 dan 15574.10.
  • Lo 95 dan Hi 95: Rentang kepercayaan 95%, yang berarti ada 95% kemungkinan bahwa nilai sebenarnya akan berada dalam rentang ini. Untuk periode 145, rentangnya adalah antara 12869.18 dan 16140.20.

Regression Analysis

Formulate a regression model with one or more economic indicators as dependent variables and other indicators as independent variables.

# Merumuskan model regresi dengan beberapa variabel independen
model_formula <- "Inflation_Rate ~ GDP_Growth_Rate + Unemployment_Rate + Interest_Rate + Consumer_Confidence + Stock_Market_Index + Exchange_Rate"

Check for multicollinearity among independent variables.

# Matriks korelasi antara variabel independen
correlation_matrix <- cor(final_eko[, -c(1, 2)])  # Exclude 'Tahun' and 'Bulan'
print(correlation_matrix)
##                     Inflation_Rate GDP_Growth_Rate Unemployment_Rate
## Inflation_Rate           1.0000000       0.3422833         0.1521063
## GDP_Growth_Rate          0.3422833       1.0000000         0.2789882
## Unemployment_Rate        0.1521063       0.2789882         1.0000000
## Interest_Rate            0.3067269       0.5377455         0.1606966
## Consumer_Confidence      0.1123706       0.4045857        -0.4495206
## Stock_Market_Index      -0.2534055      -0.5406636        -0.6656832
## Exchange_Rate           -0.2583942      -0.7202913        -0.6461256
##                     Interest_Rate Consumer_Confidence Stock_Market_Index
## Inflation_Rate          0.3067269          0.11237064         -0.2534055
## GDP_Growth_Rate         0.5377455          0.40458566         -0.5406636
## Unemployment_Rate       0.1606966         -0.44952057         -0.6656832
## Interest_Rate           1.0000000          0.21135648         -0.5449807
## Consumer_Confidence     0.2113565          1.00000000          0.3017572
## Stock_Market_Index     -0.5449807          0.30175721          1.0000000
## Exchange_Rate          -0.4266062          0.02842479          0.7989091
##                     Exchange_Rate
## Inflation_Rate        -0.25839419
## GDP_Growth_Rate       -0.72029134
## Unemployment_Rate     -0.64612561
## Interest_Rate         -0.42660619
## Consumer_Confidence    0.02842479
## Stock_Market_Index     0.79890906
## Exchange_Rate          1.00000000
  • Nilai Korelasi: Nilai korelasi berkisar dari -1 hingga 1. Nilai 1 menunjukkan hubungan positif sempurna, -1 menunjukkan hubungan negatif sempurna, dan 0 menunjukkan tidak ada hubungan.
  • Hubungan Positif: Misalnya, GDP_Growth_Rate memiliki korelasi positif yang cukup kuat dengan Interest_Rate (0.54). Artinya, ketika tingkat pertumbuhan GDP naik, tingkat suku bunga cenderung naik juga.
  • Hubungan Negatif: Misalnya, Unemployment_Rate memiliki korelasi negatif kuat dengan Stock_Market_Index (-0.67). Ini berarti ketika tingkat pengangguran naik, indeks pasar saham cenderung turun.
  • Hubungan Lemah: Korelasi antara Consumer_Confidence dan Exchange_Rate adalah sangat lemah (0.03), menunjukkan hampir tidak ada hubungan antara kedua variabel ini.

Estimate the regression model using appropriate techniques (e.g., Ordinary Least Squares).

# Mengestimasi model regresi menggunakan Ordinary Least Squares (OLS)
regression_model <- lm(formula = model_formula, data = final_eko)
summary(regression_model)
## 
## Call:
## lm(formula = model_formula, data = final_eko)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0505 -1.0637 -0.2038  0.7319  5.8080 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         -3.854e+00  4.138e+00  -0.931   0.3533  
## GDP_Growth_Rate      5.218e+00  2.981e+00   1.750   0.0824 .
## Unemployment_Rate    1.463e+00  1.867e+00   0.784   0.4347  
## Interest_Rate        2.314e-01  1.599e-01   1.447   0.1501  
## Consumer_Confidence  3.953e-03  2.101e-02   0.188   0.8511  
## Stock_Market_Index  -7.690e-05  3.344e-04  -0.230   0.8185  
## Exchange_Rate        7.765e-05  1.398e-04   0.555   0.5796  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.738 on 137 degrees of freedom
## Multiple R-squared:  0.1437, Adjusted R-squared:  0.1062 
## F-statistic: 3.831 on 6 and 137 DF,  p-value: 0.001458

Inflation_Rate=−3.854 + 5.218⋅GDP_Growth_Rate + 1.463⋅Unemployment_Rate + 0.2314⋅Interest_Rate + 0.00395⋅Consumer_Confidence − 0.0000769⋅Stock_Market_Index + 0.00007765⋅Exchange_Rate

Assess the significance and interpret the coefficients of the independent variables.

Didapatkan p-value 0.001458 (>0.05) menunjukkan bahwa sebagian besar variabel independen tidak signifikan secara statistik dalam memprediksi Inflation_Rate

Hasil dari summary(regression_model) akan memberikan informasi tentang signifikansi dan interpretasi koefisien dari variabel independen dalam model regresi.

Model Evaluation

Evaluate the performance of time series and regression models using appropriate metrics (e.g., Mean Absolute Error for forecasting, R-squared for regression).

# Memuat pustaka yang diperlukan
library(forecast)

# Evaluasi performa model ARIMA menggunakan MAE
mae <- accuracy(forecast_result)[, "MAE"]
print(paste("Mean Absolute Error (MAE):", mae))
## [1] "Mean Absolute Error (MAE): 376.965013023657"
# Evaluasi performa model regresi menggunakan R-squared
rsquared <- summary(regression_model)$r.squared
print(paste("R-squared:", rsquared))
## [1] "R-squared: 0.143671583771379"

Compare the accuracy and goodness-of-fit of different models.

# Menampilkan hasil perbandingan
cat("Comparison of Model Performance:\n")
## Comparison of Model Performance:
cat("ARIMA MAE:", mae, "\n")
## ARIMA MAE: 376.965
cat("Regression R-squared:", rsquared, "\n")
## Regression R-squared: 0.1436716
# Membandingkan model berdasarkan metrik evaluasi
if (mae < 0.2) { # Misalnya, threshold untuk MAE
  cat("Model ARIMA memberikan perkiraan yang lebih akurat.\n")
} else {
  cat("Model Regresi memberikan kecocokan yang lebih baik.\n")
}
## Model Regresi memberikan kecocokan yang lebih baik.
  • Mean Absolute Error (MAE) dari model ARIMA: Nilai MAE adalah 376.965. MAE adalah ukuran seberapa besar kesalahan perkiraan model ARIMA rata-rata, semakin kecil nilai MAE, semakin akurat modelnya.
  • R-squared dari model regresi: Nilai R-squared adalah 0.144. R-squared mengukur seberapa baik model regresi menjelaskan variabilitas dalam data, dengan nilai mendekati 1 menunjukkan model yang lebih baik.

Seperti pada hasil comparison, dinyatakan bahwa model regresi memberikan kecocokan yang lebih baik.