Sri Wahyuni (23611068)
Fahma Zuaf Zarir (23611054)
Arya Dirgantara Alfiqhri (23611103)
Larasati Oktarani (23611073)
R Markdown adalah format penulisan dokumen dinamis yang memungkinkan integrasi teks naratif (Markdown) dengan kode R yang dapat dijalankan langsung. Dokumen R Markdown dapat dikompilasi ke berbagai format seperti HTML, PDF, atau Word, dan sangat berguna dalam pembuatan laporan yang reproducible.
R Package adalah kumpulan fungsi, data, dan dokumentasi yang dibundel menjadi satu kesatuan untuk memperluas fungsi dasar R. Package memungkinkan pengguna untuk menyimpan dan membagikan fungsi atau analisis mereka dengan mudah melalui repositori seperti CRAN.
R Shiny adalah framework dari bahasa R yang digunakan untuk membangun aplikasi web interaktif secara langsung dari kode R, tanpa perlu keahlian mendalam dalam HTML, CSS, atau JavaScript. Dengan Shiny, pengguna dapat membuat dashboard interaktif, visualisasi dinamis, atau alat analisis berbasis web yang dapat dijalankan secara lokal maupun online.
Goodness of Fit (GOF) adalah serangkaian uji statistik yang digunakan untuk membandingkan data yang diperoleh secara empiris dengan hasil yang diharapkan secara teoritis (frekuensi yang diharapkan).
Uji Chi-Square digunakan untuk menguji apakah dua variabel kategori dalam satu sampel independen atau terkait satu sama lain, serta untuk menilai seberapa baik sampel sesuai dengan distribusi populasi yang diketahui (goodness of fit).
Uji Goodness of fit Chi Square digunakan ketika sampel dibandingkan pada variabel yang diinginkan terhadap populasi dengan parameter yang diketahui.
Statistik uji Chi-Square \(\chi^2\) didefinisikan sebagai:
\[ \chi^2 = \sum_{i=1}^{j} \frac{(O_i - E_i)^2}{E_i} \]
\[ E_i = n p_i \]
Dengan \(O_i\) sebagai jumlah frekuensi yang diamati untuk tingkat ke-\(i\) dari variabel kategori, dan \(E_i\) sebagai jumlah frekuensi yang diharapkan untuk tingkat ke-\(i\) dari variabel kategori.
Dalam statistik, uji Kolmogorov-Smirnov digunakan untuk mengetahui apakah suatu data mengikuti suatu distribusi tertentu ketika mean dan variansinya diketahui. Uji ini beranggapan bahwa distribusi data yang di uji bersifat kontinyu dan sampel random.
Menurut Kolmogorov (1933) Statistik uji Kolmogorov-Smirnov \(D\) didefinisikan sebagai:
\[ D = \max \left( D^{+}, D^{-} \right) \]
dengan
\[ D^{+} = \max \left( \left| \frac{i}{n} - F(x_i) \right| \right), \quad i = 1, 2, 3, \ldots, n \]
\[ D^{-} = \max \left( \left| F(x_i) - \frac{i-1}{n} \right| \right), \quad i = 1, 2, 3, \ldots, n \]
\(F(x_i)\) merupakan fungsi kumulatif distribusi normal dan \(n\) menyatakan jumlah sampel. Adapun pengambilan keputusan dapat dilihat dari daerah kritis. Apabila nilai \(D\) lebih besar dari nilai \(D_{\text{tabel}}\) (\(D > D_{\text{tab}}\)), maka tolak \(H_0\) dan terima \(H_1\).
Install package dari GitHub:
library(usethis)
library(devtools)
devtools::install_github("FahmaZuaf/Chisquare-KS")
## Using GitHub PAT from the git credential store.
## Skipping install of 'kelompok10' from a github remote, the SHA1 (47e3a6ab) has not changed since last install.
## Use `force = TRUE` to force installation
library(kelompok10)
Sumber : Package
Studi Kasus: Pengujian Kesesuaian Jumlah Tugas yang Selesaikan Mahasiswa dalam 1 Semester dengan Distribusi Poisson. Sebuah kampus ingin menganalisis apakah jumlah tugas yang selesai selama satu semester mengikuti distribusi Poisson. Distribusi Poisson sering digunakan untuk memodelkan kejadian yang terjadi secara acak dalam satuan waktu tertentu, seperti jumlah tugas yang selesai per semester di kelas. Berdasarkan pengamatan sebelumnya, kepala jurusan memperkirakan rata-rata mahasiswa yang menyelesaikan tugas per semester adalah (lambda adalah rata-rata) 3.064103 orang ( \(\lambda\) = 3.064103). Oleh karena itu, mereka ingin menguji kecocokan data assignment aktual dengan distribusi Poisson( \(\lambda\)=3.064103) menggunakan Chi-Square Goodness of Fit Test.
UJI HIPOTESIS
\[ \begin{aligned} H_0 & :\ \text{Data assigment Mahasiswa per Semester mengikuti Distribusi Poisson} \\ H_1 & :\ \text{Data assigment Mahasiswa per Semester tidak mengikuti Distribusi Poisson} \end{aligned} \]
\[ \alpha = 0.05 \]
\[ \begin{aligned} \text{Tolak } H_0\ \text{jika: }\chi^2_{hitung} > \chi^2_{\alpha, df} \quad \text{atau} \quad p\text{-value} < \alpha \end{aligned} \]
# Data kunjungan pelanggan per hari selama 50 hari
data_pois <- c(
3, 3, 1, 3, 4, 3, 3, 0, 2, 4,
3, 1, 3, 3, 1, 4, 3, 3, 1, 2,
3, 0, 2, 5, 5, 5, 5, 4, 5, 5,
4, 4, 4, 4, 5, 5, 4, 5, 5, 5,
5, 4, 5, 4, 1, 0, 1, 3, 3, 0,
2, 3, 3, 4, 3, 4, 1, 4, 4, 3,
3, 1, 3, 3, 4, 3, 4, 3, 1, 3,
1, 2, 4, 5, 2, 2, 2, 2
)
# Uji Chisq Manual
result_manual <- chisq_test_manual(
data = data_pois,
dist = "poisson",
params = list(lambda=mean(data_pois))
)
result_manual
## $statistic
## [1] 9.774587
##
## $df
## [1] 5
##
## $p_value
## [1] 0.08188005
##
## $observed
## [1] 4 10 9 23 18 14
##
## $expected
## [1] 4.004772 12.271032 18.799850 19.201556 14.708884 9.013906
result_manual$statistic
## [1] 9.774587
# Bandingkan Chisq R
tbl_pois <- table(data_pois)
vals_pois <- as.numeric(names(tbl_pois))
p_pois <- dpois(vals_pois, mean(data_pois))
p_pois <- p_pois / sum(p_pois)
res_builtin_pois <- chisq.test(tbl_pois, p = p_pois, rescale.p = FALSE)
## Warning in chisq.test(tbl_pois, p = p_pois, rescale.p = FALSE): Chi-squared
## approximation may be incorrect
res_builtin_pois
##
## Chi-squared test for given probabilities
##
## data: tbl_pois
## X-squared = 9.7746, df = 5, p-value = 0.08188
res_builtin_pois$statistic
## X-squared
## 9.774587
\[ \begin{aligned} \chi^2_{hitung} &= 9.7746 \ <\ \chi^2_{tabel} = 11.071\ & \ p\text{-value} &= 0.08188 \ >\ \alpha = 0.05 \end{aligned} \]
Maka, gagal menolak \(H_0\).
Dengan menggunakan tingkat kepercayaan 95%, data yang ada tidak cukup untuk menolak \(H_0\). Sehingga, data assigment per Semester terbukti mengikuti distribusi Poisson.
Visualisasi PMF
observed <- as.numeric(tbl_pois)
expected <- p_pois * sum(observed)
bar_mid <- barplot(observed, beside=TRUE, col=rgb(0.2,0.4,0.8,0.7),
ylim=c(0, max(c(observed, expected)) * 1.2),
names.arg=vals_pois,
xlab="Jumlah assigment per Semester",
ylab="Frekuensi",
main=expression("Observed vs Expected Frequencies (Poisson " * lambda * " = 3.064103)"))
barplot(expected, beside=TRUE, col=rgb(1,0.4,0.4,0.7),
add=TRUE, axes=FALSE, names.arg=vals_pois)
legend("topright", legend=c("Observed (Data)", expression("Expected (Poisson " * lambda * " = 3.064103)")),
fill=c(rgb(0.2,0.4,0.8,0.7), rgb(1,0.4,0.4,0.7)))
Grafik menunjukkan perbandingan antara jumlah assigment mahasiswa per semester yang diamati dengan jumlah yang diharapkan berdasarkan distribusi Poisson (\(\lambda\) = 3.064103). Secara umum, frekuensi aktual cukup mendekati nilai yang diharapkan, terutama pada kehadiran 2 dan 3. Terdapat sedikit perbedaan pada beberapa jumlah, namun tidak terlalu mencolok. Hal ini menunjukkan bahwa data assigment semester kemungkinan sesuai dengan distribusi Poisson.
Studi Kasus: Pengujian Kesesuaian IPK dengan Distribusi Normal. Seorang analis statistik ingin memeriksa apakah IPK Mahasiswa yang dikumpulkan dari beberapa kampus di wilayah tertentu memiliki pola distribusi yang sesuai dengan distribusi normal. Jika IPK Mahasiswa mengikuti distribusi normal, maka data dapat digunakan untuk analisis lebih lanjut yang membutuhkan asumsi normalitas.
UJI HIPOTESIS
\[ \begin{aligned} H_0 &: \ F(x) = F_0(x) \quad \text{(Data mengikuti distribusi normal)} \\ H_1 &: \ F(x) \neq F_0(x) \quad \text{(Data tidak mengikuti distribusi normal)} \end{aligned} \]
\[ \alpha = 0.05 \]
\[ \text{Tolak } H_0 \ \text{jika:} \ D_{hitung} > D_{tabel} \ \text{atau} \ p\text{-value} < \alpha \]
data_normal <- c(
7.94, 8.292, 4.643, 7.47, 8.882, 7.585, 7.65, 2.412, 6, 8.833,
7.47, 5.528, 7.167, 7.571, 4.7, 8.167, 7.822, 7.598, 4, 6.231,
7.643, 1.76, 6.419, 9.648, 10.7, 10.58, 9.429, 8, 9.585, 9.571,
8.998, 8.333, 8.175, 8, 9.333, 9.5, 9.167, 10.14, 9.999, 10.76,
9.763, 9.41, 9.167, 9.348, 8.167, 3.647, 3.408, 3.936, 7.167, 7.647,
0.53, 6.173, 7.295, 7.295, 8.938, 7.882, 8.353, 5.062, 8.175, 8.235,
7.588, 7.647, 5.237, 7.825, 7.333, 9.167, 7.996, 8.714, 7.833, 4.885,
7.998, 3.82, 5.936, 9, 9.5, 6.057, 6.057, 6.938
)
# Hitung parameter dari data
m <- mean(data_normal)
s <- sd(data_normal)
# Uji KS Manual
library(kelompok10)
hasil_ks <- ks_test(data_normal,
dist = "norm",
params = list(mean = m, sd = s))
## Warning in ks.test.default(x = c(7.94, 8.292, 4.643, 7.47, 8.882, 7.585, : ties
## should not be present for the one-sample Kolmogorov-Smirnov test
print(hasil_ks)
## $D
## [1] 0.1649894
##
## $Dplus
## [1] 0.07084384
##
## $Dminus
## [1] 0.1649894
##
## $p_value_asym
## [1] 0.9748209
##
## $p_value_exact
## [1] 0.02862684
# Bandingkan KS R
ks.test(data_normal, "pnorm", mean = m, sd = s)
## Warning in ks.test.default(data_normal, "pnorm", mean = m, sd = s): ties should
## not be present for the one-sample Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: data_normal
## D = 0.16499, p-value = 0.02863
## alternative hypothesis: two-sided
\[ \begin{aligned} D_{hitung} &= 0.16499\ >\ D_{tabel} = 0.154\ & \ p\text{-value} &= 0.0286\ <\ \alpha = 0.05 \end{aligned} \]
Maka, menolak \(H_0\).
Dengan menggunakan tingkat kepercayaan 95%, data yang ada cukup untuk menolak \(H_0\). Sehingga, data IPK Mahasiswa yang dikumpulkan dari beberapa kampus di wilayah tidak memiliki pola ber distribusi normal.
Visualisasi Data
hist(data_normal, breaks = 10, main = "Distribusi IPK Mahasiswa", xlab = "IPK", col = "lightblue", border="black")
Dapat dilihat output diatas bahwa pola plot tersebut tidak mendekati distribusi normal dan lebih condong ke arah distribusi yang miring ke kanan. Hal ini menunjukkan bahwa data IPK Mahasiswa tidak terdistribusi normal, dengan sebagian besar nilai berkumpul di sisi kanan dan sedikit nilai yang lebih tinggi.
Visualisasi CDF
plot(ecdf(data_normal), main = "Empirical CDF vs Normal CDF", xlab = "Berat Badan (kg)", ylab = "CDF", col = "blue", lwd=2)
curve(pnorm(x, mean = m, sd = s), col = "red", lwd=2, add=TRUE)
legend("bottomright", legend=c("Empirical CDF", "Normal CDF"), col=c("blue", "red"), lwd=2)
Dalam studi kasus pengujian kesesuaian data IPK Mahasiswa dengan distribusi normal, plot “Empirical CDF vs Normal CDF” ini berfungsi sebagai alat visual yang powerful. Garis biru merepresentasikan Empirical Cumulative Distribution Function (ECDF) dari data IPK yang dikumpulkan, menunjukkan sebaran data aktual secara bertahap. Sebaliknya, garis merah melambangkan Cumulative Distribution Function (CDF) dari distribusi normal teoritis, yang dihitung menggunakan rata-rata dan standar deviasi dari data IPK tersebut. Secara visual, kedua garis ini, yaitu ECDF empiris dan CDF normal, terlihat tidak terlalu berdekatan atau bahkan tumpang tindih. Garis biru mengikuti bentuk kurva “S” yang sedikit bengkok ke bawah dari garis merah dengan presisi rendah, mengindikasikan bahwa distribusi frekuensi kumulatif dari data IPK Mahasiswa tidak mirip dengan distribusi normal.
RStudio. (2025). R Markdown: The definitive guide. Retrieved from https://rmarkdown.rstudio.com/ Wickham, H., & Bryan, J. (2024). R packages (2nd ed.). Retrieved from https://r-pkgs.org/ Posit PBC. (2025). Shiny: Web application framework for R. Retrieved from https://shiny.posit.co/