Study Cases

Confidence Interval ~ Week 13 ~

library(ggplot2)
library(plotly)

Khafizatun Nisa
Data Science undergraduate student

R Programming Data Science Statistics

1 Studi Kasus 1

Interval Kepercayaan untuk Rata-rata (\(\sigma\) Diketahui)

Diketahui (Given):

σ = 3,2 → population standard deviation (simpangan baku populasi)
n = 100 → sample size (ukuran sampel)
x̄ = 12,6 → sample mean (rata-rata sampel)

1.1 Identifikasi uji statistik

Metode statistik yang digunakan adalah Z Confidence Interval for the Mean (interval kepercayaan rata-rata menggunakan distribusi Z).Disebut Z-interval karena menggunakan distribusi Z (normal standar)

Digunakan ketika:
- Simpangan baku populasi (σ) diketahui
- Ukuran sampel besar (n ≥ 30)
- Tujuan analisis adalah mengestimasi rata-rata populasi

Semua kondisi tersebut terpenuhi pada kasus ini, sehingga Z Confidence Interval adalah metode yang tepat.

1.2 Hitung Interval Kepercayaan

Langkah 1: Menentukan rumus (Nama: Confidence Interval Formula)
\[ \bar{x} \pm Z_{\alpha/2}\left(\frac{\sigma}{\sqrt{n}}\right) \] Langkah 2: Menghitung Standard Error
\[\frac{\sigma}{\sqrt{n}} = \frac{3,2}{\sqrt{100}} = \frac{3,2}{10} = 0,32\] Standard error menunjukkan tingkat ketidakpastian rata-rata sampel terhadap rata-rata populasi.

1. Confidence Interval 90%
• Nilai Z = 1,645 (Nama: Critical Z-value)
\[12,6 \pm 1,645(0,32)\] • Margin of Error:
Margin of error adalah batas kesalahan estimasi.
\[1,645 \times 0,32 = 0,526\] • Lower & Upper Bound:
Lower Bound (Batas Bawah)=12,6 − 0,526 = 12,07
Upper Bound (Batas Atas) =12,6 + 0,526 = 13,13

Hasil Interval:
\[(12,07 , 13,13)\]

2. Confidence Interval 95%
• Nilai \(Z = 1,96\)
\[12,6 \pm 1,96(0,32)\] • Margin of Error:
\[1,96×0,32=0,627\] • Lower & Upper Bound:
Lower Bound (Batas Bawah)=12,6 − 0,627 = 11,97
Upper Bound (Batas Atas)=12,6 + 0,627 = 13,23

Hasil Interval:
\[(11,97 , 13,23)\]

c. Confidence Interval 99%

• Nilai Z = 2,576 \[12,6±2,576(0,32)\]

• Margin of Error: \[2,576×0,32=0,824\]

• Lower & Upper Bound:
Lower Bound (Batas Bawah)=12,6 − 0,824 = 11,78
Upper Bound (Batas Atas)=12,6 + 0,824 = 13,42

Hasil Interval:
\[(11,78 , 13,42)\]

1.3 visualisasi perbandingan

# Data confidence interval
ci_data <- data.frame(
  Confidence_Level = c("90%", "95%", "99%"),
  Lower = c(12.07, 11.97, 11.78),
  Upper = c(13.13, 13.23, 13.42),
  Mean = c(12.6, 12.6, 12.6)
)

library(ggplot2)
library(plotly)

p <- ggplot(
  ci_data,
  aes(
    x = Confidence_Level,
    y = Mean,
    text = paste(
      "Confidence Level:", Confidence_Level,
      "<br>Mean:", Mean,
      "<br>Lower:", Lower,
      "<br>Upper:", Upper
    )
  )
) +
  geom_point(size = 3, color = "#6F63FF") +
  geom_errorbar(
    aes(ymin = Lower, ymax = Upper),
    width = 0.2,
    color = "#B2ABFF"
  ) +
  labs(
    title = "Comparison of Confidence Intervals",
    x = "Confidence Level",
    y = "Average Daily Transactions"
  ) +
  theme_minimal()

# Ubah jadi grafik interaktif
ggplotly(p, tooltip = "text")

Sumbu X: Confidence Level
Sumbu Y: Nilai Mean
Garis horizontal: interval kepercayaan
Titik tengah: sample mean (12,6)
Visualisasi yang digunakan adalah confidence interval plot (error bar plot). Garis vertikal menunjukkan rentang interval kepercayaan, sedangkan titik menunjukkan rata-rata sampel (12,6). Terlihat bahwa interval kepercayaan semakin lebar seiring meningkatnya tingkat kepercayaan dari 90% ke 99%.

1.4 Interpretasi Bisnis

  • Rata-rata transaksi harian per pengguna diperkirakan sekitar 12,6 transaksi.
  • Interval kepercayaan menunjukkan bahwa nilai rata-rata populasi berada dalam rentang ± tertentu di sekitar 12,6.
  • Semakin tinggi tingkat kepercayaan (90% → 99%), rentang interval semakin lebar.
  • Interval yang lebih lebar berarti keyakinan meningkat, tetapi presisi estimasi menurun.
  • Secara bisnis, fitur baru menunjukkan performa yang stabil, namun tingkat kepercayaan yang digunakan sebaiknya disesuaikan dengan risiko keputusan bisnis.

2 Studi Kasus 2

Diketahui (Given):
Data waktu penyelesaian tugas (menit) dari 12 pengguna:
8.4, 7.9, 9.1, 8.7, 8.2, 9.0, 7.8, 8.5, 8.9, 8.1, 8.6, 8.3

n = 12 (ukuran sampel kecil)
σ tidak diketahui
x̄ = 8,46 menit (rata-rata sampel)
s = 0,44 menit (simpangan baku sampel)

2.1 Identifikasi Uji Statistik

Metode yang digunakan adalah T Confidence Interval for the Mean.

Alasannya:
- Simpangan baku populasi (σ) tidak diketahui
- Ukuran sampel kecil (n < 30)
- Tujuan analisis adalah mengestimasi rata-rata populasi
Karena kondisi ini terpenuhi, maka digunakan distribusi t (Student’s t-distribution).

2.2 Perhitungan Interval Kepercayaan

Rumus Interval Kepercayaan:
\[\bar{x} \pm t_{\alpha/2} \left(\frac{s}{\sqrt{n}}\right)\] Standard Error:
\[SE = \frac{0,44}{\sqrt{12}} = 0,13\] Derajat kebebasan:
\[df=n−1=11\]

1.Confidence Interval 90%
Nilai t (df = 11) = 1,796

Margin of Error:
\[1,796×0,13=0,22\] Lower Bound = 8,46 − 0,22 = 8,24
Upper Bound = 8,46 + 0,22 = 8,68

CI 90%:
(8,24 , 8,68)

2.Confidence Interval 95%
Nilai t (df = 11) = 2,201

Margin of Error:
\[2,201×0,13=0,27\]

Lower Bound = 8,19
Upper Bound = 8,73

CI 95%:
(8,19 , 8,73)

3.Confidence Interval 99%
Nilai t (df = 11) = 3,106

Margin of Error:
\[3,106×0,13=0,38\]

Lower Bound = 8,08
Upper Bound = 8,84

CI 99%:
(8,08 , 8,84)

2.3 Visualisasi

library(plotly)

confidence <- c("90%", "95%", "99%")
lower <- c(8.24, 8.19, 8.08)
upper <- c(8.68, 8.73, 8.84)
mean <- c(8.46, 8.46, 8.46)

plot_ly(
  x = confidence,
  y = mean,
  type = "scatter",
  mode = "markers",
  marker = list(size = 10, color = "#6F63FF"),
  error_y = list(
    type = "data",
    symmetric = FALSE,
    array = upper - mean,
    arrayminus = mean - lower,
    color = "#B2ABFF"
  ),
  text = paste(
    "Confidence Level:", confidence,
    "<br>Mean:", mean,
    "<br>Lower Bound:", lower,
    "<br>Upper Bound:", upper,
    "<br><b>Interpretation:</b><br>Rentang waktu penyelesaian tugas<br>dengan tingkat kepercayaan terkait."
  ),
  hoverinfo = "text"
) %>%
  layout(
    title = "Comparison of Confidence Intervals",
    xaxis = list(title = "Confidence Level"),
    yaxis = list(
      title = "Task Completion Time (minutes)",
      range = c(8.0, 8.9)
    )
  )

Visualisasi ini menunjukkan perbandingan interval kepercayaan 90%, 95%, dan 99%, di mana garis vertikal merepresentasikan rentang interval kepercayaan dan titik menunjukkan rata-rata sampel. Terlihat bahwa interval kepercayaan semakin lebar seiring meningkatnya tingkat kepercayaan.

2.4 pengaruh ukuran sampel dan tingkat kepercayaan kepada lebar interval

  • Ukuran sampel kecil (n = 12) → interval kepercayaan menjadi lebih lebar
  • Confidence level semakin tinggi (90% → 99%) → interval semakin lebar
  • Interval yang lebih lebar berarti keyakinan meningkat, tetapi presisi menurun

3 Studi Kasus 3

Diketahui (Given):

n = 400 → total users
x = 156 → users yang klik CTA

3.1 Hitung Sample Proportion (p̂)

Rumus (Nama: Sample Proportion):

\[\hat{p} = \frac{x}{n}\] Perhitungan:
\[\hat{p} = \frac{156}{400} = 0,39\] Artinya, 39% pengguna mengklik CTA.

3.2 Interval Kepercayaan untuk Proporsi

Rumus Confidence Interval for Proportion:

\[\hat{p} \pm Z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\] Standard Error:
\[SE = \sqrt{\frac{0,39(1-0,39)}{400}} = \sqrt{\frac{0,2379}{400}} = 0,024\]

a. Confidence Interval 90%
Nilai Z = 1,645

Margin of Error:
1,645×0,024=0,039

Lower Bound = 0,39 − 0,039 = 0,351
Upper Bound = 0,39 + 0,039 = 0,429

CI 90%:
(0,351 , 0,429)

b. Confidence Interval 95%
Nilai Z = 1,96

Margin of Error:
1,96×0,024=0,047

Lower Bound = 0,343
Upper Bound = 0,437

CI 95%:
(0,343 , 0,437)

c. Confidence Interval 99%
Nilai Z = 2,576

Margin of Error:
2,576×0,024=0,062

Lower Bound = 0,328
Upper Bound = 0,452

CI 99%:
(0,328 , 0,452)

3.3 Visualisasi perbandingan interval

library(plotly)

confidence <- c("90%", "95%", "99%")
lower <- c(0.351, 0.343, 0.328)
upper <- c(0.429, 0.437, 0.452)
p_hat <- c(0.39, 0.39, 0.39)

plot_ly(
  x = confidence,
  y = p_hat,
  type = "scatter",
  mode = "markers",
  marker = list(size = 10, color = "#6F63FF"),
  error_y = list(
    type = "data",
    symmetric = FALSE,
    array = upper - p_hat,
    arrayminus = p_hat - lower,
    color = "#B2ABFF"
  ),
  text = paste(
    "Confidence Level:", confidence,
    "<br>Estimated Proportion (p̂):", round(p_hat, 3),
    "<br>Lower Bound:", lower,
    "<br>Upper Bound:", upper,
    "<br><b>Interpretation:</b><br>Rentang estimasi click-through rate<br>dengan tingkat kepercayaan terkait."
  ),
  hoverinfo = "text"
) %>%
  layout(
    title = "Confidence Intervals for CTA Click Rate",
    xaxis = list(title = "Confidence Level"),
    yaxis = list(
      title = "Click-Through Rate (Proportion)",
      range = c(0.32, 0.46)
    )
  )

3.4 Pengaruh Confidence Level terhadap Keputusan Produk

  • Confidence level lebih rendah (90%)
    → interval lebih sempit
    → cocok untuk keputusan cepat, tetapi risiko kesalahan lebih tinggi

  • Confidence level lebih tinggi (95%–99%)
    → interval lebih lebar
    → keputusan lebih aman dan konservatif, tetapi kurang presisi

4 Studi Kasus 4

Diketahui: Team A
n = 36
x̄ = 210 ms
σ = 24 ms (simpangan baku populasi diketahui)

Team B
n = 36
x̄ = 210 ms
s = 24 ms (simpangan baku sampel, σ tidak diketahui)

4.1 Identifikasi Uji Statistik

Team A
Menggunakan Z Confidence Interval for the Mean
Alasan:
Simpangan baku populasi (σ) diketahui
Ukuran sampel cukup besar (n ≥ 30)

Team B
Menggunakan t Confidence Interval for the Mean
Alasan:
Simpangan baku populasi tidak diketahui
Menggunakan simpangan baku sampel (s)
Distribusi t dengan derajat kebebasan
\[df=n−1=35\]

4.2 Menghitung Interval Kepercayaan

Standard Error (keduanya sama) \[SE = \frac{24}{\sqrt{36}} = \frac{24}{6} = 4\]

A. Team A — Z Confidence Interval
• 90% Confidence Interval
- Z = 1,645
- Margin of Error \(= 1,645 × 4 = 6,58\)

CI 90%:
210±6,58=(203,42, 216,58)

• 95% Confidence Interval
- Z = 1,96
- Margin of Error = 7,84

CI 95%:
(202,16, 217,84)

• 99% Confidence Interval
- Z = 2,576 - Margin of Error = 10,30

CI 99%:
(199,70, 220,30)

B. Team B — t Confidence Interval (df = 35)
• 90% Confidence Interval
t = 1,690
Margin of Error = 6,76

CI 90%:
(203,24, 216,76)

• 95% Confidence Interval
- t = 2,030
- Margin of Error = 8,12

CI 95%:
(201,88, 218,12)

• 99% Confidence Interval
- t = 2,724
- Margin of Error = 10,90

CI 99%:
(199,10, 220,90)

4.3 Visualisasi

library(plotly)

team <- c("A 90%", "A 95%", "A 99%", "B 90%", "B 95%", "B 99%")
lower <- c(203.42, 202.16, 199.70, 203.24, 201.88, 199.10)
upper <- c(216.58, 217.84, 220.30, 216.76, 218.12, 220.90)
mean <- rep(210, 6)

plot_ly(
  x = team,
  y = mean,
  type = "scatter",
  mode = "markers",
  marker = list(size = 10, color = "#6F63FF"),
  error_y = list(
    type = "data",
    symmetric = FALSE,
    array = upper - mean,
    arrayminus = mean - lower,
    color = "#B2ABFF"
  ),
  text = paste(
    "Team & Confidence Level:", team,
    "<br>Mean Latency (ms):", mean,
    "<br>Lower Bound:", lower,
    "<br>Upper Bound:", upper,
    "<br><b>Interpretation:</b><br>",
    "Rentang interval kepercayaan<br>",
    "untuk estimasi latency API."
  ),
  hoverinfo = "text"
) %>%
  layout(
    title = "Comparison of Z-Test and t-Test Confidence Intervals",
    xaxis = list(title = "Test & Confidence Level"),
    yaxis = list(
      title = "API Latency (ms)",
      range = c(198, 222)
    )
  )

4.4 Mengapa Lebar Interval Berbeda

  • Z-test (Team A) menggunakan σ yang diketahui → lebih presisi
  • t-test (Team B) memperhitungkan ketidakpastian estimasi σ → interval lebih lebar
  • Distribusi t memiliki ekor lebih tebal dibanding distribusi Z
  • Walaupun data dan ukuran sampel sama, ketidakpastian tambahan pada t-test membuat intervalnya lebih luas

5 Studi Kasus 5

DIKETAHUI
Dari studi kasus:

  • Jumlah total pengguna mingguan \[n = 250\]

  • Jumlah pengguna yang menggunakan fitur premium
    \[x = 185\]

  • Estimasi proporsi pengguna premium
    \[\hat{p} = \frac{x}{n} = \frac{185}{250} = 0.74\]

  • Target manajemen
    \[p \ge 0.70\]

5.1 Jenis Confidance Interval & Test

  • Jenis Confidence Interval:
    One-Sided (Lower) Confidence Interval untuk proporsi

  • Test yang digunakan:
    Z-Test untuk satu proporsi (One-sample proportion Z-test)

5.2 Data & Estimasi Awal

  • Jumlah pengguna:
    \[n = 250\]

  • Pengguna premium aktif:
    \[x = 185\]

  • Estimasi proporsi: \[\hat{p} = \frac{185}{250} = 0.74\]

  • Standard Error: \[SE = \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} = \sqrt{\frac{0.74(0.26)}{250}} \approx 0.0277\]

5.3 Interval Kepercayaan Bawah Satu Sisi

Rumus:
\[\text{Lower Bound} = \hat{p} - z_{\alpha} \times SE\]

library(knitr)
library(kableExtra)

ci_table <- data.frame(
  "Confidence Level" = c("90%", "95%", "99%"),
  "Z Value" = c(1.282, 1.645, 2.330),
  "Lower Confidence Bound" = c(0.704, 0.694, 0.675),
  check.names = FALSE
)


kable(
  ci_table,
  caption = "Confidence Interval Batas Bawah Satu Sisi untuk Penggunaan Fitur Premium",
  digits = 3,
  align = "c"
) %>%
  kable_styling(
    full_width = TRUE,     # tabel tidak menciut
    bootstrap_options = c("striped", "hover", "condensed")
  ) %>%
  row_spec(0, bold = TRUE, background = "#E6E0FF") %>%  # header ungu
  column_spec(1, background = "#F4F1FF")                # kolom CI level
Confidence Interval Batas Bawah Satu Sisi untuk Penggunaan Fitur Premium
Confidence Level Z Value Lower Confidence Bound
90% 1.282 0.704
95% 1.645 0.694
99% 2.330 0.675

5.4 Visualisasi Lower Bound (R)

library(plotly)

ci_plot <- data.frame(
  Confidence_Level = c("90%", "95%", "99%"),
  Lower_Bound = c(0.704, 0.694, 0.675),
  Explanation = c(
    "CI 90%: Dengan tingkat kepercayaan 90%, minimal 70,4% pengguna menggunakan fitur premium.",
    "CI 95%: Dengan tingkat kepercayaan yang lebih tinggi, batas bawah penggunaan turun menjadi 69,4%.",
    "CI 99%: Tingkat kepercayaan sangat tinggi menghasilkan batas bawah yang lebih konservatif yaitu 67,5%."
  )
)

plot_ly(
  data = ci_plot,
  x = ~Confidence_Level,
  y = ~Lower_Bound,
  type = "scatter",
  mode = "markers+lines",
  marker = list(
    size = 10,
    color = "#9B8CF7"
  ),
  line = list(
    width = 2,
    color = "#6F63D9"
  ),
  text = ~Explanation,
  hoverinfo = "text"
) %>%
  layout(
    title = "Interval Kepercayaan Batas Bawah Satu Sisi untuk Penggunaan Fitur Premium",
    xaxis = list(title = "Confidence Level"),
    yaxis = list(
      title = "Batas Bawah Confidence Interval",
      range = c(0.65, 0.75)
    ),
    plot_bgcolor = "#FAF9FF",
    paper_bgcolor = "#FAF9FF"
  )

5.5 Tabel Keputusan (TARGET 70%)

library(knitr)
library(kableExtra)

decision_table <- data.frame(
  "Confidence Level" = c("90%", "95%", "99%"),
  "Lower Bound" = c(0.704, 0.694, 0.675),
  "Target 70%" = c(0.70, 0.70, 0.70),
  "Terpenuhi Secara Statistik" = c("Iya", "Tidak", "Tidak"),
  check.names = FALSE
)


kable(
  decision_table,
  caption = "Keputusan terhadap Target 70% Berdasarkan Confidence Interval Satu Sisi",
  digits = 3,
  align = "c"
) %>%
  kable_styling(
    full_width = TRUE,
    bootstrap_options = c("striped", "hover", "condensed")
  ) %>%
  row_spec(0, bold = TRUE, background = "#E6E0FF") %>%   # header ungu
  column_spec(4, bold = TRUE)
Keputusan terhadap Target 70% Berdasarkan Confidence Interval Satu Sisi
Confidence Level Lower Bound Target 70% Terpenuhi Secara Statistik
90% 0.704 0.7 Iya
95% 0.694 0.7 Tidak
99% 0.675 0.7 Tidak

5.6 Kesimpulan

Pada tingkat kepercayaan 90%, batas bawah interval kepercayaan satu sisi berada di atas target 70%, sehingga target manajemen dapat dikatakan tercapai. Namun, pada tingkat kepercayaan 95% dan 99%, batas bawah berada di bawah 70%, sehingga secara statistik target tidak dapat dijamin pada tingkat kepercayaan yang lebih tinggi.

6 Referensi

  • Walpole, R. E., Myers, R. H., Myers, S. L., & Ye, K. (2012).
  • Devore, J. L. (2016).
  • Agresti, A., & Franklin, C. (2014).
  • Montgomery, D. C., & Runger, G. C. (2018).