library(e1071)
library(ggplot2)
# Dataset airquality
data("airquality")

# Membersihkan data (hapus NA)
aq_clean <- na.omit(airquality)

# Pembagian data training dan testing
set.seed(42)
index <- sample(1:nrow(aq_clean), 0.7 * nrow(aq_clean))
train_data <- aq_clean[index, ]
test_data <- aq_clean[-index, ]

# Model Regresi Linear
lm_model <- lm(Ozone ~ Temp, data = train_data)
lm_pred <- predict(lm_model, newdata = test_data)

# Model SVR
svr_model <- svm(Ozone ~ Temp, data = train_data, type = "eps-regression")
svr_pred <- predict(svr_model, newdata = test_data)

# Visualisasi Hasil
ggplot() +
  geom_point(aes(x = test_data$Temp, y = test_data$Ozone), color = "black", size = 2) +  # Data asli
  geom_line(aes(x = test_data$Temp, y = lm_pred), color = "blue", linetype = "dashed", size = 1) +  # Regresi Linear
  geom_line(aes(x = test_data$Temp, y = svr_pred), color = "red", linetype = "solid", size = 1) +  # SVR
  labs(title = "Perbandingan SVR vs Regresi Linear dalam Prediksi Ozone",
       x = "Temperature (Fahrenheit)",
       y = "Ozone (ppb)") +
  theme_minimal()
## 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.

# Menghitung MSE
lm_mse <- mean((lm_pred - test_data$Ozone)^2)
svr_mse <- mean((svr_pred - test_data$Ozone)^2)

# Print hasil MSE
print(paste("MSE Regresi Linear:", round(lm_mse, 2)))
## [1] "MSE Regresi Linear: 609.59"
print(paste("MSE SVR:", round(svr_mse, 2)))
## [1] "MSE SVR: 599.56"

#Interpretasi Hasil: Visualisasi: - Titik-titik hitam = data aktual. - Garis biru putus-putus = hasil regresi linear. - Garis merah solid = hasil SVR. - Kalau pola data agak “membelok”, SVR biasanya bisa mengikuti lekukannya lebih baik.

MSE: - Menunjukkan rata-rata kesalahan kuadrat. Makin kecil nilainya, makin bagus prediksinya. - Berdasarkan hasil yang diperoleh, MSE Regresi Linear 609.59 > MSE SVR 599.56 sehingga dapat disimpulkan untuk data(airquality) SVR adalah metode yang lebih baik daripada regresi.

Kesimpulan: - Regresi Linear lebih sederhana dan mungkin lebih mudah diinterpretasikan, namun hanya efektif jika hubungan antara variabel bersifat linear. - SVR lebih fleksibel dan dapat menangani hubungan non-linear, yang seringkali lebih sesuai dalam data nyata yang lebih kompleks.