Confidence Interval Analysis

Assignment ~ Week 13

Boma Satrio

Boma Satrio
Wicaksono D.

Junior Data Scientist
Institut Teknologi Sains Bandung (ITSB)
NIM: 52250061
CREATIVITY
DATA SCIENCE
INSPIRATIONAL

PENDAHULUAN

Dalam dunia Data Science dan Business Analytics, mengambil keputusan hanya berdasarkan angka rata-rata tunggal (point estimate) seringkali menyesatkan karena adanya faktor ketidakteraturan data atau sampling error. Oleh karena itu, penggunaan Confidence Interval (CI) menjadi sangat krusial.

Laporan ini membahas lima studi kasus yang mensimulasikan berbagai skenario nyata di industri teknologi dan bisnis:

  1. Case Study 1 (Z-Test): Mengukur akurasi waktu pengiriman logistik menggunakan standar deviasi populasi yang diketahui.
  2. Case Study 2 (t-Test): Melakukan estimasi waktu penyelesaian tugas pada desain aplikasi (UX) dengan sampel kecil.
  3. Case Study 3 (Proportion): Mengevaluasi efektivitas tombol Call-to-Action (CTA) melalui A/B Testing.
  4. Case Study 4 (Precision Comparison): Membandingkan perbedaan presisi antara penggunaan distribusi Z dan distribusi t pada data latensi API.
  5. Case Study 5 (One-Sided CI): Memastikan apakah target minimal penggunaan fitur premium perusahaan telah terpenuhi secara statistik.

Melalui kelima skenario ini, kita akan melihat bagaimana ukuran sampel, tingkat kepercayaan, dan jenis distribusi memengaruhi ketajaman keputusan bisnis yang diambil.

Case Study 1

Confidence Interval for Mean, σ Known: An e-commerce platform wants to estimate the average number of daily transactions per user after launching a new feature. Based on large-scale historical data, the population standard deviation is known.

\[ \sigma = 3.2 \quad (population\ standard\ deviation) \\ n = 100 \quad (sample\ size) \\ \bar{x} = 12.6 \quad (sample\ mean) \]

Tasks

  1. Identify the appropriate statistical test and justify your choice.
  2. Compute the Confidence Intervals for:
  • 90%
  • 95%
  • 99%
  1. Create a comparison visualization of the three confidence intervals.
  2. Interpret the results in a business analytics context.

1. Identify the appropriate statistical test and justify your choice.

Karena standar deviasi populasi (σ) diketahui dan ukuran sampel besar (n=100), maka metode yang tepat adalah Confidence Interval dengan distribusi Normal (Z-Interval).

2. Compute the Confidence Intervals for: 90%; 95%; 99%

Langkah 1: Hitung Standard Error (SE)

Rumus Standard Error (σ diketahui)

\[SE = \frac{\sigma}{\sqrt{n}}\] dimana :
- σ = 3.2
- n = 100 \[ SE = \frac{\sigma}{\sqrt{n}} \] \[ SE = \frac{3.2}{\sqrt{100}} \] \[ SE = \frac{3.2}{10} \] \[ SE = 0.32 \]

Dan di dapat Standard Error = 0.32

Langkah 2: Menentukan Zα/2

Zα/2 adalah nilai Z pada distribusi normal standar yang digunakan sebagai batas confidence interval.

  • α = tingkat kesalahan
  • α = 1 − confidence level
  • Dibagi 2 karena interval dua sisi (kiri & kanan)

Penentuan Nilai α dan Zα/2

\[ \alpha = 1 - \text{Confidence Level} \]

\[ Z_{\alpha/2} = Z\left(1 - \frac{\alpha}{2}\right) \] Hasil dari penentuan nilai Zα/2 yang di cocokan dengan Tabel Z (Distribusi Normal Standar) adalah jawaban dari Confidence Level.

  • 90% Confidence Interval

\[ \alpha = 1 - 0.90 = 0.10 \] \[ \frac{\alpha}{2} = \frac{0.10}{2} = 0.05 \] \[ Z_{\alpha/2} = Z(0.95) = 1.645 \]

  • 95% Confidence Interval

\[ \alpha = 1 - 0.95 = 0.05 \] \[ \frac{\alpha}{2} = \frac{0.05}{2} = 0.025 \] \[ Z_{\alpha/2} = Z(0.975) = 1.96 \]

  • 99% Confidence Interval

\[ \alpha = 1 - 0.99 = 0.01 \] \[ \frac{\alpha}{2} = \frac{0.01}{2} = 0.005 \] \[ Z_{\alpha/2} = Z(0.995) = 2.576 \]

Langkah 3: Perhitungan Confidence Intervals

\[ CI = \bar{x} \pm Z_{\alpha/2} \times SE \] diketahui: \[ \bar{x} = 12.6 \] \[ \sigma = 3.2 \] \[ n = 100 \] \[ SE = 0.32 \]

  • 90% Confidence Interval

\[ CI_{90\%} = 12.6 \pm (1.645 \times 0.32) \] \[ CI_{90\%} = (12.07,\ 13.13) \]

  • 95% Confidence Interval

\[ CI_{95\%} = 12.6 \pm (1.96 \times 0.32) \] \[ CI_{95\%} = (11.97,\ 13.23) \]

  • 99% Confidence Interval

\[ CI_{99\%} = 12.6 \pm (2.576 \times 0.32) \] \[ CI_{99\%} = (11.78,\ 13.42) \]

3. Create a comparison visualization of the three confidence intervals.

* 90%

# Load library
library(ggplot2)

# Parameter data
mu <- 12.6
se <- 3.2 / sqrt(100) # Standard Error = 0.32
z_90 <- 1.645
lower_90 <- mu - (z_90 * se)
upper_90 <- mu + (z_90 * se)

# Membuat urutan data untuk kurva normal
x <- seq(mu - 4*se, mu + 4*se, length.out = 1000)
y <- dnorm(x, mean = mu, sd = se)
df <- data.frame(x, y)

# Plot Kurva
ggplot(df, aes(x, y)) +
  geom_line(size = 1) +
  # Mengarsir area 90% Confidence Interval
  geom_area(data = subset(df, x >= lower_90 & x <= upper_90), 
            aes(y = y), fill = "skyblue", alpha = 0.5) +
  # Menambahkan garis batas
  geom_vline(xintercept = c(lower_90, upper_90), linetype = "dashed", color = "blue") +
  geom_vline(xintercept = mu, color = "red") +
  # Labeling
  annotate("text", x = mu, y = 0.2, label = "Mean = 12.6", color = "red") +
  annotate("text", x = lower_90, y = -0.05, label = "12.07") +
  annotate("text", x = upper_90, y = -0.05, label = "13.13") +
  labs(title = "Visualisasi Kurva Normal: 90% Confidence Interval",
       subtitle = "",
       x = "Rata-rata Transaksi", y = "Density") +
  theme_minimal()

- penjelasan:
* Garis Tengah (Merah): Mewakili \(\bar{x} = 12.6\). Ini adalah titik estimasi terbaik kita saat ini.
* Area Biru (90%): Ini adalah zona di mana kita meyakini rata-rata populasi yang sebenarnya berada. Luas area ini adalah 0.90 dari total luas di bawah kurva.
* Titik Potong (12.07 dan 13.13): Ini adalah batas bawah dan batas atas yang Anda hitung menggunakan rumus \(12.6 \pm (1.645 \times 0.32)\).
* Ekor Putih (Di luar 12.07 & 13.13): Ini mewakili risiko kesalahan sebesar 10% (\(\alpha = 0.10\)), yang terbagi menjadi 5% di sisi kiri dan 5% di sisi kanan.

* 95%

# Load library
library(ggplot2)

# 1. Parameter Data
mu <- 12.6
se <- 0.32        # Standard Error (3.2 / sqrt(100))
z_95 <- 1.96      # Nilai Z untuk 95%
lower_95 <- 11.97
upper_95 <- 13.23

# 2. Membuat Data Kurva
x <- seq(mu - 4*se, mu + 4*se, length.out = 1000)
y <- dnorm(x, mean = mu, sd = se)
df <- data.frame(x, y)

# 3. Plotting
ggplot(df, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 95% (Confidence Level)
  geom_area(data = subset(df, x >= lower_95 & x <= upper_95), 
            aes(y = y), fill = "#27ae60", alpha = 0.4) + # Warna Hijau untuk 95%
  # Garis batas Interval
  geom_vline(xintercept = c(lower_95, upper_95), linetype = "dashed", color = "#27ae60", size = 1) +
  geom_vline(xintercept = mu, color = "red", size = 0.8) +
  # Label angka
  annotate("text", x = mu, y = 0.1, label = "Mean = 12.6", color = "red", fontface = "bold") +
  annotate("label", x = lower_95, y = 0, label = "11.97") +
  annotate("label", x = upper_95, y = 0, label = "13.23") +
  labs(title = "Distribusi Normal: 95% Confidence Interval",
       subtitle = "",
       x = "Rata-rata Transaksi Harian", y = "Density") +
  theme_minimal()

- penjelasan:
* Area Hijau (95%): Area ini mencakup hampir seluruh bagian bawah kurva. Dalam statistik industri, ini adalah standar emas untuk mengambil keputusan.
* Margin of Error: Jarak dari tengah (12.6) ke batas (13.23) adalah \(1.96 \times 0.32 \approx 0.63\). Ini berarti tingkat ketidakpastian kita hanya sekitar 0.63 transaksi.
* Alpha (\(\alpha = 0.05\)): Area putih di ujung kiri dan kanan hanya tersisa 2.5% di masing-masing sisi. Ini adalah risiko bahwa rata-rata transaksi sebenarnya berada di luar prediksi kita

* 99%

# Load library
library(ggplot2)

# 1. Parameter Data
mu <- 12.6
se <- 0.32
z_99 <- 2.576     # Nilai Z untuk 99%
lower_99 <- 11.78
upper_99 <- 13.42

# 2. Membuat Data Kurva
x <- seq(mu - 4*se, mu + 4*se, length.out = 1000)
y <- dnorm(x, mean = mu, sd = se)
df <- data.frame(x, y)

# 3. Plotting
ggplot(df, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 99% (Hampir seluruh kurva)
  geom_area(data = subset(df, x >= lower_99 & x <= upper_99), 
            aes(y = y), fill = "#8e44ad", alpha = 0.4) + # Warna Ungu untuk 99%
  # Garis batas Interval
  geom_vline(xintercept = c(lower_99, upper_99), linetype = "dashed", color = "#8e44ad", size = 1) +
  geom_vline(xintercept = mu, color = "red", size = 0.8) +
  # Label angka
  annotate("text", x = mu, y = 0.1, label = "Mean = 12.6", color = "red", fontface = "bold") +
  annotate("label", x = lower_99, y = 0, label = "11.78") +
  annotate("label", x = upper_99, y = 0, label = "13.42") +
  labs(title = "Distribusi Normal: 99% Confidence Interval",
       subtitle = "",
       x = "Rata-rata Transaksi Harian", y = "Density") +
  theme_minimal()

- penjelasan:
* Pusat Kurva (12.6): Nilai rata-rata sampel yang menjadi titik acuan tengah.
* Rentang Bawah & Atas (11.78 – 13.42): Batas wilayah keyakinan kita. Angka ini didapat dari hasil kali nilai Z (2.576) dengan Standard Error (0.32).
* Area Arsir (99%): Melambangkan Tingkat Kepercayaan. Semakin tinggi persentasenya, semakin luas area yang diarsir, yang berarti semakin kecil risiko kesalahan kita.
* Area Putih/Ekor (1%): Melambangkan Tingkat Signifikansi (\(\alpha\)). Ini adalah sisa risiko 1% bahwa rata-rata yang sebenarnya berada di luar tebakan kita (terbagi 0.5% di kiri dan 0.5% di kanan).
* Bentuk Kurva: Melebar ke samping. Dibandingkan 90% atau 95%, kurva 99% memberikan “ruang aman” paling luas namun dengan rentang angka yang paling lebar (kurang presisi).

Ringkasan Perbandingan Confidence Interval

# 1. Load Library
library(knitr)
library(dplyr)

# 2. Persiapan Data
mean_sample <- 12.6
se <- 0.32

# 3. Membuat Tabel Berdasarkan Hasil Perhitungan
tabel_ci <- data.frame(
  "Confidence Level" = c("90%", "95%", "99%"),
  "Nilai Z" = c(1.645, 1.960, 2.576),
  "Rentang (Interval)" = c("12.07 – 13.13", "11.97 – 13.23", "11.78 – 13.42"),
  "Lebar Interval" = c("Sempit", "Sedang", "Lebar"),
  "Keterangan" = c(
    "Paling presisi, tapi risiko salah 10%",
    "Standar industri / paling ideal",
    "Sangat pasti, tapi kurang presisi"
  )
)

# 4. Menampilkan Tabel dengan kable
kable(tabel_ci, 
      caption = "Tabel Ringkasan Perbandingan Confidence Interval",
      align = "cllll")
Tabel Ringkasan Perbandingan Confidence Interval
Confidence.Level Nilai.Z Rentang..Interval. Lebar.Interval Keterangan
90% 1.645 12.07 – 13.13 Sempit Paling presisi, tapi risiko salah 10%
95% 1.960 11.97 – 13.23 Sedang Standar industri / paling ideal
99% 2.576 11.78 – 13.42 Lebar Sangat pasti, tapi kurang presisi

4. Interpret the results in a business analytics context.

Makna Hasilnya:

  • 90% CI → estimasi paling sempit, tapi tingkat keyakinan lebih rendah
  • 95% CI → paling umum dipakai di bisnis & data analytics
  • 99% CI → sangat yakin, tapi interval terlalu lebar (kurang presisi)

Perhatikan bahwa saat kita menaikkan tingkat kepercayaan dari 90% ke 99%, rentang intervalnya menjadi lebih lebar. Artinya, untuk menjadi lebih “yakin”, kita harus memberikan estimasi rentang yang lebih luas (kurang presisi).

Dengan tingkat keyakinan 95%, rata-rata jumlah transaksi harian per user setelah fitur baru diluncurkan berada antara 11.97 hingga 13.23 transaksi. sehingga Fitur baru berpotensi meningkatkan aktivitas user, Rentang nilai masih stabil → performa cukup konsisten, Bisa dijadikan baseline KPI untuk evaluasi fitur berikutnya. Dan Jika perusahaan memiliki target rata-rata 12 transaksi per hari, hasil ini menunjukkan kabar baik karena batas bawah pada tingkat kepercayaan 95% berada sangat dekat dengan 12, dan rata-rata sampel berada di atasnya (12.6).

Case Study 2

Confidence Interval for Mean, σ Unknown: A UX Research team analyzes task completion time (in minutes) for a new mobile application. The data are collected from 12 users:

8.4,7.9,9.1,8.7,8.2,9.0,7.8,8.5,8.9,8.1,8.6,8.3

Tasks:

  1. Identify the appropriate statistical test and explain why.
  2. Compute the Confidence Intervals for:
  • 90%
  • 95%
  • 99%
  1. Visualize the three intervals on a single plot.
  2. Explain how sample size and confidence level influence the interval width.

1. Identify the appropriate statistical test and explain why.

Uji statistik yang digunakan adalah One-Sample T-Interval (Distribusi-t). Karena \(\sigma\) Tidak Diketahui Kita hanya memiliki data sampel, sehingga harus menggunakan standar deviasi sampel (\(s\)). Dan Ukuran sampel hanya 12 pengguna (\(n = 12\)), yang mana kurang dari 30. Dalam kondisi ini, distribusi-t lebih akurat daripada distribusi-Z.

2. Compute the Confidence Intervals for: 90%; 95%; 99%

Rumus Confidence Interval untuk rata-rata dengan distribusi t (t-interval).

\[ CI = \bar{x} \pm t_{\alpha/2,\; n-1} \times \frac{s}{\sqrt{n}} \]

Keterangan:

  • \(\bar{x}\) = rata-rata sampel
  • \(t_{\alpha/2,\; n-1}\) = nilai t dari distribusi t-Student
  • \(s\) = simpangan baku sampel
  • \(n\) = ukuran sampel

Langkah 1: Menentukan Data dan Ukuran Sampel

Data waktu penyelesaian tugas (menit):

\[8.4,7.9,9.1,8.7,8.2,9.0,7.8,8.5,8.9,8.1,8.6,8.3\]

Ukuran sampel: \[𝑛=12\]

Langkah 2: Menghitung Rata-rata Sampel (\(\bar{x}\))

  • Rumus rata-rata sampel: \[ \bar{x} = \frac{\sum x_i}{n} \] Keterangan:

  • \(\bar{x}\) adalah rata-rata sampel

  • \(\sum x_i\) adalah jumlah seluruh nilai data dalam sampel

  • \(n\) adalah jumlah data (ukuran sampel)


  • Substitusi Data \[ \bar{x} = \frac{8.4 + 7.9 + 9.1 + 8.7 + 8.2 + 9.0 + 7.8 + 8.5 + 8.9 + 8.1 + 8.6 + 8.3}{12} \]

  • Hasil perhitungan rata-rata sampel adalah \[8.46.\]

Langkah 3: Menghitung Simpangan Baku Sampel (𝑠)

  • Rumus Simpangan Baku Sampel \[ s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}} \]

Keterangan:

  • \(s\) adalah simpangan baku sampel
  • \(x_i\) adalah nilai data ke-\(i\)
  • \(\bar{x}\) adalah rata-rata sampel
  • \(n\) adalah jumlah data (ukuran sampel
    Catatan: Pembagian dengan \(n - 1\) digunakan karena simpangan baku dihitung dari data sampel, bukan populasi.


  • Substitusi ke Dalam Rumus \[ s = \sqrt{\frac{(8.4 - 8.46)^2 + (7.9 - 8.46)^2 + \,... + (8.6 - 8.46)^2 + (8.3 - 8.46)^2}{12 - 1}} \] \[ s = \sqrt{\frac{(-0.06)^2 + (-0.56)^2 + (0.64)^2 + \,... + (-0.36)^2 + (0.14)^2 + (-0.16)^2}{11}} \] \[ s = \sqrt{\frac{0.0036 + 0.3136 + 0.4096 + \,... + 0.1296 + 0.0196 + 0.0256}{11}} \] \[ s = \sqrt{\frac{1.9496}{11}} \] \[ s = \sqrt{0.1772} \] \[ s \approx 0.41 \]

Langkah 4: Menghitung Standard Error (SE)

  • Rumus Standard Error \[ SE = \frac{s}{\sqrt{n}} \]
  • Substitusi Nilai \[ SE = \frac{0.41}{\sqrt{12}} \] \[ SE = \frac{0.41}{3.464} \] \[ SE \approx 0.12 \]

Langkah 5: Menentukan Nilai tα/2

  • Menentukan Derajat Bebas (Degrees of Freedom) \[ df = n - 1 \] \[ df = 12 - 1 = 11 \]

  • Rumus Nilai Kritis tα/2 \[ t_{\alpha/2} = t\left(1 - \frac{\alpha}{2},\; df\right) \]

Confidence Level 90% \[ \alpha = 1 - 0.90 = 0.10 \] \[ \frac{\alpha}{2} = 0.05 \] \[ t_{0.05,\;11} = 1.796 \]

Confidence Level 95% \[ \alpha = 1 - 0.95 = 0.05 \] \[ \frac{\alpha}{2} = 0.05 \] \[ t_{0.05,\;11} = 1.796 \]

Confidence Level 99% \[ \alpha = 1 - 0.99 = 0.01 \] \[ \frac{\alpha}{2} = 0.005 \] \[ t_{0.005,\;11} = 3.106 \]

Langkah 6: Menghitung Confidence Interval

  • Rumus Confidence Interval \[ CI = \bar{x} \pm t_{\alpha/2} \times SE \] Keterangan:

  • \(\bar{x}\) adalah rata-rata sampel

  • \(t_{\alpha/2}\) adalah nilai kritis dari distribusi t-Student

  • \(SE\) adalah Standard Error


Confidence Interval 90% \[ CI_{90\%} = 8.46 \pm (1.796 \times 0.12) \] \[ CI_{90\%} = 8.46 \pm 0.22 \] \[CI_{90\%} = (8.24,\ 8.68)\]

Confidence Interval 95% \[ CI_{95\%} = 8.46 \pm (2.201 \times 0.12) \] \[ CI_{95\%} = 8.46 \pm 0.26 \] \[CI_{95\%} = (8.20,\ 8.72)\]

Confidence Interval 99% \[ CI_{99\%} = 8.46 \pm (3.106 \times 0.12) \] \[ CI_{99\%} = 8.46 \pm 0.37 \] \[CI_{99\%} = (8.09,\ 8.83)\]

3. Visualize the three intervals on a single plot.

90%

library(ggplot2)

# Data
mean_x <- 8.458
se <- 0.123 # Standard Error hasil perhitungan
df <- 11
lower_90 <- 8.24
upper_90 <- 8.68

# Membuat data kurva
x <- seq(mean_x - 4*se, mean_x + 4*se, length.out = 1000)
y <- dt((x - mean_x)/se, df) / se
df_plot <- data.frame(x, y)

# Plot
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1) +
  geom_area(data = subset(df_plot, x >= lower_90 & x <= upper_90), 
            fill = "steelblue", alpha = 0.5) +
  geom_vline(xintercept = c(lower_90, upper_90), linetype = "dashed") +
  geom_vline(xintercept = mean_x, color = "red") +
  annotate("label", x = c(lower_90, upper_90), y = 0, label = c("8.24", "8.68")) +
  labs(title = "90% Confidence Interval (t-Distribution)",
       subtitle = "",
       x = "Menit", y = "Density") +
  theme_minimal()

- Penjelasan:
* Titik Tengah (\(\bar{x} = 8.46\)): Rata-rata waktu penyelesaian tugas dari 12 user. Ini adalah titik pusat kurva.
* Area Arsir Biru (90%): Wilayah keyakinan kita. Kita yakin 90% bahwa rata-rata waktu penyelesaian tugas di seluruh populasi pengguna berada di area ini.
* Batas Bawah (8.24) & Batas Atas (8.68): “Pagar” hasil perhitungan. Jika rata-rata asli populasi ada di rentang ini, maka riset kita akurat.
* Area Putih/Ekor (10%): Total risiko kesalahan (\(\alpha\)). Terbagi menjadi 5% di ujung kiri dan 5% di ujung kanan.
* Karakteristik Kurva-t: Bentuknya mirip lonceng, tetapi sedikit lebih landai karena kita memiliki tingkat ketidakpastian yang lebih tinggi akibat jumlah sampel yang hanya 12 orang.

95%

library(ggplot2)

# Parameter Data Case Study 2
mean_x <- 8.458
se <- 0.123 
df <- 11
lower_95 <- 8.20
upper_95 <- 8.72

# Membuat data kurva distribusi-t
x <- seq(mean_x - 4*se, mean_x + 4*se, length.out = 1000)
y <- dt((x - mean_x)/se, df) / se
df_plot <- data.frame(x, y)

# Plotting
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 95%
  geom_area(data = subset(df_plot, x >= lower_95 & x <= upper_95), 
            fill = "#e67e22", alpha = 0.5) +
  # Garis Batas
  geom_vline(xintercept = c(lower_95, upper_95), linetype = "dashed", color = "#d35400") +
  geom_vline(xintercept = mean_x, color = "red") +
  # Label angka di sumbu X
  annotate("label", x = c(lower_95, upper_95), y = 0, label = c("8.20", "8.72")) +
  labs(title = "95% Confidence Interval (t-Distribution)",
       subtitle = "",
       x = "Menit", y = "Density") +
  theme_minimal()

- Penjelasan:
* Pusat Kurva (8.46): Titik tengah atau rata-rata waktu yang paling mungkin berdasarkan sampel kita.
* Area Arsir Oranye (95%): Wilayah keyakinan standar. Kita yakin 95% bahwa rata-rata waktu penyelesaian tugas yang sebenarnya ada di rentang ini.
* Batas Bawah (8.20) & Batas Atas (8.72): Rentang interval kita. Perhatikan bahwa rentang ini lebih lebar daripada yang 90% karena kita menaikkan tingkat kepastian.
* Area Putih/Ekor (5%): Risiko kesalahan (\(\alpha\)). Sekarang risikonya lebih kecil, hanya 2.5% di sisi kiri dan 2.5% di sisi kanan.

99%

library(ggplot2)

# Parameter Data Case Study 2
mean_x <- 8.458
se <- 0.1215 
df <- 11
lower_99 <- 8.09
upper_99 <- 8.83

# Membuat data kurva distribusi-t
x <- seq(mean_x - 4*se, mean_x + 4*se, length.out = 1000)
y <- dt((x - mean_x)/se, df) / se
df_plot <- data.frame(x, y)

# Plotting
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 99%
  geom_area(data = subset(df_plot, x >= lower_99 & x <= upper_99), 
            fill = "#8e44ad", alpha = 0.5) +
  # Garis Batas
  geom_vline(xintercept = c(lower_99, upper_99), linetype = "dashed", color = "#7d3c98") +
  geom_vline(xintercept = mean_x, color = "red") +
  # Label angka
  annotate("label", x = c(lower_99, upper_99), y = 0, label = c("8.09", "8.83")) +
  labs(title = "99% Confidence Interval (t-Distribution)",
       subtitle = "",
       x = "Menit", y = "Density") +
  theme_minimal()

- penjelasan:
* Pusat Kurva (8.46): Titik estimasi rata-rata dari sampel 12 pengguna.
* Area Arsir Ungu (99%): Wilayah keyakinan maksimal. Kita yakin 99% bahwa rata-rata populasi pengguna sebenarnya berada di rentang ini.
* Batas Bawah (8.09) & Batas Atas (8.83): Rentang ini adalah yang paling lebar dibandingkan 90% dan 95%. Hal ini terjadi karena untuk mencapai keyakinan 99%, kita harus memperluas “jaring” estimasi kita.
* Area Putih/Ekor (1%): Risiko kesalahan (\(\alpha\)) yang sangat kecil, hanya 0.5% di masing-masing ujung kurva.

Ringkasan Perbandingan Confidence Interval (Case Study 2)

# 1. Load Library
library(knitr)
library(dplyr)

# 2. Persiapan Data (Berdasarkan hasil Case Study 2)
# Mean = 8.46, n = 12, df = 11
mean_ux <- 8.46

# 3. Membuat Tabel Berdasarkan Hasil Perhitungan t-Distribution
tabel_ci_case2 <- data.frame(
  "Confidence Level" = c("90%", "95%", "99%"),
  "Nilai t (df=11)" = c(1.796, 2.201, 3.106),
  "Rentang (Interval)" = c("8.24 – 8.68", "8.20 – 8.72", "8.09 – 8.83"),
  "Lebar Interval" = c("Sempit", "Sedang", "Lebar"),
  "Keterangan" = c(
    "Estimasi paling ketat (presisi tinggi)",
    "Standar penelitian UX / Akurasi optimal",
    "Estimasi paling aman (risiko error 1%)"
  )
)

# 4. Menampilkan Tabel dengan kable
kable(tabel_ci_case2, 
      caption = "Tabel Ringkasan Confidence Interval - Case Study 2 (UX Research)",
      align = "cllll")
Tabel Ringkasan Confidence Interval - Case Study 2 (UX Research)
Confidence.Level Nilai.t..df.11. Rentang..Interval. Lebar.Interval Keterangan
90% 1.796 8.24 – 8.68 Sempit Estimasi paling ketat (presisi tinggi)
95% 2.201 8.20 – 8.72 Sedang Standar penelitian UX / Akurasi optimal
99% 3.106 8.09 – 8.83 Lebar Estimasi paling aman (risiko error 1%)

4. Explain how sample size and confidence level influence the interval width.

    1. Pengaruh Tingkat Kepercayaan (Confidence Level)

Tingkat kepercayaan memiliki hubungan searah (proposional) dengan lebar interval.
* Semakin Tinggi % Kepercayaan \(\rightarrow\) Interval Semakin Lebar.
* Logika: Bayangkan Anda sedang mencoba menangkap ikan dengan jaring. Jika Anda ingin 99% yakin ikan tersebut tertangkap, Anda akan menggunakan jaring yang sangat besar. Sebaliknya, jika Anda hanya butuh 90% yakin, jaring yang lebih kecil sudah cukup.
* Secara Matematis: Semakin tinggi tingkat kepercayaan, nilai kritis (\(z^*\) atau \(t^*\)) akan semakin besar. Karena nilai ini adalah pengali dalam rumus, maka Margin of Error akan otomatis membesar.

    1. Pengaruh Ukuran Sampel (\(n\))

Ukuran sampel memiliki hubungan terbalik (invers) dengan lebar interval.
* Semakin Besar Sampel (\(n\)) \(\rightarrow\) Interval Semakin Sempit (Presisi).
* Logika: Semakin banyak orang yang Anda tanya (misal 1000 orang vs 10 orang), semakin banyak informasi yang Anda miliki. Informasi yang lebih banyak mengurangi ketidakpastian, sehingga estimasi Anda menjadi lebih tajam dan sempit.
* Secara Matematis: Dalam rumus Standard Error (1\(\frac{\sigma}{\sqrt{n}}\)), variabel 2\(n\) berada di posisi penyebut (bawah). \[\text{Margin of Error} = z^* \times \frac{\sigma}{\sqrt{n}}\] Artinya, jika pembagi (\(n\)) semakin besar, maka hasil pembagiannya (Error) akan semakin kecil.

Case Study 3

Confidence Interval for a Proportion, A/B Testing: A data science team runs an A/B test on a new Call-To-Action (CTA) button design. The experiment yields:

\[ n = 400 \quad \text{(total users)} \] \[ x = 156 \quad \text{(users who clicked the CTA)} \]

Tasks:

  1. Compute the sample proportion \(\hat{p}\)
  2. Compute Confidence Intervals for the proportion at:
  • 90%
  • 95%
  • 99%
  1. Visualize and compare the three intervals.
  2. Explain how confidence level affects decision-making in product experiments.

1. Compute the sample proportion \(\hat{p}\)

Uji yang digunakan adalah Z-test for Proportions. Karena kita mengukur proporsi (persentase orang yang klik), bukan nilai rata-rata (seperti waktu atau jumlah transaksi).Dan ukuran sampel kita besar (\(n=400\)), sehingga kita bisa menggunakan pendekatan Distribusi Normal (Z).

Menghitung Sample Proportion (\(\hat{p}\))

  • Rumus Sample Proportion \[ \hat{p} = \frac{x}{n} \] \[ \hat{p} = \frac{156}{400} \] \[ \hat{p} = 0.39 \] Sekitar 39% pengguna mengklik CTA pada desain yang diuji.

2. Compute Confidence Intervals for the proportion at: 90%; 95%; 99%

Rumus Confidence Interval Proporsi \[ CI = \hat{p} \pm Z_{\alpha/2} \times \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \]

Langkah 1: Menentukan Proporsi Sampel (\(\hat{p}\))

\[ \hat{p} = \frac{x}{n} \] \[ \hat{p} = \frac{156}{400} \] \[ \hat{p} = 0.39 \]

Langkah 2: Menentukan Confidence Level dan Nilai Zα/2

\[ \alpha = 1 - \text{Confidence Level} \]

library(knitr)

z_table <- data.frame(
  `Confidence Level` = c("90%", "95%", "99%"),
  `α` = c(0.10, 0.05, 0.01),
  `Z_{α/2}` = c(1.645, 1.96, 2.576)
)

kable(
  z_table,
  align = "c",
  caption = "Nilai Z_(α/2) dari Distribusi Normal Standar"
)
Nilai Z_(α/2) dari Distribusi Normal Standar
Confidence.Level α Z_.α.2.
90% 0.10 1.645
95% 0.05 1.960
99% 0.01 2.576

Langkah 3: Menghitung Standard Error (SE)

\[ SE = \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \] \[ SE = \sqrt{\frac{0.39(1-0.39)}{400}} \] \[ SE \approx 0.0244 \]

Langkah 4: Menghitung Confidence Interval

\[ CI = \hat{p} \pm Z_{\alpha/2} \times SE \]

Confidence Interval 90% \[ CI_{90\%} = 0.39 \pm (1.645 \times 0.0244) \] \[ CI_{90\%} = (0.35,\; 0.43) \]

Confidence Interval 95% \[ CI_{95\%} = 0.39 \pm (1.96 \times 0.0244) \] \[ CI_{95\%} = (0.34,\; 0.44) \]

Confidence Interval 99% \[ CI_{99\%} = 0.39 \pm (2.576 \times 0.0244) \] \[ CI_{99\%} = (0.33,\; 0.45) \]

3. Visualize and compare the three intervals.

Confidence Interval 90%

library(ggplot2)

# Parameter Data
p_hat <- 0.39
se <- 0.0244  # Standard Error hasil perhitungan sebelumnya
lower_90 <- 0.35
upper_90 <- 0.43

# Membuat data kurva normal (Proporsi dianggap berdistribusi normal untuk n besar)
x <- seq(p_hat - 4*se, p_hat + 4*se, length.out = 1000)
y <- dnorm(x, mean = p_hat, sd = se)
df_plot <- data.frame(x, y)

# Plotting
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1) +
  geom_area(data = subset(df_plot, x >= lower_90 & x <= upper_90), 
            fill = "steelblue", alpha = 0.5) +
  geom_vline(xintercept = c(lower_90, upper_90), linetype = "dashed", color = "darkblue") +
  geom_vline(xintercept = p_hat, color = "red") +
  annotate("label", x = c(lower_90, upper_90), y = 0, label = c("0.35 (35%)", "0.43 (43%)")) +
  annotate("text", x = p_hat, y = max(y)+0.5, label = "p_hat = 39%", color = "red") +
  labs(title = "90% Confidence Interval (Proporsi CTA)",
       subtitle = "",
       x = "Proporsi Klik (p)", y = "Density") +
  theme_minimal()

- penjelasan:
* Pusat Kurva (\(\hat{p} = 0.39\)):Ini adalah nilai 39% yang kita dapatkan dari hasil uji coba 400 pengguna. Ini adalah “tebakan terbaik” kita saat ini.
* Area Arsir Biru (90%):Area ini menunjukkan bahwa kita yakin 90% bahwa rata-rata klik yang sebenarnya (di masa depan, jika tombol ini diluncurkan ke semua pengguna) akan berada di rentang ini.
* Batas Bawah (0.35) & Batas Atas (0.43):Ini adalah “pagar” keyakinan kita. Kita memprediksi bahwa jumlah klik terburuk adalah 35% dan klik terbaik adalah 43%. Jika proporsi yang sebenarnya ada di luar dua angka ini, berarti uji coba kita kurang akurat.
* Area Putih/Ekor (10%):Ini adalah Risiko Kesalahan (\(\alpha = 0.10\)). Ada total 10% kemungkinan bahwa prediksi kita salah, yang terbagi menjadi 5% di ujung kiri (lebih rendah dari 35%) dan 5% di ujung kanan (lebih tinggi dari 43%).

Confidence Interval 95%

library(ggplot2)

# Parameter Data
p_hat <- 0.39
se <- 0.0244 
lower_95 <- 0.34
upper_95 <- 0.44

# Membuat data kurva
x <- seq(p_hat - 4*se, p_hat + 4*se, length.out = 1000)
y <- dnorm(x, mean = p_hat, sd = se)
df_plot <- data.frame(x, y)

# Plotting
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 95%
  geom_area(data = subset(df_plot, x >= lower_95 & x <= upper_95), 
            fill = "#27ae60", alpha = 0.5) + # Warna hijau untuk 95%
  # Garis Batas
  geom_vline(xintercept = c(lower_95, upper_95), linetype = "dashed", color = "#1e8449") +
  geom_vline(xintercept = p_hat, color = "red") +
  # Label angka
  annotate("label", x = c(lower_95, upper_95), y = 0, label = c("0.34 (34%)", "0.44 (44%)")) +
  annotate("text", x = p_hat, y = max(y)+0.5, label = "p_hat = 39%", color = "red") +
  labs(title = "95% Confidence Interval (A/B Test CTA)",
       subtitle = "",
       x = "Proporsi Klik (p)", y = "Density") +
  theme_minimal()

- penjelasan:
* Pusat Kurva (0.39): Persentase klik tombol CTA dari sampel kita (39%). Ini adalah titik tengah yang paling mungkin.
* Area Arsir Hijau (95%): Wilayah keyakinan standar. Kita yakin 95% bahwa jika tombol ini dirilis ke jutaan pengguna, persentase kliknya tidak akan lari dari rentang ini.
* Batas Bawah (0.34) & Batas Atas (0.44): Rentang interval kita (34% hingga 44%). Dibandingkan 90%, rentang ini lebih lebar karena kita ingin lebih pasti bahwa hasil aslinya tidak meleset.
* Area Putih/Ekor (5%): Risiko kesalahan (\(\alpha\)). Hanya ada 5% kemungkinan rata-rata klik asli berada di luar “pagar” ini (2.5% di kiri dan 2.5% di kanan).

Confidence Interval 99%

library(ggplot2)

# Parameter Data
p_hat <- 0.39
se <- 0.0244 
lower_99 <- 0.33
upper_99 <- 0.45

# Membuat data kurva
x <- seq(p_hat - 4*se, p_hat + 4*se, length.out = 1000)
y <- dnorm(x, mean = p_hat, sd = se)
df_plot <- data.frame(x, y)

# Plotting
ggplot(df_plot, aes(x, y)) +
  geom_line(size = 1.2) +
  # Mengarsir area 99%
  geom_area(data = subset(df_plot, x >= lower_99 & x <= upper_99), 
            fill = "#8e44ad", alpha = 0.5) + # Warna ungu untuk 99%
  # Garis Batas
  geom_vline(xintercept = c(lower_99, upper_99), linetype = "dashed", color = "#713d84") +
  geom_vline(xintercept = p_hat, color = "red") +
  # Label angka
  annotate("label", x = c(lower_99, upper_99), y = 0, label = c("0.33 (33%)", "0.45 (45%)")) +
  annotate("text", x = p_hat, y = max(y)+0.5, label = "p_hat = 39%", color = "red") +
  labs(title = "99% Confidence Interval (A/B Test CTA)",
       subtitle = "",
       x = "Proporsi Klik (p)", y = "Density") +
  theme_minimal()

- penjelasan:
* Pusat Kurva (0.39): Nilai proporsi klik dari sampel. Ini tetap menjadi titik pusat atau estimasi titik kita.
* Area Arsir Ungu (99%): Wilayah keyakinan maksimal. Area ini mencakup hampir seluruh bagian di bawah kurva, menunjukkan tingkat kepastian yang sangat tinggi.
* Batas Bawah (0.33) & Batas Atas (0.45): Rentang interval kita (33% hingga 45%). Perhatikan bahwa batas ini adalah yang paling jauh dari titik tengah dibandingkan 90% dan 95%.
* Area Putih/Ekor (1%): Risiko kesalahan (\(\alpha\)) yang sangat kecil. Hanya ada 1% kemungkinan bahwa performa asli tombol CTA tersebut berada di bawah 33% atau di atas 45%.

library(ggplot2)

# Data CI Case Study 3
ci_proporsi <- data.frame(
  Confidence_Level = factor(c("90%", "95%", "99%"),
                            levels = c("90%", "95%", "99%")),
  Lower = c(0.35, 0.34, 0.33),
  Upper = c(0.43, 0.44, 0.45),
  p_hat = 0.39
)

# Plot
ggplot(ci_proporsi, aes(x = Confidence_Level, y = p_hat,
                         ymin = Lower, ymax = Upper)) +
  geom_errorbar(width = 0.25, linewidth = 1.2, color = "steelblue") +
  geom_point(size = 3, color = "darkred") +
  scale_y_continuous(labels = scales::percent_format()) +
  labs(
    title = "Perbandingan Confidence Interval Proporsi (Case Study 3)",
    subtitle = "Confidence Level 90%, 95%, dan 99%",
    x = "Confidence Level",
    y = "Proporsi Klik CTA"
  ) +
  theme_minimal(base_size = 13)

- penjelasan:
* Titik Merah (Point Estimate):Titik merah di tengah setiap garis mewakili nilai \(\hat{p} = 39\%\). Ini adalah hasil nyata yang didapat dari sampel 400 pengguna. Titik ini tetap sama di semua level karena data sampelnya tidak berubah.
* Panjang Garis Biru (Margin of Error):Garis biru vertikal menunjukkan rentang “tebakan” kita. Perhatikan bahwa garis 99% adalah yang paling panjang. Ini menggambarkan hukum statistik bahwa untuk menjadi lebih yakin (99% yakin), kita harus memberikan rentang prediksi yang lebih luas dan “aman”.
* Presisi vs. Keyakinan:
* Level 90% memiliki garis paling pendek (35% - 43%). Ini adalah estimasi paling presisi, tetapi memiliki risiko salah (alpha) paling tinggi yaitu 10%.
* Level 99% memiliki garis paling panjang (33% - 45%). Ini adalah estimasi paling konservatif, memastikan risiko salah hanya 1% saja.
* Aplikasi Keputusan:Jika target manajemen adalah klik di atas 30%, maka ketiga level kepercayaan ini menunjukkan bahwa desain tombol CTA baru kita secara konsisten berada di atas target, karena batas bawah paling rendah (33%) tetap lebih besar dari 30%.

Ringkasan Perbandingan Confidence Interval (Case Study 3)

library(knitr)

summary_table <- data.frame(
  `Confidence Level` = c("90%", "95%", "99%"),
  `Nilai Z` = c(1.645, 1.960, 2.576),
  `Rentang (Persentase)` = c("35% – 43%", "34% – 44%", "33% – 45%"),
  Keterangan = c(
    "Paling spesifik / presisi",
    "Standar industri paling umum",
    "Paling aman dari risiko salah"
  )
)

kable(
  summary_table,
  align = "c",
  caption = "Tabel Ringkasan"
)
Tabel Ringkasan
Confidence.Level Nilai.Z Rentang..Persentase. Keterangan
90% 1.645 35% – 43% Paling spesifik / presisi
95% 1.960 34% – 44% Standar industri paling umum
99% 2.576 33% – 45% Paling aman dari risiko salah

4. Explain how confidence level affects decision-making in product experiments.

  1. Kecepatan vs. Kepastian:
    Menggunakan 90% membuat tim produk bisa mengambil keputusan lebih cepat karena rentang angka yang dibutuhkan lebih sempit (kurang butuh banyak data). Tapi risikonya lebih besar (10% kemungkinan salah).

  2. Manajemen Risiko:
    Jika perubahan desain tombol CTA ini sangat krusial (misal: tombol “Bayar Sekarang”), tim biasanya memakai 99%. Mereka tidak mau ambil risiko salah tebak, walaupun rentang prediksinya jadi sangat lebar.

  3. Presisi Keputusan:
    Semakin tinggi Confidence Level, semakin lebar rentangnya. Jika rentangnya terlalu lebar (misal 32% - 45%), manajer produk mungkin akan bingung: “Ini sebenarnya performanya bagus atau biasa saja?”. Itulah sebabnya 95% sering dipilih sebagai titik tengah yang paling ideal antara kecepatan dan kepastian.

Berdasarkan A/B Test pada 400 pengguna, desain CTA baru memiliki tingkat konversi 39%. Dengan tingkat kepercayaan 95%, kita bisa menjamin bahwa di masa depan, tombol ini akan memberikan konversi antara 34.2% hingga 43.8%

Case Study 4

Precision Comparison (Z-Test vs t-Test): Two data teams measure API latency (in milliseconds) under different conditions.

\[Team A\] \[ \begin{aligned} n_A &= 36 && \text{(ukuran sampel)} \\ \bar{x}_A &= 210 && \text{(rata-rata sampel)} \\ \sigma_A &= 24 && \text{(simpangan baku populasi diketahui)} \end{aligned} \]

\[Team B\] \[ \begin{aligned} n_B &= 36 && \text{(ukuran sampel)} \\ \bar{x}_B &= 210 && \text{(rata-rata sampel)} \\ s_B &= 24 && \text{(simpangan baku sampel)} \end{aligned} \]

Tasks

  1. Identify the statistical test used by each team.
  2. Compute Confidence Intervals for 90%, 95%, and 99%.
  3. Create a visualization comparing all intervals.
  4. Explain why the interval widths differ, even with similar data.

1. Identify the statistical test used by each team.

  • Team A menggunakan Z-Test (Z-Interval):
    Alasannya: Karena Standar Deviasi Populasi (\(\sigma\)) diketahui secara pasti. Meskipun jumlah sampelnya 36, informasi \(\sigma\) membuat kita bisa langsung menggunakan distribusi normal standar (Z).

  • Team B menggunakan t-Test (t-Interval):
    Alasannya: Karena Standar Deviasi Populasi tidak diketahui. Tim B hanya memiliki Standar Deviasi Sampel (\(s\)). Dalam statistik, jika kita hanya mengandalkan data sampel untuk menebak standar deviasi, kita wajib menggunakan distribusi-t sebagai bentuk “kehati-hatian”.

2. Compute Confidence Intervals for 90%, 95%, and 99%.

Rumus Umum Confidence Interval Mean

  • Z-Test (Team A) \[ CI = \bar{x} \pm Z_{\alpha/2} \times \frac{\sigma}{\sqrt{n}} \]

  • t-Test (Team B) \[ CI = \bar{x} \pm t_{\alpha/2,\,n-1} \times \frac{s}{\sqrt{n}} \]

Keterangan Singkat:
- \(\bar{x}\) : rata-rata sampel
- \(Z_{\alpha/2}\) : nilai kritis distribusi normal standar
- \(t_{\alpha/2,,n-1}\) : nilai kritis distribusi t-Student
- \(\sigma\) : simpangan baku populasi
- \(s\) : simpangan baku sampel
- \(n\) : ukuran sampel

Hitung Standard Error (SE)

\[ \begin{aligned} SE &= \frac{24}{\sqrt{36}} \\ &= \frac{24}{6} \\ &= 4 \end{aligned} \]

Nilai Kritis

library(knitr)

tabel_kritis <- data.frame(
  `Confidence Level` = c("90%", "95%", "99%"),
  `Z_{α/2}` = c(1.645, 1.960, 2.576),
  `t_{α/2, 35}` = c(1.690, 2.030, 2.724)
)

kable(
  tabel_kritis,
  caption = "Nilai Kritis Distribusi Normal (Z) dan t-Student (df = 35)",
  align = "c"
)
Nilai Kritis Distribusi Normal (Z) dan t-Student (df = 35)
Confidence.Level Z_.α.2. t_.α.2..35.
90% 1.645 1.690
95% 1.960 2.030
99% 2.576 2.724

Perhitungan Confidence Interval

🔵 Team A (Z-Test)

  • 90% Confidence Interval \[ 210 \pm (1.645 \times 4) = (203.42,\;216.58) \]

  • 95% Confidence Interval \[ 210 \pm (1.96 \times 4) = (202.16,\;217.84) \]

  • 99% Confidence Interval \[ 210 \pm (2.576 \times 4) = (199.70,\;220.30) \]

🟠 Team B (t-Test)

  • 90% Confidence Interval \[ 210 \pm (1.690 \times 4) = (203.24,\;216.76) \]

  • 95% Confidence Interval \[ 210 \pm (1.96 \times 4) = (202.16,\;217.84) \]

  • 99% Confidence Interval \[ 210 \pm (2.724 \times 4) = (199.10,\;220.90) \]

3. Create a visualization comparing all intervals.

library(ggplot2)

# Data
mean <- 210
se <- 4
levels <- c("90%", "95%", "99%")

z <- c(1.645, 1.96, 2.576)
t <- c(1.690, 2.030, 2.724)

# Confidence Intervals
ci_teamA <- data.frame(
  Team = "Team A (Z-Test)",
  Level = levels,
  Lower = mean - z * se,
  Upper = mean + z * se
)

ci_teamB <- data.frame(
  Team = "Team B (t-Test)",
  Level = levels,
  Lower = mean - t * se,
  Upper = mean + t * se
)

ci_all <- rbind(ci_teamA, ci_teamB)

ci_all
ggplot(ci_all, aes(x = Level, y = mean, ymin = Lower, ymax = Upper, color = Team)) +
  geom_errorbar(width = 0.2, linewidth = 1) +
  geom_point(size = 3) +
  labs(
    title = "Perbandingan Confidence Interval Latensi API",
    y = "Latency (ms)",
    x = "Confidence Level"
  ) +
  theme_minimal()

- penjelasan:
* Pusat Estimasi yang Sama (\(\bar{x} = 210\)):Kedua tim memiliki titik tengah yang sama pada 210 ms. Namun, tingkat kepercayaan mereka terhadap angka ini berbeda secara statistik.<br. * Ketebalan dan Lebar Interval:
* Garis Team A (Z-Interval): Terlihat lebih pendek/sempit. Karena Team A mengetahui nilai simpangan baku populasi (\(\sigma\)), model statistik memberikan kepercayaan lebih tinggi sehingga rentang ketidakpastiannya kecil.
* Garis Team B (t-Interval): Terlihat lebih panjang/lebar. Karena Team B hanya menggunakan simpangan baku sampel (\(s\)), distribusi-t memberikan “penalti” berupa rentang yang lebih luas untuk menutupi risiko ketidakpastian tambahan.
* Efek “Heavier Tails” pada Distribusi-t:Secara visual, jika Anda melihat kurva densitasnya, kurva t-Test akan memiliki area di ujung (ekor) yang lebih tebal. Hal ini menjelaskan mengapa batas bawah Team B lebih rendah dan batas atasnya lebih tinggi dibandingkan Team A, meskipun angka dasar sampelnya identik (\(n=36, s=24\)).
* Kesimpulan untuk Pengambilan Keputusan:
Gunakan Z-Interval jika Anda menginginkan presisi maksimal dan memiliki data historis populasi.Gunakan t-Interval untuk sikap yang lebih konservatif dan “aman” ketika Anda hanya memiliki data dari eksperimen skala kecil atau terbatas.
* Untuk setiap confidence level, interval dari t-Test terlihat sedikit lebih lebar dibandingkan Z-Test. Ini terjadi karena pada t-Test simpangan baku populasi tidak diketahui dan harus diperkirakan dari sampel, sehingga ketidakpastiannya lebih besar.

4. Explain why the interval widths differ, even with similar data.

  1. Faktor Ketidakpastian Tambahan:Team A sudah tahu “aturan main” seluruh populasi (\(\sigma\) diketahui). Sedangkan Team B hanya menebak-nebak dari 36 sampel (\(s\) saja). Karena Team B punya informasi yang lebih sedikit, statistik “menghukum” mereka dengan memberikan rentang yang lebih lebar agar tetap aman.

  2. Karakteristik Distribusi-t:Distribusi-t didesain dengan “Ekor yang Lebih Tebal” (Heavier Tails). Artinya, kemungkinan nilai-nilai ekstrim muncul dianggap lebih besar oleh distribusi-t.

  3. Analogi Sederhana:

  • Team A (Z-Test) itu seperti menebak tinggi badan orang menggunakan meteran yang sudah terkalibrasi pabrik (pasti).
  • Team B (t-Test) itu seperti menebak tinggi badan menggunakan jengkal tangan (ada perkiraan/estimasi). Karena pakai jengkal, tebakan kita harus dikasih “ruang cadangan” yang lebih luas supaya tidak salah.
library(knitr)

tabel_komparasi <- data.frame(
  "Level" = c("90%", "95%", "99%"),
  "Team_A_Z_Interval" = c("203.42 - 216.58", "202.16 - 217.84", "199.70 - 220.30"),
  "Team_B_t_Interval" = c("203.24 - 216.76", "201.88 - 218.12", "199.10 - 220.90"),
  "Keterangan" = c("Z lebih sempit", "Z lebih sempit", "Z lebih sempit")
)

kable(tabel_komparasi, 
      caption = "Perbandingan Presisi: Z-Interval (Sigma Diketahui) vs t-Interval (Sigma Tidak Diketahui)",
      align = "clll")
Perbandingan Presisi: Z-Interval (Sigma Diketahui) vs t-Interval (Sigma Tidak Diketahui)
Level Team_A_Z_Interval Team_B_t_Interval Keterangan
90% 203.42 - 216.58 203.24 - 216.76 Z lebih sempit
95% 202.16 - 217.84 201.88 - 218.12 Z lebih sempit
99% 199.70 - 220.30 199.10 - 220.90 Z lebih sempit

Case Study 5

One-Sided Confidence Interval: A Software as a Service (SaaS) company wants to ensure that at least 70% of weekly active users utilize a premium feature.

From the experiment:

\[ n = 250 \quad \text{(total users)} \]

\[ x = 185 \quad \text{(active premium users)} \]

Management is only interested in the lower bound of the estimate.

Tasks:

  1. Identify the type of Confidence Interval and the appropriate test.
  2. Compute the one-sided lower Confidence Interval at:
  • 90%
  • 95%
  • 99%
  1. Visualize the lower bounds for all confidence levels.
  2. Determine whether the 70% target is statistically satisfied.

1. Identify the type of Confidence Interval and the appropriate test.

Uji yang digunakan adalah One-Sided Z-Test for Proportions. Ukuran Sampel \(n=250\) cukup besar untuk menggunakan distribusi normal (Z). Dan Jenis Confidence Interval One-Sided Confidence Interval (Lower Bound). Yaitu fokus hanya pada batas bawah, karena manajemen ingin memastikan minimal 70% pengguna aktif premium.

2. Compute the one-sided lower Confidence Interval at: 90%; 95%; 99%

Langkah 1: Hitung Proporsi Sampel (\(\hat{p}\))

\[\hat{p} = \frac{x}{n} = \frac{185}{250} = 0.74\]

Langkah 2: Hitung Standard Error (SE)

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

Langkah 3: Rumus One-Sided Lower Confidence Interval

\[\text{Lower Bound} = \hat{p} - (z \times SE)\] subtitusi:

  • Confidence Level 90% (\(z = 1.282\)): \[\text{Lower Bound} = \hat{p} - (1.282 \times SE) = 0.74 - (1.282 \times 0.0277) \approx 0.704 \text{ atau } 70.4\%\]
  • Confidence Level 95% (\(z = 1.645\)): \[\text{Lower Bound} = \hat{p} - (1.645 \times SE) = 0.74 - (1.645 \times 0.0277) \approx 0.694 \text{ atau } 69.4\%\]
  • Confidence Level 95% (\(z = 1.645\)): \[\text{Lower Bound} = \hat{p} - (1.645 \times SE) = 0.74 - (1.645 \times 0.0277) \approx 0.694 \text{ atau } 69.4\%\]

3. Visualize the lower bounds for all confidence levels.

# 1. Load Library
library(ggplot2)

# 2. Persiapan Data (Case Study 5)
n <- 250
x <- 185
p_hat <- x / n         # 0.74 (74%)
se <- sqrt(p_hat * (1 - p_hat) / n) # Standard Error

# Menghitung Batas Bawah (Lower Bound) untuk masing-masing level
lb_90 <- p_hat - (1.282 * se) # 70.4%
lb_95 <- p_hat - (1.645 * se) # 69.4%
lb_99 <- p_hat - (2.326 * se) # 67.5%

# 3. Membuat Data Kurva Normal
x_seq <- seq(p_hat - 4*se, p_hat + 4*se, length.out = 1000)
y_seq <- dnorm(x_seq, mean = p_hat, sd = se)
df_density <- data.frame(x = x_seq, y = y_seq)

# 4. Membuat Visualisasi
ggplot(df_density, aes(x = x, y = y)) +
  # Kurva Utama
  geom_line(size = 1) +
  
  # Arsir wilayah dari Batas Bawah 95% ke arah kanan (sebagai contoh utama)
  geom_area(data = subset(df_density, x >= lb_95), fill = "green", alpha = 0.2) +
  
  # Garis Target Manajemen (70%)
  geom_vline(xintercept = 0.70, color = "red", linetype = "dashed", size = 1.2) +
  annotate("text", x = 0.68, y = 10, label = "Target 70%", color = "red", angle = 90) +
  
  # Garis-garis Batas Bawah (Lower Bounds)
  geom_vline(xintercept = lb_90, color = "blue", size = 0.8) +
  geom_vline(xintercept = lb_95, color = "darkgreen", size = 0.8) +
  geom_vline(xintercept = lb_99, color = "purple", size = 0.8) +
  
  # Label Angka Batas
  annotate("label", x = lb_90, y = 15, label = "90% LB (70.4%)", color = "blue", size = 3) +
  annotate("label", x = lb_95, y = 10, label = "95% LB (69.4%)", color = "darkgreen", size = 3) +
  annotate("label", x = lb_99, y = 5, label = "99% LB (67.5%)", color = "purple", size = 3) +
  
  # Titik p_hat (74%)
  geom_point(aes(x = p_hat, y = 0), color = "black", size = 3) +
  annotate("text", x = p_hat, y = -1, label = "Sample (74%)") +
  
  # Judul dan Label
  labs(
    title = "Density Plot: One-Sided Lower Bound (Case Study 5)",
    subtitle = "Menganalisis apakah batas bawah keyakinan sudah melewati Target 70%",
    x = "Proporsi Pengguna Premium",
    y = "Density"
  ) +
  theme_minimal()

- penjelasan:
* Kurva (Garis Hitam): Menunjukkan distribusi kemungkinan proporsi pengguna premium. Puncaknya ada di 74% (hasil sampel kita).
* Garis Merah Putus-putus (70%): Ini adalah garis mati dari manajemen. Batas bawah kita harus berada di kanan garis ini agar target dianggap tercapai secara statistik.
* Garis Biru (90%): Berada di kanan garis merah. Artinya, pada tingkat kepercayaan 90%, kita berhasil mencapai target.
* Garis Hijau & Ungu (95% & 99%): Berada di kiri garis merah. Artinya, jika manajemen menuntut kepastian yang lebih tinggi (95% atau 99%), kita belum bisa menjamin target 70% terpenuhi karena ada risiko proporsi aslinya masih di bawah 70%.

4. Determine whether the 70% target is statistically satisfied.

  • Pada 90% confidence, perusahaan cukup yakin bahwa minimal 70% pengguna aktif menggunakan fitur premium.
  • Pada 95% dan 99% confidence, tidak cukup bukti statistik untuk menjamin target 70%.
  • Semakin tinggi confidence level → standar bukti semakin ketat → lower bound semakin turun.

Target minimal 70% pengguna premium aktif terpenuhi secara statistik pada tingkat kepercayaan 90%, namun belum terpenuhi pada 95% dan 99% confidence level. Hal ini menunjukkan adanya trade-off antara tingkat keyakinan dan kepastian pencapaian target bisnis.

library(knitr)

# Tabel Final Case Study 5
summary_case5 <- data.frame(
  "Confidence_Level" = c("90%", "95%", "99%"),
  "Z_Score_One_Sided" = c(1.282, 1.645, 2.326),
  "Lower_Bound" = c("70.4%", "69.4%", "67.5%"),
  "Target_70_Persen" = c("Tercapai", "Tidak Tercapai", "Tidak Tercapai")
)

kable(summary_case5, align = "clcc", caption = "Ringkasan Batas Bawah Estimasi Pengguna Premium")
Ringkasan Batas Bawah Estimasi Pengguna Premium
Confidence_Level Z_Score_One_Sided Lower_Bound Target_70_Persen
90% 1.282 70.4% Tercapai
95% 1.645 69.4% Tidak Tercapai
99% 2.326 67.5% Tidak Tercapai

KESIMPULAN

Setelah melakukan analisis mendalam terhadap kelima studi kasus, terdapat beberapa poin kunci yang dapat disimpulkan:
  • Trade-off Kepercayaan vs. Presisi: Semakin tinggi tingkat kepercayaan yang kita inginkan (misal 99%), maka rentang interval akan semakin lebar. Artinya, kita mendapatkan kepastian yang lebih tinggi, namun dengan estimasi yang kurang spesifik.
  • Pentingnya Ukuran Sampel (\(n\)): Ukuran sampel memiliki peran vital dalam menekan Margin of Error. Semakin banyak data yang kita kumpulkan, semakin sempit (presisi) rentang interval yang dihasilkan, tanpa harus mengorbankan tingkat kepercayaan.
  • Pemilihan Distribusi yang Tepat: Penggunaan Z-Test sangat ideal ketika standar deviasi populasi diketahui atau sampel sangat besar. Namun, untuk riset dengan sampel kecil (seperti pada Case Study 2), penggunaan t-Test wajib dilakukan guna memberikan ruang estimasi yang lebih aman bagi data yang lebih fluktuatif.
  • Aplikasi Bisnis Nyata: Statistik bukan sekadar angka di atas kertas. Melalui One-Sided Confidence Interval di Case Study 5, kita belajar bahwa meskipun hasil sampel (74%) terlihat melewati target (70%), secara statistik target tersebut belum tentu “aman” terpenuhi pada tingkat kepercayaan 95%. Hal ini mengajarkan manajer produk untuk lebih berhati-hati dalam mengklaim keberhasilan sebuah fitur.

Secara keseluruhan, pemahaman tentang Confidence Interval memungkinkan seorang Data Scientist untuk memberikan rekomendasi yang tidak hanya berbasis data, tetapi juga berbasis risiko yang terukur.

Referensi

  • Anderson, D. R., et al. (2020). Statistics for Business & Economics. 14th Edition. Cengage Learning.
  • Navidi, W. (2019). Statistics for Engineers and Scientists. 5th Edition. McGraw-Hill Education.
  • Walpole, R. E., et al. (2016). Probability & Statistics for Engineers & Scientists. 9th Edition. Pearson.