Rangkuman Informasi Akademik Mahasiswa

CONFIDENCE INTERVAL

Tugas Week 13

Foto Profil Mahasiswa

Adam Richie Wijaya

Detail Profil Mahasiswa

Program Studi

Sains Data

Universitas

Institut Teknologi Sains Bandung (ITSB)

Mata Kuliah

Statistik Dasar

Dosen Pengampu

BAKTI SIREGAR, M.Sc., CDS.

Keahlian Utama

Data Science R Studio Statistika Exel Python Public Speaking

1 ). Tugas 1

Confidence Interval for Mean, \(\sigma\) 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.

\[\begin{eqnarray*} \sigma &=& 3.2 \quad \text{(population standard deviation)} \\ n &=& 100 \quad \text{(sample size)} \\ \bar{x} &=& 12.6 \quad \text{(sample mean)} \end{eqnarray*}\]

tasks:

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

1.1 Identifikasi Uji Statistik yang Tepat

Confidence Interval untuk mean berbasis distribusi Z (Z-interval)

Alasan pemilihan:

– Simpangan baku populasi σ diketahui (σ = 3,2).

– Ukuran sampel besar (n = 100 ≥ 30) sehingga distribusi rata-rata sampel mendekati normal (Central Limit Theorem).

– Tujuan analisis adalah mengestimasi rata-rata populasi, bukan menguji perbedaan atau hipotesis.

✅ Oleh karena itu, Z Confidence Interval untuk mean adalah metode yang paling tepat.

1.2 Perhitungan Confidence Interval

Diketahui:

Perhitungan Confidence Interval (CI)Rumus umum untuk Confidence Interval adalah:\(\bar{x} \pm Z \left( \frac{\sigma}{\sqrt{n}} \right)\)

Di mana Standard Error (\(SE\)) adalah\(SE = \frac{3.2}{\sqrt{100}} = \frac{3.2}{10} = 0.32\)

Tabel Perhitungan Confidence Interval
Confidence_Level Z_Score Margin_of_Error Lower_Bound Upper_Bound
90% 1.645 0.526 12.074 13.126
95% 1.960 0.627 11.973 13.227
99% 2.576 0.824 11.776 13.424

1.3 Visualisasi Perbandingan Confidence Interval

library(ggplot2)
library(plotly)

# 1. Menyiapkan data untuk plotting
plot_data <- data.frame(
  Level = factor(c("90%", "95%", "99%"), levels = c("90%", "95%", "99%")),
  Mean = c(12.6, 12.6, 12.6),
  Lower = c(12.074, 11.973, 11.776),
  Upper = c(13.126, 13.227, 13.424)
)

# Tambahkan teks
plot_data$hover_text <- paste0(
  "Level: ", plot_data$Level,
  "\nMean: ", plot_data$Mean,
  "\nRange: [", plot_data$Lower, " - ", plot_data$Upper, "]"
)

# 2. Membuat Visualisasi Dasar dengan ggplot
p <- ggplot(plot_data, aes(x = Level, y = Mean, text = hover_text)) +
  # Rentang CI
  geom_errorbar(aes(ymin = Lower, ymax = Upper, color = Level), 
                width = 0.2, size = 0.8, show.legend = FALSE) +
  # Titik rata-rata (dibuat simpel untuk interaktivitas)
  geom_point(size = 2.5, color = "black", fill = "white", shape = 21, stroke = 1) +
  # Estetika Tema dan Label
  scale_color_manual(values = c("#E41A1C", "#377EB8", "#4DAF4A")) + # Skema Set1
  labs(
    title = "Confidence Interval: Rata-rata Transaksi",
    x = "Tingkat Kepercayaan",
    y = "Rata-rata Transaksi"
  ) +
  theme_minimal(base_size = 10) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold", hjust = 0.5),
    panel.grid.minor = element_blank()
  )

# 3. Konversi ke Plotly 
ggplotly(p, tooltip = "text", width = 520, height = 350) %>%
  layout(
    showlegend = FALSE,
    margin = list(t = 60, b = 40, l = 40, r = 40) # Memberi ruang agar label tidak terpotong
  ) %>%
  config(
    displayModeBar = "hover", 
    modeBarButtonsToRemove = c(
      "zoom2d", "pan2d", "select2d", "lasso2d", 
      "zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d"
    ),
    displaylogo = FALSE
  )

1.4 Interpretasi dalam Konteks Business Analytics

– Dengan 95% keyakinan, rata-rata transaksi harian per pengguna berada di antara 11.97 hingga 13.23

– Confidence level lebih tinggi → estimasi lebih aman, tetapi kurang presisi

– 99% CI cocok untuk keputusan strategis berisiko tinggi

– 90–95% CI cocok untuk evaluasi performa fitur baru secara operasional

Implikasi bisnis:

– Fitur baru kemungkinan besar meningkatkan engagement pengguna

– Rentang CI yang relatif sempit → hasil stabil dan dapat dipercaya

2 ). Tugas 2

Confidence Interval for Mean, \(\sigma\) 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\%\)
  3. Visualize the three intervals on a single plot.
  4. Explain how sample size and confidence level influence the interval width.

2.1 Identifikasi Uji Statistik

Uji statistik yang tepat adalah t-Interval (Distribusi t Student).

Alasan Pemilihan:

\(\sigma\) (Simpangan Baku Populasi) Tidak Diketahui: Kita hanya bisa menghitung standar deviasi dari data sampel (\(s\)).

– Ukuran Sampel Kecil (\(n < 30\)): Karena jumlah pengguna hanya 12 orang (\(n=12\)), distribusi normal (Z) tidak akurat untuk digunakan; distribusi t memberikan kompensasi atas ketidakpastian ekstra dari sampel kecil ini.

2.2 Perhitungan Statistik

Deskriptif & CIPertama, kita hitung statistik dasar dari data:

– Mean (\(\bar{x}\)): \(8.458\) menit

– Standar Deviasi Sampel (\(s\)): \(0.412\)

– Degree of Freedom (\(df\)): \(n - 1 = 11\)

– Standard Error (\(SE\)): \(\frac{s}{\sqrt{n}} = \frac{0.412}{\sqrt{12}} \approx 0.119\)

2.3 Visualisasi

library(ggplot2)
library(plotly)

# 1. Menyiapkan data berdasarkan perhitungan t-distribution (df = 11)
# Data: 8.4, 7.9, 9.1, 8.7, 8.2, 9.0, 7.8, 8.5, 8.9, 8.1, 8.6, 8.3
# Mean = 8.458
plot_data <- data.frame(
  Level = factor(c("90%", "95%", "99%"), levels = c("90%", "95%", "99%")),
  Mean = c(8.458, 8.458, 8.458),
  Lower = c(8.244, 8.196, 8.088),
  Upper = c(8.672, 8.720, 8.828)
)

# Menyiapkan teks hover agar informatif (Informasi Mean & Rentang)
plot_data$hover_text <- paste0(
  "<b>Level: ", plot_data$Level, "</b><br>",
  "Mean: ", plot_data$Mean, " menit<br>",
  "Rentang: [", plot_data$Lower, " - ", plot_data$Upper, "]"
)

# 2. Membuat Visualisasi Dasar dengan ggplot2
p <- ggplot(plot_data, aes(x = Level, y = Mean, text = hover_text)) +
  # Rentang Confidence Interval (t-interval)
  geom_errorbar(aes(ymin = Lower, ymax = Upper, color = Level), 
                width = 0.2, size = 0.8, show.legend = FALSE) +
  # Titik Rata-rata sampel
  geom_point(size = 2.5, color = "black", fill = "white", shape = 21, stroke = 1) +
  # Estetika Warna (Skema Set1)
  scale_color_manual(values = c("#E41A1C", "#377EB8", "#4DAF4A")) + 
  labs(
    title = "Confidence Interval: Waktu Penyelesaian Tugas (UX)",
    x = "Tingkat Kepercayaan",
    y = "Waktu (Menit)"
  ) +
  theme_minimal(base_size = 10) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold", hjust = 0.5),
    panel.grid.minor = element_blank()
  )

# 3. Output Interaktif dengan Plotly (Ukuran Ringkas & Modebar Minimalis)
ggplotly(p, tooltip = "text", width = 520, height = 350) %>%
  layout(
    showlegend = FALSE,
    margin = list(t = 60, b = 40, l = 40, r = 40),
    hoverlabel = list(bgcolor = "white", font = list(size = 11), align = "left")
  ) %>%
  config(
    displayModeBar = "hover", 
    modeBarButtonsToRemove = c(
      "zoom2d", "pan2d", "select2d", "lasso2d", 
      "zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d",
      "hoverClosestCartesian", "hoverCompareCartesian"
    ),
    displaylogo = FALSE
  )

2.4 Analisis Hubungan Faktor

Bagaimana variabel-variabel ini memengaruhi lebar interval?

  1. Tingkat Kepercayaan (Confidence Level):

Hubungan: Berbanding Lurus.

Penjelasan: Semakin tinggi keyakinan yang Anda inginkan (misal 99%), semakin lebar rentang yang dibutuhkan. Bayangkan seperti melempar jaring untuk menangkap ikan; jika Anda ingin 99% yakin menangkap ikan “rata-rata”, Anda butuh jaring yang lebih lebar.

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

    Hubungan: Berbanding Terbalik.

    Penjelasan: Semakin banyak pengguna yang Anda uji (sampel meningkat), semakin kecil Standard Error-nya. Hal ini membuat interval semakin sempit (presisi meningkat). Dalam kasus UX ini, hanya dengan 12 pengguna, interval kita relatif lebar karena ketidakpastiannya masih tinggi.

3 ). Tugas 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:

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

Tasks:

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

3.1 Menghitung Proporsi Sampel

(\(\hat{p}\))Proporsi sampel adalah rasio antara jumlah pengguna yang mengklik dengan total pengguna dalam eksperimen. \(\hat{p} = \frac{x}{n} = \frac{156}{400} = 0.39 \text{ atau } 39\%\)

3.2 Perhitungan Confidence Interval untuk Proporsi

Rumus yang digunakan adalah Normal Approximation (Z-Interval for Proportions):\(\hat{p} \pm Z \times \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}}\)

Standard Error (\(SE\)) dihitung sebagai berikut:\(SE = \sqrt{\frac{0.39 \times 0.61}{400}} = \sqrt{0.00059475} \approx 0.02439\)

Estimasi berdasarkan Tingkat Kepercayaan
Confidence_Level Z_score Margin_of_Error Lower_Bound Upper_Bound
90% 1.645 4.01% 34.99% 43.01%
95% 1.960 4.78% 34.22% 43.78%
99% 2.576 6.28% 32.72% 45.28%

3.3 Visualisasi

library(ggplot2)
library(plotly)
library(scales)

# 1. Siapkan data untuk plotting 
# Berdasarkan p_hat = 0.39 dan MOE yang telah dihitung
plot_data <- data.frame(
  Level = factor(c("90%", "95%", "99%"), levels = c("90%", "95%", "99%")),
  Mean = c(0.39, 0.39, 0.39),
  Lower = c(0.3499, 0.3422, 0.3272),
  Upper = c(0.4301, 0.4378, 0.4528)
)

# Tambahkan teks
plot_data$hover_text <- paste0(
  "Level: ", plot_data$Level,
  "\nMean: ", percent(plot_data$Mean, 0.1),
  "\nRange: [", percent(plot_data$Lower, 0.1), " - ", percent(plot_data$Upper, 0.1), "]"
)

# 2. Membuat Visualisasi Dasar dengan ggplot
p <- ggplot(plot_data, aes(x = Level, y = Mean, text = hover_text)) +
  # Rentang CI
  geom_errorbar(aes(ymin = Lower, ymax = Upper, color = Level), 
                width = 0.2, size = 0.8, show.legend = FALSE) +
  # Titik rata-rata (dibuat simpel untuk interaktivitas)
  geom_point(size = 2.5, color = "black", fill = "white", shape = 21, stroke = 1) +
  # Estetika Tema dan Label
  scale_color_manual(values = c("#E41A1C", "#377EB8", "#4DAF4A")) + # Skema Set1 sama persis
  labs(
    title = "Confidence Interval: Proporsi Klik (CTA)",
    x = "Tingkat Kepercayaan",
    y = "Click-Through Rate (%)"
  ) +
  scale_y_continuous(labels = percent_format(), limits = c(0.3, 0.5)) +
  theme_minimal(base_size = 10) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold", hjust = 0.5),
    panel.grid.minor = element_blank()
  )

# 3. Konversi ke Plotly 
ggplotly(p, tooltip = "text", width = 520, height = 350) %>%
  layout(
    showlegend = FALSE,
    margin = list(t = 60, b = 40, l = 40, r = 40) # Memberi ruang agar label tidak terpotong
  ) %>%
  config(
    displayModeBar = "hover", 
    modeBarButtonsToRemove = c(
      "zoom2d", "pan2d", "select2d", "lasso2d", 
      "zoomIn2d", "zoomOut2d", "autoScale2d", "resetScale2d"
    ),
    displaylogo = FALSE
  )

3.4 Pengaruh Tingkat Kepercayaan dalam Pengambilan Keputusan

Dalam pengembangan produk, pemilihan tingkat kepercayaan (Confidence Level) adalah tentang menyeimbangkan risiko dan kecepatan:

Tingkat Kepercayaan Tinggi (99%):

  • Kapan digunakan: Digunakan saat perubahan desain melibatkan risiko besar, misalnya merombak alur pembayaran (checkout). Kita ingin sangat yakin bahwa estimasi kita tidak salah sebelum melakukan investasi besar.

  • Konsekuensi: Interval akan melebar. Jika batas bawah (32.7%) masih dianggap menguntungkan dibanding desain lama, maka keputusan “Luncurkan” sangat aman secara statistik.

  • Tingkat Kepercayaan Standar (95%): Kapan digunakan:* Standar industri untuk sebagian besar eksperimen produk. Memberikan keseimbangan yang adil antara akurasi dan kepastian.

  • Tingkat Kepercayaan Rendah (90%): Kapan digunakan: Digunakan saat iterasi cepat (rapid prototyping) di mana biaya kesalahan rendah.

  • Konsekuensi: Interval lebih sempit (presisi tinggi), tapi ada peluang 10% bahwa CTR asli populasi sebenarnya berada di luar rentang tersebut.

  • Kesimpulan untuk Tim Produk: Jika desain CTA lama memiliki CTR sebesar 30%, maka pada ketiga tingkat kepercayaan di atas, desain baru secara konsisten menunjukkan hasil yang lebih baik (karena batas bawah terendah 32.7% masih > 30%). Desain ini layak untuk diimplementasikan.

4 ). Tugas 4

4.1 Identifikasi Uji Statistik

  • Tim A (Z-Test/Z-Interval): Menggunakan distribusi Z karena \(\sigma\) (standar deviasi populasi) diketahui secara pasti.

  • Tim B (t-Test/t-Interval): Menggunakan distribusi t karena \(\sigma\) tidak diketahui, sehingga mereka menggunakan \(s\) (standar deviasi sampel) sebagai estimasi.

4.2 Perhitungan Confidence Intervals (CI)

Rumus umum: \(\bar{x} \pm (\text{critical value}) \times \frac{\text{std dev}}{\sqrt{n}}\) Di mana \(\frac{24}{\sqrt{36}} = \frac{24}{6} = 4\) (Standard Error untuk kedua tim).

Tim A (Z-Interval)Menggunakan nilai kritis \(Z\):

  • 90% (Z=1.645): \(210 \pm (1.645 \times 4) = [203.42, 216.58]\)

  • 95% (Z=1.96): \(210 \pm (1.96 \times 4) = [202.16, 217.84]\)

  • 99% (Z=2.576): \(210 \pm (2.576 \times 4) = [199.70, 220.30]\)

Tim B (t-Interval)Menggunakan nilai kritis \(t\) dengan derajat kebebasan \(df = n - 1 = 35\):

  • 90% (t=1.690): \(210 \pm (1.690 \times 4) = [203.24, 216.76]\)

  • 95% (t=2.030): \(210 \pm (2.030 \times 4) = [201.88, 218.12]\)

  • 99% (t=2.724): \(210 \pm (2.724 \times 4) = [199.10, 220.90]\)

4.3 Visualisasi Perbandingan (Representasi Data)

Berikut adalah perbandingan lebar rentang (Interval Width) antara kedua tim:

# Load library
library(ggplot2)
library(plotly)

# 1. Menyiapkan Data
data_ci <- data.frame(
  Team = rep(c("Team A (Z-Test)", "Team B (t-Test)"), each = 3),
  Level = rep(c("90% CI", "95% CI", "99% CI"), 2),
  Mean = 210,
  Lower = c(203.42, 202.16, 199.70,  # Team A
            203.24, 201.88, 199.10), # Team B
  Upper = c(216.58, 217.84, 220.30,  # Team A
            216.76, 218.12, 220.90)  # Team B
)

# 2. Membuat Visualisasi
ggplot(data_ci, aes(y = Level, x = Mean, color = Team)) +
  # Membuat garis interval (dumbbell style)
  geom_errorbarh(aes(xmin = Lower, xmax = Upper), 
                 height = 0.4, 
                 size = 1.2, 
                 position = position_dodge(width = 0.5)) +
  # Menambahkan titik rata-rata
  geom_point(position = position_dodge(width = 0.5), size = 3) +
  # Menambahkan garis vertikal sebagai baseline rata-rata
  geom_vline(xintercept = 210, linetype = "dashed", color = "darkgreen", alpha = 0.5) +
  # Menambahkan teks label angka di ujung interval
  geom_text(aes(x = Lower, label = Lower), 
            hjust = 1.2, position = position_dodge(width = 0.5), size = 3.5, color = "black") +
  geom_text(aes(x = Upper, label = Upper), 
            hjust = -0.2, position = position_dodge(width = 0.5), size = 3.5, color = "black") +
  # Pengaturan Tema dan Label
  labs(title = "Perbandingan Confidence Interval: Tim A vs Tim B",
       subtitle = "Tim B (t-test) memiliki interval lebih lebar karena ketidakpastian standar deviasi",
       x = "API Latency (ms)",
       y = "Confidence Level",
       color = "Metode") +
  theme_minimal() +
  scale_color_manual(values = c("#2E86C1", "#E67E22")) +
  theme(legend.position = "top",
        plot.title = element_text(face = "bold", size = 14))

4.4 Interpretasi Hasil

Meskipun nilai rata-rata (\(\bar{x}\)) dan deviasi standarnya sama-sama 24, interval Tim B selalu lebih lebar daripada Tim A karena alasan berikut:

  1. Ketidakpastian Tambahan: Tim A memiliki informasi “pasti” mengenai populasi (\(\sigma\)). Tim B hanya memiliki estimasi (\(s\)). Distribusi t memberikan “hukuman” berupa rentang yang lebih lebar untuk mengompensasi ketidakpastian estimasi standar deviasi tersebut.

  2. Karakteristik Distribusi: Distribusi t memiliki ekor yang lebih tebal (heavier tails) dibandingkan distribusi Z. Ini berarti nilai kritis \(t\) akan selalu lebih besar daripada nilai kritis \(Z\) untuk ukuran sampel yang terbatas.

  3. Ukuran Sampel: Seiring bertambahnya \(n\), nilai \(t\) akan semakin mendekati \(Z\). Namun, pada \(n=36\), perbedaan tersebut masih terlihat nyata dalam perhitungan presisi.

5 ). Tugas 5

5.1 Identifikasi Jenis Confidence Interval dan Uji Statistik

  • Jenis Interval: One-sided Lower Confidence Interval. Hal ini karena manajemen hanya tertarik pada batas bawah (lower bound) untuk memastikan bahwa proporsi pengguna setidaknya (minimal) 70%.

  • Uji Statistik: Z-test for Proportions. Kita menggunakan distribusi Z karena ukuran sampel cukup besar (\(n=250\)) untuk memenuhi asumsi normalitas (uji proporsi).

5.2 Perhitungan One-sided Lower Confidence Interval

  • \(n = 250\)

  • \(x = 185\)

  • \(\hat{p}\) (proporsi sampel) = \(185 / 250 = 0.74\) (atau 74%)

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

5.3 Visualisasi

library(ggplot2)
library(plotly)

# Data Perhitungan
data_saas <- data.frame(
  Level = c("90% CI", "95% CI", "99% CI"),
  LowerBound = c(70.45, 69.44, 65.56),
  Estimate = 74
)

# Visualisasi
ggplot(data_saas, aes(y = Level, x = Estimate)) +
  # Garis interval dari Lower Bound sampai ke Estimate (dan seterusnya ke kanan)
  geom_errorbarh(aes(xmin = LowerBound, xmax = 80), 
                 height = 0.3, size = 1.5, color = "#2E86C1") +
  # Titik Estimasi (74%)
  geom_point(size = 4, color = "red") +
  # Garis Target 70%
  geom_vline(xintercept = 70, linetype = "dashed", color = "darkgreen", size = 1) +
  annotate("text", x = 70.5, y = 3.5, label = "Target = 70%", color = "darkgreen", fontface = "bold") +
  # Label angka
  geom_text(aes(x = LowerBound, label = paste0(LowerBound, "%")), 
            vjust = -1.2, size = 4, fontface = "bold") +
  labs(title = "One-Sided Lower Confidence Intervals (SaaS Feature)",
       subtitle = "Estimasi Proporsi Pengguna Premium: 74%",
       x = "Persentase Pengguna (%)", y = "") +
  theme_minimal()

5.4 Apakah Target 70% Terpenuhi secara Statistik?

  • Pada Tingkat Kepercayaan 90%: YA. Batas bawah adalah 70.45%, yang berada di atas target 70%. Kita yakin 90% bahwa proporsi sebenarnya setidaknya 70.45%.

  • Pada Tingkat Kepercayaan 95%: TIDAK (Tipis). Batas bawah adalah 69.44%. Meskipun estimasi sampel kita 74%, secara statistik pada tingkat kepercayaan ini, ada kemungkinan proporsi sebenarnya turun sedikit di bawah 70%.

  • Pada Tingkat Kepercayaan 99%: TIDAK. Batas bawah adalah 65.56%.

Kesimpulan untuk Manajemen: Target 70% tercapai pada tingkat kepercayaan 90%, namun jika manajemen menginginkan kepastian yang lebih tinggi (95% atau 99%), data saat ini belum cukup kuat untuk menjamin bahwa angka minimal 70% telah terpenuhi.