knitr::opts_chunk$set(echo = TRUE)

#ZahraHana_F1F023027 ##ScatterPlot

library(ggplot2)
library(dplyr)
## 
## 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
# Data wilayah, IPM, dan pengeluaran per kapita
wilayah <- c("Provinsi Bengkulu", "Bengkulu Selatan", "Rejang Lebong", "Bengkulu Utara", 
             "Kaur", "Seluma", "Muko-muko", "Lebong", "Kepahiang", "Bengkulu Tengah", "Kota Bengkulu")
indeks_pembangunan_manusia <- c(74.3, 74.06, 74.43, 72.27, 70.92, 70.27, 73, 72.95, 71.38, 70.81, 83.38)
pengeluaran_perkapita <- c(11172, 10657, 10848, 11188, 9365, 8949, 11075, 12012, 10044, 10114, 14924)

# Membuat data frame
DATA_KOMSTAT <- data.frame(
  Wilayah = wilayah,
  Indeks_Pembangunan_Manusia = indeks_pembangunan_manusia,
  Pengeluaran_Perkapita = pengeluaran_perkapita
)

# Menampilkan struktur data
str(DATA_KOMSTAT)
## 'data.frame':    11 obs. of  3 variables:
##  $ Wilayah                   : chr  "Provinsi Bengkulu" "Bengkulu Selatan" "Rejang Lebong" "Bengkulu Utara" ...
##  $ Indeks_Pembangunan_Manusia: num  74.3 74.1 74.4 72.3 70.9 ...
##  $ Pengeluaran_Perkapita     : num  11172 10657 10848 11188 9365 ...
# Mengecek apakah ada data kosong
cek_data_kosong <- function(cek_data) {
  if (any(is.na(cek_data))) {
    message("Ada data yang kosong. Harap lengkapi data sebelum melanjutkan.")
  } else {
    message("Tidak ada data kosong. Proses bisa dilanjutkan.")
  }
}

# Mengecek data kosong pada DATA_KOMSTAT
cek_data_kosong(DATA_KOMSTAT)
## Tidak ada data kosong. Proses bisa dilanjutkan.
# Fungsi menghitung korelasi Pearson
nilai_korelasi <- function(x, y) {
  jumlah_data <- length(x)
  sum_x <- sum(x)
  sum_y <- sum(y)
  sum_produk_deviasi <- sum(x * y)
  sum_kuadrat_deviasi_x <- sum(x^2)
  sum_kuadrat_deviasi_y <- sum(y^2)
  
  pembilang <- (jumlah_data * sum_produk_deviasi) - (sum_x * sum_y)
  penyebut <- sqrt((jumlah_data * sum_kuadrat_deviasi_x - sum_x^2) * (jumlah_data * sum_kuadrat_deviasi_y - sum_y^2))
  korelasi <- pembilang / penyebut
  
  cat("Korelasi Pearson:", korelasi, "\n")
  return(korelasi)
}

# Menghitung korelasi antara IPM dan pengeluaran per kapita
x <- DATA_KOMSTAT$Indeks_Pembangunan_Manusia
y <- DATA_KOMSTAT$Pengeluaran_Perkapita
nilai_korelasi(x, y)
## Korelasi Pearson: 0.9247782
## [1] 0.9247782
# Membuat scatter plot dengan garis regresi
ggplot(DATA_KOMSTAT, aes(x = Indeks_Pembangunan_Manusia, y = Pengeluaran_Perkapita)) +
  geom_point(color = "darkred") +               # Scatter plot
  geom_smooth(method = "lm", color = "blue") +  # Garis regresi
  labs(
    x = "Indeks Pembangunan Manusia",
    y = "Pengeluaran Per Kapita",
    title = "Scatter Plot: Indeks Pembangunan Manusia vs Pengeluaran Per Kapita"
  )
## `geom_smooth()` using formula = 'y ~ x'