| Kontak | \(\downarrow\) |
| valensiusjimy27@gmail.com | |
| https://www.instagram.com/valjimy_/ | |
| RPubs | https://rpubs.com/valensiusjimy/ |
1 Pendahuluan
Dalam praktikum ini, tujuan utama kita adalah untuk mengembangkan pemahaman yang mendalam tentang faktor-faktor yang mempengaruhi pendapatan penjualan suatu perusahaan. Kita akan menggunakan dua pendekatan utama untuk mencapai tujuan ini. Pertama, kita akan membangun sebuah model regresi yang akan membantu kita mengidentifikasi dan memahami hubungan antara pendapatan penjualan dengan variabel-variabel prediktor, seperti pengeluaran promosi, harga produk, dan kondisi eksternal seperti cuaca. Dengan model ini, kita berharap dapat mengidentifikasi faktor-faktor yang memiliki dampak signifikan terhadap pendapatan penjualan, sehingga memungkinkan perusahaan untuk mengoptimalkan strategi pemasaran dan penetapan harga.
Selain itu, kita juga akan membangun model deret waktu yang canggih untuk menganalisis pola dan tren dalam pendapatan penjualan seiring waktu. Model deret waktu ini akan memperhitungkan musiman, pola tahunan, dan faktor-faktor lain yang berkaitan dengan waktu yang mungkin mempengaruhi perilaku penjualan. Dengan memiliki pemahaman yang lebih baik tentang pola dan tren dalam data penjualan, perusahaan dapat membuat perkiraan yang lebih akurat dan merencanakan strategi jangka panjang yang lebih efektif. Dengan menggabungkan kedua pendekatan ini, kita berharap dapat memberikan wawasan yang komprehensif tentang dinamika pendapatan penjualan perusahaan dan mendukung pengambilan keputusan yang lebih baik di masa depan.
2 Import Library
Proses ini melibatkan penggunaan beberapa paket perangkat lunak dalam bahasa pemrograman R, yaitu ‘tidyverse’, ‘lubridate’, dan ‘ggplot2’, yang digerakkan oleh perintah ‘p_load’ dari paket ‘pacman’. Penggunaan paket-paket ini memungkinkan kita untuk melakukan analisis data, manipulasi data, dan visualisasi data dengan lebih efisien dan efektif dalam lingkungan R. Secara spesifik, paket ‘tidyverse’ menyediakan seperangkat alat yang kuat untuk manipulasi dan visualisasi data, sementara ‘lubridate’ membantu dalam pengolahan data tanggal dan waktu, dan ‘ggplot2’ adalah paket yang sangat berguna untuk membuat grafik dan visualisasi data yang menarik. Dengan menggunakan paket-paket ini, kita dapat memperoleh wawasan yang lebih dalam dari data dan membuat presentasi yang informatif dan menarik dari hasil analisis tersebut.
3 Import Data
set.seed(10)
n <- 100
start_date <- ymd("2022-01-01")
end_date <- ymd("2022-04-10")
dates <- seq(start_date, end_date, by = "day")
promotional_spending <- runif(n, min = 5000, max = 10000)
price <- rnorm(n, mean = 100, sd = 30)
weather_conditions <- sample(c("sunny", "sunny", "sunny", "cloudy", "rainy", "rainy"), size = n, replace = TRUE)
# Simulate sales revenue
sales_trend <- 0.3 * seq(1, n)
seasonal_pattern <- sin(seq(1, n) * 2 * pi / 365 * 7) * 200
sales_noise <- rnorm(n, mean = 0, sd = 20)
sales_revenue <- 2000 + sales_trend + seasonal_pattern + promotional_spending * 2 + price * 4
simulated_data <- tibble(
Date = dates,
Promotional_Spending = promotional_spending,
Price = price,
Weather_Conditions = weather_conditions,
Sales_Revenue = sales_revenue
)
head(simulated_data, 5)## # A tibble: 5 × 5
## Date Promotional_Spending Price Weather_Conditions Sales_Revenue
## <date> <dbl> <dbl> <chr> <dbl>
## 1 2022-01-01 7537. 88.0 rainy 17451.
## 2 2022-01-02 6534. 90.0 cloudy 15476.
## 3 2022-01-03 7135. 141. cloudy 16905.
## 4 2022-01-04 8466. 164. cloudy 19681.
## 5 2022-01-05 5426. 115. rainy 13427.
Berdasarkan data yang ada di atas menyajikan data pada rentang tanggal tertentu dengan beberapa variabel independen dan satu variabel dependen. Variabel independen termasuk Pengeluaran Promosi, Harga, dan Kondisi Cuaca, sedangkan variabel dependen adalah Pendapatan Penjualan. Setiap baris dalam DataFrame mewakili data untuk satu hari tertentu, dengan nilai-nilai yang sesuai untuk setiap variabel pada tanggal tersebut. Misalnya, pada tanggal 2022-01-01, Pengeluaran Promosi sebesar 7537.391, Harga sebesar 87.98087, kondisi cuaca adalah hujan, dan Pendapatan Penjualan sebesar 17451.05. Dengan menggunakan DataFrame ini, kita dapat melakukan berbagai analisis statistik dan pemodelan untuk memahami hubungan antara variabel-variabel independen dan variabel dependen, serta untuk membuat perkiraan dan merencanakan strategi bisnis yang lebih baik.
4 Visualisasi Data
4.1 Penjualan Harian
ggplot(simulated_data, aes(x = Date, y = Sales_Revenue)) +
geom_line(color = "blue") +
labs(title = "Tren Penjualan Harian",
x = "Tanggal",
y = "Pendapatan Penjualan") +
theme_minimal()Grafik di atas menjelaskan bagaimana pergerakan dari tren penjualan secara harian
4.2 Pengeluaran Promosi
ggplot(simulated_data, aes(x = Promotional_Spending)) +
geom_histogram(binwidth = 500, fill = "orange", color = "black") +
labs(title = "Distribusi Pengeluaran Promosi",
x = "Pengeluaran Promosi",
y = "Frekuensi") +
theme_minimal()Dalam histogram ini, nilai-nilai pengeluaran promosi dibagi menjadi beberapa interval, dan tinggi dari setiap batang menunjukkan jumlah observasi yang jatuh ke dalam interval tersebut. Dengan melihat histogram ini, kita dapat melihat pola distribusi pengeluaran promosi, termasuk apakah distribusinya simetris atau cenderung miring ke kiri atau kanan, serta apakah terdapat outlier atau tidak. Histogram ini memberikan wawasan yang berguna tentang bagaimana pengeluaran promosi tersebar dalam dataset dan membantu dalam pemahaman statistik deskriptif dari variabel tersebut.
4.3 Pembagian Cuaca
ggplot(simulated_data, aes(x = Weather_Conditions)) +
geom_bar(fill = "indianred") +
labs(title = "Jumlah Observasi Berdasarkan Kondisi Cuaca",
x = "Kondisi Cuaca",
y = "Jumlah Observasi") +
theme_minimal() Berdasarkan grafik di atas disimpulkan bahwa cuaca yang paling
banyak dalam data tersebut adalah sunny atau cerah.
5 Regresi
5.1 Matriks Korelasi
Dalam proses kali ini, kita akan melihat nilai korelasi atau hubungan antara variabel satu dengan yang lainnya untuk nantinya dapat membantu dalam mengecek apakah terdapat multikolinearitas dalam model ini.
correlation_matrix <- cor(simulated_data[, c("Promotional_Spending", "Price", "Sales_Revenue")])
plot_ly(z = correlation_matrix,
type = "heatmap",
colorscale = "Viridis",
x = colnames(correlation_matrix),
y = colnames(correlation_matrix),
zmax = 1, zmin = -1,
showscale = TRUE) %>%
layout(title = "Heatmap Korelasi antara Variabel",
xaxis = list(title = ""),
yaxis = list(title = ""))5.2 Model Regresi
model <- lm(Sales_Revenue ~ Promotional_Spending + Price + Weather_Conditions, data = simulated_data)
summary(model)##
## Call:
## lm(formula = Sales_Revenue ~ Promotional_Spending + Price + Weather_Conditions,
## data = simulated_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -231.609 -136.577 7.772 137.205 230.541
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2025.06737 95.63994 21.174 < 2e-16 ***
## Promotional_Spending 1.99294 0.01114 178.914 < 2e-16 ***
## Price 4.31363 0.51005 8.457 3.24e-13 ***
## Weather_Conditionsrainy 42.00590 39.10184 1.074 0.285
## Weather_Conditionssunny -6.69959 36.36440 -0.184 0.854
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 142.6 on 95 degrees of freedom
## Multiple R-squared: 0.9971, Adjusted R-squared: 0.997
## F-statistic: 8244 on 4 and 95 DF, p-value: < 2.2e-16
Model regresi yang disajikan menunjukkan bahwa variabel independen
yang signifikan secara statistik adalah Promotional_Spending dan Price,
dengan nilai p-value yang jauh lebih kecil dari tingkat signifikansi
yang sebesar 0.05. Hal ini mengindikasikan bahwa terdapat hubungan yang
signifikan antara pengeluaran promosi dan harga terhadap pendapatan
penjualan. Namun, variabel Weather_Conditions tidak signifikan secara
statistik karena p-value nya lebih besar dari 0.05. Nilai R-squared yang
sangat tinggi (0.997) menunjukkan bahwa model dapat menjelaskan variasi
dalam data penjualan dengan sangat baik. Persamaan modelnya adalah:
Sales Revenue = 2025.06737 + 1.99294 Promotional + 4.31 Price + 42 Rainy - 6.69 Sunny.
5.3 Prediksi Menggunakan Regresi
Prediksi dilakukan untuk memperkirakan atau mengestimasi nilai yang mungkin terjadi di masa depan berdasarkan data historis dan model yang telah dibangun. Tujuan utama dari prediksi adalah untuk membantu dalam pengambilan keputusan dengan memberikan informasi tentang kemungkinan hasil di masa mendatang. Dengan melakukan prediksi, kita dapat merencanakan strategi atau tindakan yang lebih baik, mengantisipasi perubahan pasar, mengelola risiko, serta meningkatkan efisiensi dan efektivitas dalam perencanaan dan pengelolaan sumber daya. Hal ini memungkinkan perusahaan atau organisasi untuk membuat keputusan yang lebih tepat dan adaptif dalam menghadapi kondisi yang tidak pasti di masa depan.
new_promotional_spending <- c(6000, 7000, 8000)
new_price <- c(90, 95, 100)
new_weather_conditions <- c("sunny", "rainy", "cloudy")
new_data <- data.frame(Promotional_Spending = new_promotional_spending,
Price = new_price,
Weather_Conditions = new_weather_conditions)
predicted_sales <- predict(model, newdata = new_data)predicted_sales <- predict(model, newdata = simulated_data)
predicted_data <- cbind(simulated_data, Predicted_Sales = predicted_sales)
ggplot(predicted_data, aes(x = Date)) +
geom_line(aes(y = Sales_Revenue, color = "Actual Sales")) +
geom_line(aes(y = Predicted_Sales, color = "Predicted Sales"), linetype = "dashed") +
labs(title = "Perbandingan Sales Revenue Asli dan Prediksi",
x = "Tanggal",
y = "Sales Revenue") +
scale_color_manual(name = "Data", values = c("Actual Sales" = "blue", "Predicted Sales" = "red")) +
theme_minimal()Plot yang menunjukkan bahwa nilai prediksi dan nilai asli memiliki titik-titik yang sama menunjukkan tingkat akurasi yang tinggi dalam model prediksi. Hal ini berarti bahwa model yang dibangun mampu dengan baik dalam memperkirakan nilai sebenarnya berdasarkan data yang tersedia. Dalam konteks ini, plot tersebut mengindikasikan bahwa model prediksi secara efektif mampu menangkap pola dan tren dari data historis sehingga mampu menghasilkan prediksi yang sangat dekat dengan nilai sebenarnya. Hasil ini memberikan keyakinan bahwa model tersebut dapat diandalkan dalam memprediksi nilai di masa depan, sehingga memungkinkan pengguna untuk membuat keputusan yang lebih tepat dan akurat.
5.4 Heteroskedasitas
Uji heteroskedastisitas menggunakan Breusch-Pagan (BP) test dilakukan untuk memeriksa apakah ada pola variansi yang tidak konstan dalam residu model regresi. Hal ini penting karena asumsi homoskedastisitas harus terpenuhi agar estimasi koefisien regresi dan uji hipotesis yang dilakukan melalui model regresi menjadi konsisten dan efisien. Dengan mengidentifikasi keberadaan heteroskedastisitas, kita dapat menyesuaikan model regresi secara tepat, misalnya, dengan melakukan transformasi data atau menggunakan metode estimasi yang robust terhadap pelanggaran asumsi tersebut. Dengan demikian, uji heteroskedastisitas memberikan informasi kritis dalam meningkatkan keandalan dan akurasi hasil analisis regresi, serta membantu dalam membuat keputusan yang lebih baik berdasarkan model yang lebih baik disesuaikan dengan kondisi sebenarnya dari data yang diamati.
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 3.4969, df = 4, p-value = 0.4783
Dari hasil uji Breusch-Pagan (BP) dengan p-value sebesar 0.4783, dapat disimpulkan bahwa tidak terdapat cukup bukti statistik untuk menolak asumsi homoskedastisitas pada model regresi. Hal ini menunjukkan bahwa variansi dari residu regresi tidak bergantung pada nilai-nilai prediktor atau independen dalam model. Dengan kata lain, kita tidak memiliki cukup bukti untuk menyatakan adanya heteroskedastisitas dalam model tersebut, sehingga asumsi homoskedastisitas dapat dianggap terpenuhi.
6 Time Series
Dalam bagian ini, kita akan membangun sebuah model deret waktu untuk menangkap pola temporal dan tren dalam pendapatan penjualan, dengan mempertimbangkan musiman dan efek lain yang berkaitan dengan waktu. Pendekatan ini penting karena pendapatan penjualan sering dipengaruhi oleh faktor-faktor musiman seperti perubahan musim atau hari libur tertentu, yang dapat memengaruhi pola dan tren dari data sepanjang waktu. Dengan membangun model deret waktu yang memperhitungkan efek-efek ini, kita dapat lebih baik dalam meramalkan pendapatan penjualan di masa depan, serta memahami dinamika dan faktor-faktor yang memengaruhinya secara lebih mendalam.
6.1 Model Time Series
Dalam upaya untuk memodelkan dan memprediksi data deret waktu dengan lebih baik, kami akan menggunakan metode ARIMA (Autoregressive Integrated Moving Average). Pada proses ini, kami akan melakukan dekomposisi tren dari data time series yang ada. Melalui dekomposisi ini, kami akan memisahkan data menjadi komponen tren, musiman, dan siklus, yang akan membantu kami memahami pola dan struktur intrinsik dari data tersebut. Dengan memahami pola-pola ini, kami dapat memperoleh wawasan yang lebih mendalam tentang perilaku data seiring waktu dan menghasilkan prediksi yang lebih akurat menggunakan model ARIMA.
simulated_data$Date <- as.Date(simulated_data$Date)
ts_data <- ts(simulated_data$Sales_Revenue, start = c(year(simulated_data$Date[1]), month(simulated_data$Date[1])), frequency = 12)
arima_model <- auto.arima(ts_data)
summary(arima_model)## Series: ts_data
## ARIMA(0,0,0) with non-zero mean
##
## Coefficients:
## mean
## 16875.6029
## s.e. 259.2597
##
## sigma^2 = 6789446: log likelihood = -927.94
## AIC=1859.87 AICc=1859.99 BIC=1865.08
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -4.32931e-12 2592.596 2170.41 -2.430615 13.28417 0.6883129
## ACF1
## Training set 0.01634766
Plot ACF (Autocorrelation Function) adalah alat yang berguna untuk menganalisis struktur keterkaitan antara observasi dalam data time series. Pada grafik ACF, sumbu horizontal mewakili lag (waktu antara pengamatan), sedangkan sumbu vertikal menunjukkan nilai korelasi antara observasi yang dipisahkan oleh lag tersebut. Puncak-puncak yang signifikan di atas interval abu-abu menunjukkan autocorrelation yang signifikan pada lag-lag tersebut. Dengan menganalisis plot ACF, kita dapat mengidentifikasi pola-pola musiman, tren, atau efek lain dalam data, serta memperkirakan parameter-model untuk model time series yang lebih kompleks. Kesimpulannya, plot ACF adalah alat penting dalam memahami struktur dan dinamika dari data time series, membantu dalam pengambilan keputusan terkait peramalan dan analisis tren.
forecast_arima <- forecast(arima_model, h = 12)
plot_time_series <- plot_ly(x = ~time(ts_data), y = ~as.numeric(ts_data), type = 'scatter', mode = 'lines', name = 'Actual') %>%
add_trace(x = time(forecast_arima$mean), y = forecast_arima$mean, mode = 'lines', name = 'Predicted (ARIMA)') %>%
layout(title = 'Actual vs. Predicted Values - ARIMA Model',
xaxis = list(title = 'Time'),
yaxis = list(title = 'Sales Revenue'))
plot_time_seriesdecomposed <- decompose(ts_data)
trend <- decomposed$trend
seasonal <- decomposed$seasonal
cycle <- decomposed$random
decomposition_data <- data.frame(Date = time(ts_data), Trend = trend, Seasonal = seasonal, Cycle = cycle)
melted_data <- melt(decomposition_data, id.vars = "Date")
melted_data## Date variable value
## 1 2022.000 Trend NA
## 2 2022.083 Trend NA
## 3 2022.167 Trend NA
## 4 2022.250 Trend NA
## 5 2022.333 Trend NA
## 6 2022.417 Trend NA
## 7 2022.500 Trend 16602.59334
## 8 2022.583 Trend 16574.06615
## 9 2022.667 Trend 16679.46481
## 10 2022.750 Trend 16543.93417
## 11 2022.833 Trend 16423.42884
## 12 2022.917 Trend 16424.88623
## 13 2023.000 Trend 16495.51057
## 14 2023.083 Trend 16779.71216
## 15 2023.167 Trend 17111.01967
## 16 2023.250 Trend 17282.47724
## 17 2023.333 Trend 17394.99698
## 18 2023.417 Trend 17349.18699
## 19 2023.500 Trend 17367.31190
## 20 2023.583 Trend 17520.95377
## 21 2023.667 Trend 17741.68185
## 22 2023.750 Trend 17823.51748
## 23 2023.833 Trend 18007.32776
## 24 2023.917 Trend 18325.48912
## 25 2024.000 Trend 18409.55687
## 26 2024.083 Trend 18140.56339
## 27 2024.167 Trend 17526.50468
## 28 2024.250 Trend 17346.49468
## 29 2024.333 Trend 17315.56462
## 30 2024.417 Trend 17321.57642
## 31 2024.500 Trend 17652.63315
## 32 2024.583 Trend 17928.45455
## 33 2024.667 Trend 17959.39136
## 34 2024.750 Trend 17994.21441
## 35 2024.833 Trend 17890.21400
## 36 2024.917 Trend 17616.56581
## 37 2025.000 Trend 17328.81082
## 38 2025.083 Trend 17376.94494
## 39 2025.167 Trend 17680.25027
## 40 2025.250 Trend 17395.91621
## 41 2025.333 Trend 16902.20955
## 42 2025.417 Trend 16624.18834
## 43 2025.500 Trend 16225.43647
## 44 2025.583 Trend 15865.63621
## 45 2025.667 Trend 15674.63983
## 46 2025.750 Trend 15738.51957
## 47 2025.833 Trend 15924.58327
## 48 2025.917 Trend 16034.36379
## 49 2026.000 Trend 16231.16117
## 50 2026.083 Trend 16258.97087
## 51 2026.167 Trend 16304.82888
## 52 2026.250 Trend 16541.15023
## 53 2026.333 Trend 16862.52680
## 54 2026.417 Trend 17066.38657
## 55 2026.500 Trend 17060.25802
## 56 2026.583 Trend 16757.29176
## 57 2026.667 Trend 16539.10859
## 58 2026.750 Trend 16377.78997
## 59 2026.833 Trend 16420.22850
## 60 2026.917 Trend 16805.98174
## 61 2027.000 Trend 17102.31248
## 62 2027.083 Trend 17223.84757
## 63 2027.167 Trend 17021.91959
## 64 2027.250 Trend 16782.67361
## 65 2027.333 Trend 16551.70312
## 66 2027.417 Trend 16416.01053
## 67 2027.500 Trend 16680.52398
## 68 2027.583 Trend 17094.67408
## 69 2027.667 Trend 17072.55409
## 70 2027.750 Trend 16947.35338
## 71 2027.833 Trend 16798.11893
## 72 2027.917 Trend 16665.53386
## 73 2028.000 Trend 16587.85262
## 74 2028.083 Trend 16321.34376
## 75 2028.167 Trend 16517.09830
## 76 2028.250 Trend 16922.01257
## 77 2028.333 Trend 17055.16420
## 78 2028.417 Trend 17120.03872
## 79 2028.500 Trend 16946.52796
## 80 2028.583 Trend 16530.75865
## 81 2028.667 Trend 16615.56378
## 82 2028.750 Trend 16806.10150
## 83 2028.833 Trend 16598.51421
## 84 2028.917 Trend 16177.75229
## 85 2029.000 Trend 15932.25907
## 86 2029.083 Trend 16218.04204
## 87 2029.167 Trend 16286.96922
## 88 2029.250 Trend 16174.59641
## 89 2029.333 Trend 16271.90267
## 90 2029.417 Trend 16442.34180
## 91 2029.500 Trend 16561.25915
## 92 2029.583 Trend 16808.55435
## 93 2029.667 Trend 17016.28442
## 94 2029.750 Trend 16899.14095
## 95 2029.833 Trend NA
## 96 2029.917 Trend NA
## 97 2030.000 Trend NA
## 98 2030.083 Trend NA
## 99 2030.167 Trend NA
## 100 2030.250 Trend NA
## 101 2022.000 Seasonal -1192.87204
## 102 2022.083 Seasonal 888.48798
## 103 2022.167 Seasonal 517.38351
## 104 2022.250 Seasonal 239.20406
## 105 2022.333 Seasonal -626.88998
## 106 2022.417 Seasonal 106.68209
## 107 2022.500 Seasonal -1081.18038
## 108 2022.583 Seasonal 358.47977
## 109 2022.667 Seasonal 399.35982
## 110 2022.750 Seasonal 222.10877
## 111 2022.833 Seasonal -862.05074
## 112 2022.917 Seasonal 1031.28713
## 113 2023.000 Seasonal -1192.87204
## 114 2023.083 Seasonal 888.48798
## 115 2023.167 Seasonal 517.38351
## 116 2023.250 Seasonal 239.20406
## 117 2023.333 Seasonal -626.88998
## 118 2023.417 Seasonal 106.68209
## 119 2023.500 Seasonal -1081.18038
## 120 2023.583 Seasonal 358.47977
## 121 2023.667 Seasonal 399.35982
## 122 2023.750 Seasonal 222.10877
## 123 2023.833 Seasonal -862.05074
## 124 2023.917 Seasonal 1031.28713
## 125 2024.000 Seasonal -1192.87204
## 126 2024.083 Seasonal 888.48798
## 127 2024.167 Seasonal 517.38351
## 128 2024.250 Seasonal 239.20406
## 129 2024.333 Seasonal -626.88998
## 130 2024.417 Seasonal 106.68209
## 131 2024.500 Seasonal -1081.18038
## 132 2024.583 Seasonal 358.47977
## 133 2024.667 Seasonal 399.35982
## 134 2024.750 Seasonal 222.10877
## 135 2024.833 Seasonal -862.05074
## 136 2024.917 Seasonal 1031.28713
## 137 2025.000 Seasonal -1192.87204
## 138 2025.083 Seasonal 888.48798
## 139 2025.167 Seasonal 517.38351
## 140 2025.250 Seasonal 239.20406
## 141 2025.333 Seasonal -626.88998
## 142 2025.417 Seasonal 106.68209
## 143 2025.500 Seasonal -1081.18038
## 144 2025.583 Seasonal 358.47977
## 145 2025.667 Seasonal 399.35982
## 146 2025.750 Seasonal 222.10877
## 147 2025.833 Seasonal -862.05074
## 148 2025.917 Seasonal 1031.28713
## 149 2026.000 Seasonal -1192.87204
## 150 2026.083 Seasonal 888.48798
## 151 2026.167 Seasonal 517.38351
## 152 2026.250 Seasonal 239.20406
## 153 2026.333 Seasonal -626.88998
## 154 2026.417 Seasonal 106.68209
## 155 2026.500 Seasonal -1081.18038
## 156 2026.583 Seasonal 358.47977
## 157 2026.667 Seasonal 399.35982
## 158 2026.750 Seasonal 222.10877
## 159 2026.833 Seasonal -862.05074
## 160 2026.917 Seasonal 1031.28713
## 161 2027.000 Seasonal -1192.87204
## 162 2027.083 Seasonal 888.48798
## 163 2027.167 Seasonal 517.38351
## 164 2027.250 Seasonal 239.20406
## 165 2027.333 Seasonal -626.88998
## 166 2027.417 Seasonal 106.68209
## 167 2027.500 Seasonal -1081.18038
## 168 2027.583 Seasonal 358.47977
## 169 2027.667 Seasonal 399.35982
## 170 2027.750 Seasonal 222.10877
## 171 2027.833 Seasonal -862.05074
## 172 2027.917 Seasonal 1031.28713
## 173 2028.000 Seasonal -1192.87204
## 174 2028.083 Seasonal 888.48798
## 175 2028.167 Seasonal 517.38351
## 176 2028.250 Seasonal 239.20406
## 177 2028.333 Seasonal -626.88998
## 178 2028.417 Seasonal 106.68209
## 179 2028.500 Seasonal -1081.18038
## 180 2028.583 Seasonal 358.47977
## 181 2028.667 Seasonal 399.35982
## 182 2028.750 Seasonal 222.10877
## 183 2028.833 Seasonal -862.05074
## 184 2028.917 Seasonal 1031.28713
## 185 2029.000 Seasonal -1192.87204
## 186 2029.083 Seasonal 888.48798
## 187 2029.167 Seasonal 517.38351
## 188 2029.250 Seasonal 239.20406
## 189 2029.333 Seasonal -626.88998
## 190 2029.417 Seasonal 106.68209
## 191 2029.500 Seasonal -1081.18038
## 192 2029.583 Seasonal 358.47977
## 193 2029.667 Seasonal 399.35982
## 194 2029.750 Seasonal 222.10877
## 195 2029.833 Seasonal -862.05074
## 196 2029.917 Seasonal 1031.28713
## 197 2030.000 Seasonal -1192.87204
## 198 2030.083 Seasonal 888.48798
## 199 2030.167 Seasonal 517.38351
## 200 2030.250 Seasonal 239.20406
## 201 2022.000 Cycle NA
## 202 2022.083 Cycle NA
## 203 2022.167 Cycle NA
## 204 2022.250 Cycle NA
## 205 2022.333 Cycle NA
## 206 2022.417 Cycle NA
## 207 2022.500 Cycle -332.87874
## 208 2022.583 Cycle -1578.85231
## 209 2022.667 Cycle 1581.47464
## 210 2022.750 Cycle 155.35825
## 211 2022.833 Cycle 3403.98002
## 212 2022.917 Cycle 768.50746
## 213 2023.000 Cycle -1663.28928
## 214 2023.083 Cycle 934.71816
## 215 2023.167 Cycle -1321.01463
## 216 2023.250 Cycle -495.47575
## 217 2023.333 Cycle -3578.07944
## 218 2023.417 Cycle -2301.16660
## 219 2023.500 Cycle 325.53852
## 220 2023.583 Cycle 2871.96231
## 221 2023.667 Cycle 3072.93570
## 222 2023.750 Cycle 437.07854
## 223 2023.833 Cycle 2959.25122
## 224 2023.917 Cycle -3370.70533
## 225 2024.000 Cycle -903.72782
## 226 2024.083 Cycle 587.66391
## 227 2024.167 Cycle 2547.17742
## 228 2024.250 Cycle -2879.11510
## 229 2024.333 Cycle 3232.42159
## 230 2024.417 Cycle -1368.75204
## 231 2024.500 Cycle 1153.03912
## 232 2024.583 Cycle -5104.20368
## 233 2024.667 Cycle -4313.51786
## 234 2024.750 Cycle 3114.88581
## 235 2024.833 Cycle -514.46061
## 236 2024.917 Cycle 1073.32662
## 237 2025.000 Cycle 4387.27116
## 238 2025.083 Cycle 3760.74308
## 239 2025.167 Cycle 726.45457
## 240 2025.250 Cycle -425.80626
## 241 2025.333 Cycle -1352.96360
## 242 2025.417 Cycle -2240.18007
## 243 2025.500 Cycle -2757.06793
## 244 2025.583 Cycle 3451.13731
## 245 2025.667 Cycle -1241.96121
## 246 2025.750 Cycle -2240.24172
## 247 2025.833 Cycle -2786.96736
## 248 2025.917 Cycle 221.15687
## 249 2026.000 Cycle -1650.75216
## 250 2026.083 Cycle 3379.18394
## 251 2026.167 Cycle -982.50402
## 252 2026.250 Cycle 5046.45347
## 253 2026.333 Cycle -1465.24576
## 254 2026.417 Cycle 104.31914
## 255 2026.500 Cycle -1655.44991
## 256 2026.583 Cycle 1290.47499
## 257 2026.667 Cycle 263.16895
## 258 2026.750 Cycle 422.60154
## 259 2026.833 Cycle 1128.31136
## 260 2026.917 Cycle -68.75066
## 261 2027.000 Cycle -3150.69909
## 262 2027.083 Cycle -4228.08715
## 263 2027.167 Cycle -293.59650
## 264 2027.250 Cycle -472.71503
## 265 2027.333 Cycle 5141.74768
## 266 2027.417 Cycle 3716.60324
## 267 2027.500 Cycle 2874.31383
## 268 2027.583 Cycle -280.09482
## 269 2027.667 Cycle -3883.36059
## 270 2027.750 Cycle -2275.78131
## 271 2027.833 Cycle -2664.05143
## 272 2027.917 Cycle 229.54735
## 273 2028.000 Cycle 3554.23347
## 274 2028.083 Cycle 423.54634
## 275 2028.167 Cycle -4068.78460
## 276 2028.250 Cycle 663.13832
## 277 2028.333 Cycle -218.53245
## 278 2028.417 Cycle 4687.35229
## 279 2028.500 Cycle -930.81711
## 280 2028.583 Cycle -2573.26515
## 281 2028.667 Cycle 4128.82463
## 282 2028.750 Cycle 28.21810
## 283 2028.833 Cycle -1431.55510
## 284 2028.917 Cycle 1241.42579
## 285 2029.000 Cycle -478.52819
## 286 2029.083 Cycle -4763.26018
## 287 2029.167 Cycle 3486.77586
## 288 2029.250 Cycle -1341.97155
## 289 2029.333 Cycle -1664.83991
## 290 2029.417 Cycle -2503.66785
## 291 2029.500 Cycle 1431.33147
## 292 2029.583 Cycle 2030.85061
## 293 2029.667 Cycle 500.44500
## 294 2029.750 Cycle 465.89004
## 295 2029.833 Cycle NA
## 296 2029.917 Cycle NA
## 297 2030.000 Cycle NA
## 298 2030.083 Cycle NA
## 299 2030.167 Cycle NA
## 300 2030.250 Cycle NA
ggplot(melted_data, aes(x = Date, y = value, color = variable)) +
geom_line() +
facet_wrap(~ variable, scales = "free_y", nrow = 3) +
labs(title = "Decomposition of Time Series Data",
x = "Date",
y = "Value") +
theme_minimal()## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
7 Perbandingan Model
Dalam menjalankan perbandingan kinerja dua model yang berbeda untuk meramalkan pendapatan penjualan di masa depan, kita akan mempertimbangkan keunggulan dan kelemahan masing-masing model. Model regresi akan memberikan wawasan tentang hubungan antara variabel prediktor seperti pengeluaran promosi, harga, dan faktor eksternal dengan pendapatan penjualan. Di sisi lain, model deret waktu akan menangkap pola dan tren temporal dari data, mengakomodasi musiman dan efek waktu lainnya. Dengan membandingkan prediksi dari kedua model, kita akan mengevaluasi keakuratannya dan memilih model yang paling sesuai untuk meramalkan pendapatan penjualan di masa mendatang.
regression_forecast_values <- predict(model, newdata = simulated_data)
regression_rmse <- sqrt(mean((simulated_data$Sales_Revenue - regression_forecast_values)^2))
arima_forecast_values <- forecast_arima$mean[1:length(ts_data)]
arima_rmse <- sqrt(mean((as.vector(ts_data) - arima_forecast_values)^2, na.rm = TRUE))
cat("RMSE untuk model regresi:", regression_rmse, "\n")## RMSE untuk model regresi: 138.9535
## RMSE untuk model ARIMA: 1838.601
Dalam hasil evaluasi model, RMSE (Root Mean Square Error) digunakan sebagai metrik untuk menilai seberapa baik kedua model, yaitu model regresi dan model ARIMA, dalam memprediksi nilai sales revenue di masa depan. Nilai RMSE yang lebih rendah menunjukkan tingkat kesalahan yang lebih kecil dalam prediksi. Dalam hal ini, model regresi memiliki RMSE sebesar 138.9535, sedangkan model ARIMA memiliki RMSE sebesar 1838.601. Dari hasil tersebut, dapat disimpulkan bahwa model regresi memiliki tingkat kesalahan yang lebih rendah dibandingkan dengan model ARIMA, sehingga dapat dianggap lebih baik dalam memprediksi sales revenue di masa depan. Namun, perlu diingat bahwa nilai RMSE harus dibandingkan dengan konteks dan karakteristik data untuk mendapatkan pemahaman yang lebih mendalam tentang kinerja model.