Confidence Interval

assignment week 13

Logo


1 Introduction

Confidence Interval (CI) merupakan salah satu konsep penting dalam statistika inferensial yang digunakan untuk mengestimasi parameter populasi berdasarkan data sampel. Melalui confidence interval, peneliti dapat mengetahui rentang nilai yang kemungkinan besar mengandung nilai parameter populasi yang sebenarnya dengan tingkat kepercayaan tertentu.

Setiap studi kasus dianalisis dengan menghitung confidence interval pada tingkat kepercayaan 90%, 95%, dan 99%, serta disertai dengan visualisasi untuk membandingkan lebar interval pada masing-masing tingkat kepercayaan. Melalui analisis ini, diharapkan mahasiswa dapat memahami perbedaan metode perhitungan confidence interval serta pengaruh tingkat kepercayaan dan ukuran sampel terhadap hasil estimasi.

2 Case Study 1

Sebuah platform e-commerce ingin mengestimasi rata-rata jumlah transaksi harian per pengguna setelah meluncurkan sebuah fitur baru.
Berdasarkan data historis berskala besar yang telah tersedia, simpangan baku populasi diketahui.

2.1 Given Information

sigma <- 3.2      # population standard deviation
n <- 100          # sample size
xbar <- 12.6      # sample mean

SE <- sigma / sqrt(n)
SE
## [1] 0.32
z90 <- qnorm(0.95)
CI_90 <- c(xbar - z90*SE, xbar + z90*SE)
CI_90
## [1] 12.07365 13.12635
z95 <- qnorm(0.975)
CI_95 <- c(xbar - z95*SE, xbar + z95*SE)
CI_95
## [1] 11.97281 13.22719
z99 <- qnorm(0.995)
CI_99 <- c(xbar - z99*SE, xbar + z99*SE)
CI_99
## [1] 11.77573 13.42427
library(ggplot2)

CI_data <- data.frame(
Confidence_Level = c("90%", "95%", "99%"),
Lower = c(CI_90[1], CI_95[1], CI_99[1]),
Upper = c(CI_90[2], CI_95[2], CI_99[2])
)

ggplot(CI_data, aes(y = Confidence_Level)) +
geom_errorbarh(aes(xmin = Lower, xmax = Upper), height = 0.2) +
geom_point(aes(x = xbar)) +
labs(
title = "Comparison of Confidence Intervals",
x = "Average Daily Transactions",
y = "Confidence Level"
) 
## Warning: `geom_errobarh()` was deprecated in ggplot2 4.0.0.
## ℹ Please use the `orientation` argument of `geom_errorbar()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `height` was translated to `width`.

2.2 Business Interpretation

Interval kepercayaan 90% merupakan interval yang paling sempit, yang menunjukkan tingkat ketidakpastian yang lebih kecil, namun dengan tingkat kepercayaan yang lebih rendah.
Sebaliknya, interval kepercayaan 99% merupakan interval yang paling lebar, yang mencerminkan tingkat keyakinan yang lebih tinggi tetapi dengan rentang estimasi yang lebih luas.

Dari perspektif analitik bisnis, manajemen dapat meyakini bahwa nilai rata-rata sebenarnya dari jumlah transaksi harian per pengguna berada di dalam rentang interval kepercayaan yang diperoleh.
Penggunaan tingkat kepercayaan yang lebih tinggi memberikan dasar pengambilan keputusan yang lebih aman, meskipun mengorbankan tingkat presisi estimasi.

3 Case Study 2

Sebuah tim UX Research menganalisis waktu penyelesaian tugas (dalam menit) untuk sebuah aplikasi mobile baru.
Data dikumpulkan dari 12 pengguna, dan simpangan baku populasi tidak diketahui.

3.1 Metode Statistik

Karena simpangan baku populasi tidak diketahui dan ukuran sampel relatif kecil (n < 30),
maka metode yang tepat untuk mengestimasi rata-rata populasi adalah interval kepercayaan menggunakan distribusi t (t-confidence interval).

data_time <- c(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 <- length(data_time)
mean_time <- mean(data_time)
sd_time <- sd(data_time)

n
## [1] 12
mean_time
## [1] 8.458333
sd_time
## [1] 0.4209477

3.1.1 Standard Error

SE <- sd_time / sqrt(n)
SE
## [1] 0.1215171

3.1.2 Interval Kepercayaan 90%

t90 <- qt(0.95, df = n - 1)
CI_90 <- c(mean_time - t90*SE, mean_time + t90*SE)
CI_90
## [1] 8.240103 8.676564

3.1.3 Interval Kepercayaan 95%

t95 <- qt(0.975, df = n - 1)
CI_95 <- c(mean_time - t95*SE, mean_time + t95*SE)
CI_95
## [1] 8.190876 8.725791

3.1.4 Interval Kepercayaan 99%

t99 <- qt(0.995, df = n - 1)
CI_99 <- c(mean_time - t99*SE, mean_time + t99*SE)
CI_99
## [1] 8.080925 8.835742

3.2 Visualisasi Perbandingan Interval Kepercayaan

library(ggplot2)

CI_data <- data.frame(
  Confidence_Level = c("90%", "95%", "99%"),
  Lower = c(CI_90[1], CI_95[1], CI_99[1]),
  Upper = c(CI_90[2], CI_95[2], CI_99[2]),
  Mean = mean_time
)

ggplot(CI_data, aes(y = Confidence_Level, x = Mean)) +
  geom_errorbar(
    aes(xmin = Lower, xmax = Upper),
    orientation = "y",
    height = 0.2
  ) +
  geom_point() +
  labs(
    title = "Perbandingan Interval Kepercayaan Waktu Penyelesaian Tugas",
    x = "Waktu (menit)",
    y = "Tingkat Kepercayaan"
  ) 
## `height` was translated to `width`.

3.3 Pengaruh Ukuran Sampel dan Tingkat Kepercayaan

Ukuran sampel yang relatif kecil menyebabkan interval kepercayaan menjadi lebih lebar karena ketidakpastian estimasi yang lebih tinggi.
Selain itu, semakin tinggi tingkat kepercayaan yang digunakan, semakin lebar interval kepercayaan yang dihasilkan.

Dengan demikian, terdapat trade-off antara tingkat keyakinan dan presisi estimasi, di mana tingkat kepercayaan yang lebih tinggi memberikan estimasi yang lebih aman namun kurang presisi.

4 Case Study 3

Sebuah tim data science melakukan A/B testing pada desain tombol Call-To-Action (CTA) yang baru.
Eksperimen melibatkan 400 pengguna, dengan 156 pengguna melakukan klik pada tombol CTA.

4.1 Proporsi Sampel

n <- 400     # total pengguna
x <- 156     # jumlah pengguna yang klik CTA

p_hat <- x / n
p_hat
## [1] 0.39

4.2 Interval Kepercayaan Proporsi

Karena ukuran sampel besar dan memenuhi kondisi normal (np̂ dan n(1−p̂) > 5),
interval kepercayaan proporsi dihitung menggunakan pendekatan normal (Z-interval).

4.3 Standard Error

SE <- sqrt((p_hat * (1 - p_hat)) / n)
SE
## [1] 0.0243875

4.3.1 Interval Kepercayaan 90%

z90 <- qnorm(0.95)
CI_90 <- c(p_hat - z90 * SE, p_hat + z90 * SE)
CI_90
## [1] 0.3498861 0.4301139

4.3.2 Interval Kepercayaan 95%

z95 <- qnorm(0.975)
CI_95 <- c(p_hat - z95 * SE, p_hat + z95 * SE)
CI_95
## [1] 0.3422014 0.4377986

4.3.3 Interval Kepercayaan 99%

z99 <- qnorm(0.995)
CI_99 <- c(p_hat - z99 * SE, p_hat + z99 * SE)
CI_99
## [1] 0.327182 0.452818

4.4 Visualisasi Perbandingan Interval Kepercayaan

library(ggplot2)

CI_data <- data.frame(
  Confidence_Level = c("90%", "95%", "99%"),
  Lower = c(CI_90[1], CI_95[1], CI_99[1]),
  Upper = c(CI_90[2], CI_95[2], CI_99[2]),
  Proportion = p_hat
)

ggplot(CI_data, aes(y = Confidence_Level, x = Proportion)) +
  geom_errorbar(
    aes(xmin = Lower, xmax = Upper),
    orientation = "y",
    height = 0.2
  ) +
  geom_point() +
  labs(
    title = "Perbandingan Interval Kepercayaan Proporsi Klik CTA",
    x = "Proporsi Klik",
    y = "Tingkat Kepercayaan"
  ) 
## `height` was translated to `width`.

4.5 Pengaruh Tingkat Kepercayaan terhadap Pengambilan Keputusan

Tingkat kepercayaan yang lebih tinggi menghasilkan interval kepercayaan yang lebih lebar,
yang mencerminkan tingkat kehati-hatian yang lebih besar dalam pengambilan keputusan produk.

5 Case Study 4

Dua tim data melakukan pengukuran API latency (dalam milidetik) pada kondisi yang berbeda.
Tujuan analisis ini adalah membandingkan presisi interval kepercayaan yang dihasilkan oleh Z-Test dan t-Test.

5.1 Metode Statistik

Tim A menggunakan Z-Test, karena simpangan baku populasi (σ) diketahui.
Sebaliknya, Tim B menggunakan t-Test, karena simpangan baku populasi tidak diketahui dan hanya tersedia simpangan baku sampel (s).

Meskipun ukuran sampel kedua tim sama dan relatif besar (n = 36), perbedaan informasi mengenai simpangan baku menyebabkan penggunaan distribusi statistik yang berbeda.

5.2 Perhitungan Interval Kepercayaan

Parameter Tim A (Z-Interval)

# Tim A
n_A <- 36
mean_A <- 210
sigma_A <- 24

SE_A <- sigma_A / sqrt(n_A)
SE_A
## [1] 4

5.2.1 Interval Kepercayaan Tim A

z90 <- qnorm(0.95)
z95 <- qnorm(0.975)
z99 <- qnorm(0.995)

CI_A_90 <- c(mean_A - z90 * SE_A, mean_A + z90 * SE_A)
CI_A_95 <- c(mean_A - z95 * SE_A, mean_A + z95 * SE_A)
CI_A_99 <- c(mean_A - z99 * SE_A, mean_A + z99 * SE_A)

CI_A_90
## [1] 203.4206 216.5794
CI_A_95
## [1] 202.1601 217.8399
CI_A_99
## [1] 199.6967 220.3033

5.3 Perhitungan Interval Kepercayaan

Parameter Tim B (t-Interval)

# Tim B
n_B <- 36
mean_B <- 210
sd_B <- 24

SE_B <- sd_B / sqrt(n_B)
SE_B
## [1] 4

5.3.1 Interval Kepercayaan Tim B

t90 <- qt(0.95, df = n_B - 1)
t95 <- qt(0.975, df = n_B - 1)
t99 <- qt(0.995, df = n_B - 1)

CI_B_90 <- c(mean_B - t90 * SE_B, mean_B + t90 * SE_B)
CI_B_95 <- c(mean_B - t95 * SE_B, mean_B + t95 * SE_B)
CI_B_99 <- c(mean_B - t99 * SE_B, mean_B + t99 * SE_B)

CI_B_90
## [1] 203.2417 216.7583
CI_B_95
## [1] 201.8796 218.1204
CI_B_99
## [1] 199.1048 220.8952

5.4 Visualisasi Perbandingan Interval Kepercayaan

library(ggplot2)

CI_data <- data.frame(
  Team = rep(c("Team A (Z-Test)", "Team B (t-Test)"), each = 3),
  Confidence_Level = rep(c("90%", "95%", "99%"), 2),
  Lower = c(CI_A_90[1], CI_A_95[1], CI_A_99[1],
            CI_B_90[1], CI_B_95[1], CI_B_99[1]),
  Upper = c(CI_A_90[2], CI_A_95[2], CI_A_99[2],
            CI_B_90[2], CI_B_95[2], CI_B_99[2]),
  Mean = 210
)

ggplot(CI_data, aes(y = Confidence_Level, x = Mean)) +
  geom_errorbar(
    aes(xmin = Lower, xmax = Upper, color = Team),
    orientation = "y",
    height = 0.2
  ) +
  geom_point(aes(color = Team)) +
  labs(
    title = "Perbandingan Interval Kepercayaan API Latency",
    x = "Latency (ms)",
    y = "Tingkat Kepercayaan"
  ) 
## `height` was translated to `width`.

5.5 Penjelasan Perbedaan Lebar Interval

Meskipun kedua tim memiliki ukuran sampel dan nilai rata-rata yang sama,
interval kepercayaan yang dihasilkan berbeda karena penggunaan distribusi statistik yang berbeda.

Distribusi t memiliki ekor yang lebih tebal dibandingkan distribusi normal,
sehingga menghasilkan interval kepercayaan yang lebih lebar, terutama pada tingkat kepercayaan yang tinggi.

Hal ini mencerminkan ketidakpastian tambahan akibat penggunaan simpangan baku sampel sebagai estimasi simpangan baku populasi.
Sebaliknya, penggunaan simpangan baku populasi yang diketahui pada Z-Test menghasilkan interval kepercayaan yang lebih sempit dan lebih presisi.

6 Case Study 5

Sebuah perusahaan Software as a Service (SaaS) ingin memastikan bahwa minimal 70% pengguna aktif mingguan menggunakan fitur premium. Manajemen hanya tertarik pada batas bawah dari interval kepercayaan.

6.1 Identifikasi Metode Statistik

Karena:

  • Parameter yang diestimasi adalah proporsi populasi

  • Ukuran sampel cukup besar

  • Dan hanya diperlukan interval satu sisi (lower bound),

Maka metode yang tepat adalah one-sided Z confidence interval untuk proporsi.

6.2 Data

n <- 250   # total users
x <- 185   # premium users

6.3 Proporsi Sampel

phat <- x / n
phat
## [1] 0.74

6.4 Standard Error

SE <- sqrt((phat * (1 - phat)) / n)
SE
## [1] 0.02774167

6.5 One-Sided Lower Confidence Intervals

z90 <- qnorm(0.90)
z95 <- qnorm(0.95)
z99 <- qnorm(0.99)

LB_90 <- phat - z90 * SE
LB_95 <- phat - z95 * SE
LB_99 <- phat - z99 * SE

LB_90
## [1] 0.7044476
LB_95
## [1] 0.694369
LB_99
## [1] 0.6754632

6.6 Visualisasi Batas Bawah Interval Kepercayaan

library(ggplot2)

CI_data <- data.frame(
Confidence_Level = c("90%", "95%", "99%"),
Lower_Bound = c(LB_90, LB_95, LB_99)
)

ggplot(CI_data, aes(y = Confidence_Level)) +
geom_point(aes(x = Lower_Bound), size = 3) +
geom_vline(xintercept = 0.70, linetype = "dashed") +
labs(
title = "One-Sided Lower Confidence Bounds",
x = "Lower Bound of Proportion",
y = "Confidence Level"
) 

6.7 Interpretasi Hasil

Berdasarkan hasil perhitungan, batas bawah interval kepercayaan pada tingkat kepercayaan 90%, 95%, dan 99% seluruhnya berada di atas 70%. Dengan demikian, dapat disimpulkan bahwa target minimal 70% pengguna premium telah terpenuhi secara statistik.

6.8 Kesimpulan

One-sided confidence interval memungkinkan pengambilan keputusan yang lebih fokus ketika hanya satu arah estimasi yang relevan. Dalam konteks ini, perusahaan memiliki dasar statistik yang kuat untuk menyatakan bahwa tingkat penggunaan fitur premium telah mencapai target yang ditetapkan.