FOTO KELOMPOK 1
FOTO KELOMPOK 1

Kelompok 1

Melalui HTML ini, kami akan mengimplementasikan materi yang telah dipelajari dari mata kuliah KOMPUTASI STATISTIKA

1. PENDAHULUAN

Dalam dunia yang semakin didorong oleh data, kemampuan untuk menganalisis informasi secara efektif sangatlah penting. Project ini disusun sebagai bagian dari tugas kuliah komputasi statistika, yang bertujuan untuk menggabungkan beberapa konsep, seperti regresi linier, statistik deskriptif, fungsi bersarang, dan data time series. Semua konsep ini diterapkan menggunakan bahasa pemrograman R, yang dikenal fleksibel dalam pengolahan data dan analisis statistik.
Dalam proses analisis, statistik deskriptif digunakan untuk memberikan gambaran awal tentang karakteristik data, seperti distribusi, variansi, dan hubungan antar variabel. Fungsi bersarang diterapkan untuk mempermudah pengolahan data secara modular (menjadi bagian-bagian yang lebih kecil). Konsep data time series juga diterapkan untuk memahami tren dan pola yang terkait dengan dimensi waktu.
Dengan menggabungkan berbagai teknik komputasi statistik ini, project ini diharapkan dapat memberikan gambaran menyeluruh tentang bagaimana berbagai metode analisis data dapat digunakan secara efektif untuk memecahkan suatu masalah. Melalui penerapan praktis dalam bahasa pemrograman R, project ini bertujuan untuk mengembangkan pemahaman yang lebih mendalam mengenai analisis statistik dalam konteks komputasi modern.

2. TINJAUAN PUSTAKA

2.1 Statistika Deskriptif

Statistik deskriptif adalah cabang statistik yang berfokus pada pengumpulan, penyajian, dan analisis data untuk memberikan gambaran yang jelas mengenai karakteristik suatu kelompok data. Metode ini mencakup penggunaan ukuran pusat seperti mean, median, dan modus, serta ukuran penyebaran seperti rentang, varians, dan deviasi standar. Tujuannya adalah untuk merangkum dan menggambarkan data dalam bentuk yang lebih mudah dipahami, tanpa melakukan inferensi atau generalisasi lebih lanjut tentang populasi yang lebih besar.

2.2 ANALISIS REGRESI

Regresi linier adalah model statistik yang digunakan untuk menganalisis hubungan antara variabel dependen (Y) dengan dua atau lebih variabel independen (X₁, X₂, …, Xₙ). Bentuk umum dari persamaan regresi linier berganda adalah

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_n X_n + \epsilon \]
Di mana:

  • \(Y\) adalah variabel dependen.
  • \(X_1, X_2, \dots, X_n\) adalah variabel independen.
  • \(\beta_0\) adalah intercept (konstanta).
  • \(\beta_1, \beta_2, \dots, \beta_n\) adalah koefisien regresi untuk setiap variabel independen.
  • \(\epsilon\) adalah error term (residual).

2.3 DATA TIME SERIES

Data time series (data deret waktu) adalah kumpulan data yang diambil atau direkam dalam urutan waktu secara berkelanjutan dan berurutan. Data ini mencakup pengamatan yang diukur pada interval waktu tertentu, misalnya harian, mingguan, bulanan, atau tahunan. Dalam data deret waktu, urutan data sangat penting karena setiap titik data terkait dengan waktu spesifik.

3. SOURCE CODE DAN PEMBAHASAN

3.1 DATA

3.1.1 DATA 1

Source: BPS

Berikut ini merupakan data yang akan diolah. Data ini dibuat menggunakan data frame.

data_1 <- data.frame(
Provinsi = c("NAD", "Sumatera Utara", "Sumatera Selatan", "Sumatera Barat",
             "Bengkulu", "Riau", "Kepulauan Riau", "Jambi", "Lampung", "Bangka
             Belitung", "Kalimantan Barat", "Kalimantan Timur", "Kalimantan
             Selatan", "Kalimantan Tengah", "Banten", "DKI Jakarta", "Jawa Barat",
             "Jawa Tengah", "DI Yogyakarta", "Jawa Timur", "Bali", "NTT", "NTB",
             "Gorontalo", "Sulawesi Barat", "Sulawesi Tengah", "Sulawesi Utara",
             "Sulawesi Tenggara", "Sulawesi Selatan", "Maluku Utara", "Maluku",
             "Papua Barat", "Papua"),

X1 = c(9.02, 9.13, 8.04, 8.63, 8.55, 8.78, 9.91, 8.37, 7.89, 8.15, 7.17, 9.39,
       8.01, 8.17, 8.61, 11, 8.11, 7.43, 9.33, 7.53, 8.58, 7.16, 7.2, 7.52, 7.35,
       8.22, 9.09, 8.44, 8.01, 8.72, 9.2, 8.53, 6.87),

X2 = c(856.9, 1416.4, 1104.6, 384.1, 323.5, 511.5, 119.1, 277.7, 1144.8, 119.4,
       407.3, 248.7, 184.3, 149.4, 677.5, 371.7, 4375.2, 4811.3, 541.9, 4893,
       182.8, 1006.9, 815.5, 198.5, 151.7, 400.4, 201.1, 330.8, 863.2, 85.6,
       315.2, 226.2, 960.6),

Y = c(68.3, 68.36, 66.16, 68.91, 68.53, 69.21, 73.02, 67.7, 68.17, 71.19, 64.92,
      73.21, 69.43, 67.41, 69.47, 78.08, 68.25, 68.02, 76.44, 67.55, 72.09, 61.68,
      63.76, 64.7, 61.53, 65.79, 69.49, 67.55, 67.92, 64.78, 66.09, 60.91, 56.25)
)
data_1
##                            Provinsi    X1     X2     Y
## 1                               NAD  9.02  856.9 68.30
## 2                    Sumatera Utara  9.13 1416.4 68.36
## 3                  Sumatera Selatan  8.04 1104.6 66.16
## 4                    Sumatera Barat  8.63  384.1 68.91
## 5                          Bengkulu  8.55  323.5 68.53
## 6                              Riau  8.78  511.5 69.21
## 7                    Kepulauan Riau  9.91  119.1 73.02
## 8                             Jambi  8.37  277.7 67.70
## 9                           Lampung  7.89 1144.8 68.17
## 10    Bangka\n             Belitung  8.15  119.4 71.19
## 11                 Kalimantan Barat  7.17  407.3 64.92
## 12                 Kalimantan Timur  9.39  248.7 73.21
## 13 Kalimantan\n             Selatan  8.01  184.3 69.43
## 14                Kalimantan Tengah  8.17  149.4 67.41
## 15                           Banten  8.61  677.5 69.47
## 16                      DKI Jakarta 11.00  371.7 78.08
## 17                       Jawa Barat  8.11 4375.2 68.25
## 18                      Jawa Tengah  7.43 4811.3 68.02
## 19                    DI Yogyakarta  9.33  541.9 76.44
## 20                       Jawa Timur  7.53 4893.0 67.55
## 21                             Bali  8.58  182.8 72.09
## 22                              NTT  7.16 1006.9 61.68
## 23                              NTB  7.20  815.5 63.76
## 24                        Gorontalo  7.52  198.5 64.70
## 25                   Sulawesi Barat  7.35  151.7 61.53
## 26                  Sulawesi Tengah  8.22  400.4 65.79
## 27                   Sulawesi Utara  9.09  201.1 69.49
## 28                Sulawesi Tenggara  8.44  330.8 67.55
## 29                 Sulawesi Selatan  8.01  863.2 67.92
## 30                     Maluku Utara  8.72   85.6 64.78
## 31                           Maluku  9.20  315.2 66.09
## 32                      Papua Barat  8.53  226.2 60.91
## 33                            Papua  6.87  960.6 56.25
3.1.2 DATA 2

Berikut ini merupakan data yang akan diolah. Data ini dibuat menggunakan vector.

data_2 <- c(406.7, 245.3, 429.4, 582.9, 221.1, 223.9, 90.9, 136.4, 314.0, 461.7, 605.2, 555.0)
data_2
##  [1] 406.7 245.3 429.4 582.9 221.1 223.9  90.9 136.4 314.0 461.7 605.2 555.0
3.1.3 DATA 3

Berikut ini merupakan data yang akan diolah. Data ini dibuat menggunakan data frame.

data_3 <- data.frame(
  id_customer = 1:10,
  transaksi = c(1500, 2000, 5600, 39000, 80000, 10200, 35200, 11000, 7000, 9900),
  asal = c("Utara", "Selatan", "Timur", "Barat", "Utara", "Selatan", "Timur", "Barat", "Utara", "Selatan"),
  kategori = c("A", "B", "A", "A", "B", "B", "A", "B", "A", "B"))
data_3
##    id_customer transaksi    asal kategori
## 1            1      1500   Utara        A
## 2            2      2000 Selatan        B
## 3            3      5600   Timur        A
## 4            4     39000   Barat        A
## 5            5     80000   Utara        B
## 6            6     10200 Selatan        B
## 7            7     35200   Timur        A
## 8            8     11000   Barat        B
## 9            9      7000   Utara        A
## 10          10      9900 Selatan        B

3.2 Membuat Fungsi Statistik Deskriptif

Berikut merupakan pembuatan fungsi statistik deskriptif menggunakan fungsi function

# Fungsi untuk mencari statistik deskriptif
statistik_deskriptif <- function(data) 
{
  # Periksa apakah data yang diinputkan adalah data frame
  if (!is.data.frame(data))  {stop("Data harus berupa data frame")}
   
  # Pilih kolom numerik
  data_numerik <- data[sapply(data, is.numeric)]
  
  # Jika tidak ada kolom numerik
  if (ncol(data_numerik) == 0) {
    stop("Tidak ada kolom numerik pada data")
  }
  
  # Hitung statistik deskriptif untuk setiap kolom yang numerik
  statistik_deskriptif <- data.frame(
    Mean = sapply(data_numerik, mean, na.rm = TRUE),
    Median = sapply(data_numerik, median, na.rm = TRUE),
    Standar_deviasi = sapply(data_numerik, sd, na.rm = TRUE),
    Minimum = sapply(data_numerik, min, na.rm = TRUE),
    Maksimum = sapply(data_numerik, max, na.rm = TRUE),
    Q1 = sapply(data_numerik, function(x) quantile(x, probs = 0.25, na.rm = TRUE)),
    Q3 = sapply(data_numerik, function(x) quantile(x, probs = 0.75, na.rm = TRUE))
  )
  
  return(statistik_deskriptif)
}

Selanjutnya hitung statistik deskriptif data 1 menggunakan fungsi yang telah dibuat sebelumnya kemudian lihat outptnya. Pada output dapat dilihat bahwa nilai statistik deskriptif yang muncul hanya kolom yang berisi data numerik.

hasil_statistik_1 <- statistik_deskriptif (data_1)
hasil_statistik_1
##         Mean Median Standar_deviasi Minimum Maksimum     Q1     Q3
## X1   8.36697   8.37       0.8773628    6.87    11.00   7.89   8.78
## X2 868.38788 384.10    1278.7107689   85.60  4893.00 201.10 863.20
## Y   67.72333  68.02       4.2956982   56.25    78.08  65.79  69.43

3.3 Membuat Fungsi Analisis Regresi

Selanjutnya kita mencari model regresi untuk data 1

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
# Membuat model regresi linier berganda menggunakan pipe operator
model <- lm(Y ~ X2 + X1, data = data_1)

# Menampilkan ringkasan hasil regresi
summary(model)
## 
## Call:
## lm(formula = Y ~ X2 + X1, data = data_1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.0272 -1.0304  0.3652  1.3550  5.1016 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.380e+01  5.085e+00   6.647 2.32e-07 ***
## X2          6.783e-04  4.054e-04   1.673    0.105    
## X1          3.984e+00  5.909e-01   6.742 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.795 on 30 degrees of freedom
## Multiple R-squared:  0.6032, Adjusted R-squared:  0.5767 
## F-statistic:  22.8 on 2 and 30 DF,  p-value: 9.522e-07
# Membuat prediksi berdasarkan model
data_1$predicted_Y <- predict(model, newdata = data_1)

# Plot regresi berganda
ggplot(data_1, aes(x = X1, y = Y)) +
  # Titik data dengan warna berdasarkan X2 dan ukuran berdasarkan Y
  geom_point(aes(color = X2, size = Y), alpha = 0.7) +
  
  # Garis regresi dengan warna biru dan garis putus-putus
  geom_smooth(aes(y = predicted_Y), method = "lm", se = FALSE, color = "blue", linetype = "dashed") +
  
  # Menambahkan label, judul, dan keterangan untuk skala warna dan ukuran
  labs(
    title = "Plot Regresi Berganda: X1 & X2 terhadap Y",
    x = "X1",
    y = "Y",
    color = "X2 (Pengaruh)",
    size = "Y (Target)"
  ) +
  
  # Mengatur gradien warna untuk variabel X2
  scale_color_gradient(low = "cyan", high = "magenta") +
  
  # Tema minimalis dan elegan
  theme_minimal() +
  
  # Kustomisasi tampilan teks
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
    axis.title.x = element_text(size = 12, face = "bold"),
    axis.title.y = element_text(size = 12, face = "bold"),
    legend.position = "right"
  )
## `geom_smooth()` using formula = 'y ~ x'

3.4 Membuat Fungsi yang Menggunakan Data Time Series

Berikut ini merupakan fungsi membuat data time series dari data 2.

data_ts <- ts(data_2, frequency = 12, start = c(2005, 1))
data_ts
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
## 2005 406.7 245.3 429.4 582.9 221.1 223.9  90.9 136.4 314.0 461.7 605.2 555.0
# Plot time series
plot(data_ts, main = "Time Series Data 2", xlab = "Waktu (bulan)", ylab = "Nilai",
     col = "magenta", lwd = 5, type = "s", pch = 19,)

3.5 Fungsi dengan Pipe Operator

Berikut merupakan fungsi untuk mengelompokkan data tanpa pipe operator dan menggunakan pipe operator, dapat dilihat keduanya memiliki output yang sama.

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
## 
## 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
library(magrittr)
## Warning: package 'magrittr' was built under R version 4.3.2
#fungsi mengelompokkan data (tanpa pipe)
result <- aggregate(transaksi ~ asal + kategori, 
                    data = transform(data_3, besar_transaksi = ifelse(transaksi > 100, "Yes", "No")), 
                    FUN = function(x) c(mean = mean(x), total = sum(x)))

#menampilkan output dengan tabel
hasil <- do.call(data.frame, result)
colnames(hasil)[3:4] <- c("mean_transaksi", "total_transaksi")
hasil
##      asal kategori mean_transaksi total_transaksi
## 1   Barat        A      39000.000           39000
## 2   Timur        A      20400.000           40800
## 3   Utara        A       4250.000            8500
## 4   Barat        B      11000.000           11000
## 5 Selatan        B       7366.667           22100
## 6   Utara        B      80000.000           80000
#fungsi mengelompokkan data (dengan pipe)
hasil <- data_3 %>%
  mutate(besar_transaksi = ifelse(transaksi > 100, "Yes", "No")) %>%  
  group_by(asal, kategori) %>%  
  summarise(
    mean_transaksi = mean(transaksi),  
    total_transaksi = sum(transaksi)  
  ) %>%
  ungroup() %>% 
  arrange(kategori)
## `summarise()` has grouped output by 'asal'. You can override using the
## `.groups` argument.
hasil
## # A tibble: 6 × 4
##   asal    kategori mean_transaksi total_transaksi
##   <chr>   <chr>             <dbl>           <dbl>
## 1 Barat   A                39000            39000
## 2 Timur   A                20400            40800
## 3 Utara   A                 4250             8500
## 4 Barat   B                11000            11000
## 5 Selatan B                 7367.           22100
## 6 Utara   B                80000            80000

4. KESIMPULAN DAN SARAN

Project ini berhasil menunjukkan pentingnya analisis data dalam konteks yang didorong oleh informasi dengan mengintegrasikan berbagai konsep statistik, seperti regresi linier berganda, statistik deskriptif, fungsi bersarang, dan data time series. Melalui penerapan regresi linier berganda, kita dapat memahami hubungan antara variabel dependen dan independen. Sementara statistik deskriptif memberikan gambaran awal tentang karakteristik data. Penggunaan fungsi bersarang berguna untuk memperjelas struktur kode sehingga lebih mudah dipahami dan dikembangkan. Konsep time series pada data berfungsi untuk menangkap tren.
Diharapkan para pembaca mempelajari tentang penggunakan RStudio terlebih dahulu sebelum mengoperasikannya. Dalam menjalankan suatu fungsi pada RStudio diharapkan untuk teliti saat mengoperasikannya. Penulisan sintaks sangat perlu diperhatikan karena apabila terdapat kesalahan penulisan akan membuat program error.