1 Practical Statistics

Practical Statistics berisi kaidah statistika yang banyak diterapkan dalam praktik data science agar dapat memahami dan mengolah data dengan tepat. Secara umum, Practical Statistics terbagi 2, berdasarkan kegunaannya:

  • Descriptive Statistics: Statistika deskriptif banyak digunakan dalam eksploratory data analysis (EDA). Menggambarkan karakteristik yang dimiliki oleh data.
  • Inferential Statistics: Statistika inferensial digunakan untuk menarik kesimpulan/menduga populasi berdasarkan data sampel yang ada.

Berikut adalah mindmap dari Practical Statistics yang akan kita pelajari:

2 Study Case: Retail Analysis

Pertumbuhan supermarket di kota-kota besar meningkat setiap tahunnya dan kompetisi pasar juga tinggi. Kita sebagai tim data diminta untuk menganalisa performa retail milik perusahaan. Data tersimpan dalam folder dat_input dengan nama file retail.RDS.

Read Data

Fungsi readRDS() untuk membaca file ekstensi RDS, yaitu object di R yang disimpan ke dalam sebuah file. Cara menyimpan object menjadi file RDS dengan fungsi saveRDS()

retail <- readRDS(file = "data_input/retail.RDS")
retail

Deskripsi kolom:

  • Row.ID = Nomer baris
  • Order.ID = Unique ID pemesanan
  • Order.Date = Tanggal pemesanan
  • Ship.Date = Tanggal pengiriman barang
  • Ship.Mode = Jenis pengiriman yang dipilih customer
  • Customer.ID = Unique ID customer
  • Segment = Segmentasi/kategori custoemr
  • Product.ID = Unique ID barang
  • Category = Kateogri barang
  • Sub.Category = Sub Kategori barang
  • Product.Name = Nama produk barang
  • Sales = Total sales dari barang yang dibeli oleh customer
  • Quantity = Total barang yang dibeli oleh customer
  • Discount = Total diskon yang diberikan kepada customer
  • Profit = Total keuntungan yang didapatkan oleh perusahaan
  • Ship.Duration = Durasi pengiriman
  • Month = Bulan transaksi
  • Day = Hari transaksi
  • IsWeekend = Apakah hari weekday atau weekend

3 Descriptive Statistics

Descriptive Statistics membantu kita menggambarkan karakteristik dari data, sehingga berguna dalam proses Exploratory Data Analysis (EDA).

  • Ukuran pemusatan data (Measure of Central Tendency)
  • Ukuran penyebaran data (Measure of Spread)
  • Hubungan antar data (Variable Relationship)

3.1 Measure of Central Tendency

Ukuran pemusatan data adalah suatu nilai yang cukup untuk mewakili seluruh nilai pada data.

3.1.1 Mean

Cara paling umum untuk membuat perkiraan nilai tunggal dari data yang banyak adalah dengan merata-ratakannya.

  • Formula:

\[\frac{\sum{x_i}}{n}\]

  • Fungsi pada R: mean()

Contoh:

Berapa rata-rata profit dari keseluruhan data retail yang kita miliki?

mean(retail$Profit)
#> [1] 28.6569
  • Sifat nilai mean: sensitif terhadap outlier

Outlier adalah nilai ekstrim yang jauh dari observasi lainnya. Kurang tepat apabila menggunakan nilai mean yang diketahui ada data outliernya.

Contoh lain:

Ada sebuah Kantor Cabang BCA di daerah Sunter yang merekap jumlah pengunjung per bulan

Dengan nilai mean:

pengunjung <- c(55, 50, 40, 70, 60, 45, 35, 35, 60, 1000, 100, 70)
mean(pengunjung)
#> [1] 135

Apakah nilai mean di atas dapat diandalkan? Tidak selamanya bisa diandalkan

Masalah ini dapat diatasi oleh nilai median atau trimed mean.

mean(pengunjung, trim = 0.1)
#> [1] 58.5

3.1.2 Median

Median atau nilai tengah diperoleh dengan mengurutkan data terlebih dahulu kemudian mencari nilai tengah dari data.

  • Baik untuk data yang memiliki outlier atau berdistribusi skewed (condong kiri/kanan)
  • Fungsi pada R: median()

Mari hitung ulang nilai pusat data profit dengan median:

median(pengunjung)
#> [1] 57.5

Nilai mean profit = 135, sedangkan median profit = 57.5

# opsional: cara kerja nilai median
sort(pengunjung)
#>  [1]   35   35   40   45   50   55   60   60   70   70  100 1000

Nilai tengahnya berada diantara 55 & 60. Kedua nilai tersebut akan dicari rata2nya:

(55+60)/2
#> [1] 57.5

3.1.3 Modus (Mode)

Modus berguna untuk mencari nilai yang paling sering muncul (frekuensi tertinggi).

  • Modus digunakan untuk data kategorik
  • R tidak memiliki fungsi built-in

Contoh:

Tipe Ship.Mode apa yang paling sering digunakan pada data retail?

Untuk mencari tahu hal tersebut, kita juga dapat membuat fungsi custom untuk mendapatkan nilai modus:

# PENTING: run chunk keseluruhan secara bersamaan
most <- function(x){
  # membuat tabel frekuensi
  table_x <- table(x)
  
  # mengurutkan tabel
  sort_table_x <- sort(table_x, decreasing = TRUE)
  
  # mengambil kategori
  name <- names(sort_table_x)
  
  # mengambil kategori dengan frekuensi terbesar
  name[1]
}

Menggunakan fungsi most():

most(retail$Ship.Mode)
#> [1] "Standard Class"

3.2 Measure of Spread

Ukuran penyebaran data mewakili seberapa menyebar atau beragam data kita.

3.2.1 Variance

Variance menggambarkan seberapa beragam suatu data numerik tunggal menyebar dari pusat datanya.

  • Formula variance:

\[var = \frac{\sum(X_i - \bar{X})^2}{n-1}\]

  • Fungsi di R: var()

Contoh:

Toko retail ini sedang menyeleksi daerah mana yang cocok untuk cabang baru mereka. Mereka mengumpulkan informasi harga sewa bagnunan di daerah A dan B sebagai berikut:

harga_A <- c(400,410,420,400,410,420,400,410,420,400,410,420,400)
harga_B <- c(130,430,650,540,460,320,380,550,650,470,330,140,270)

Setelah dibandingkan, rata-rata harga bangunan kedua daerah sama:

mean(harga_A)
#> [1] 409.2308
mean(harga_B)
#> [1] 409.2308

Mari bandingkan dari sisi lain, yaitu tingkat keberagaman data (variance). Daerah manakah yang harganya lebih bervariansi?

var(harga_A)
#> [1] 74.35897
var(harga_B)
#> [1] 28707.69

Karakteristik:

  • Skala variance dari 0 sampai tak hingga. Semakin besar nilainya maka artinya semakin menyebar dari pusat data (mean).

  • Variance memiliki satuan kuadrat, sehingga tidak dapat langsung diinterpretasikan. Biasanya digunakan untuk membandingkan dengan nilai var lain dengan satuan yang sama.

  • Nilai variansi sangat bergantung dengan skala data

Kasus: Di bawah ini, data mana yang lebih bervariasi?

profit_usd <- retail$Profit
profit_idr <- retail$Profit * 14000
# cek variance
var(profit_idr)
#> [1] 10756048418854
var(profit_usd)
#> [1] 54877.8

Diskusi: Apakah bisa kita simpulkan profit_idr lebih bervariasi daripada profit_usd?

Jika dilihat dari nilai var() memang lebih besar, akan tetapi perlu diperhatikan bahwa sebenarnya nilai profit_idr itu sama dengan nilai profit_usd.

3.2.2 Standard Deviation

Standard deviation menggambarkan seberapa jauh simpangan nilai yang dianggap umum, dihitung dari titik pusat (mean) nya. Kita dapat menentukan apakah suatu nilai dikatakan menyimpang dari rata-rata namun masih dikatakan umum, atau sudah tidak umum.

Standard deviation dapat diinterpretasikan karena satuannya sudah sama seperti satuan data aslinya.

  • Formula standar deviasi:

\[sd = \sqrt{var}\]

  • Fungsi di R: sd()

Mari kita coba hitungg standar devisiasi untuk kedua harga di bawah ini.

harga_A <- c(400,410,420,400,410,420,400,410,420,400,410,420,400)
harga_B <- c(130,430,650,540,460,320,380,550,650,470,330,140,270)
# standar deviasi harga_A & harga_B
sd(harga_A)
#> [1] 8.623165
sd(harga_B)
#> [1] 169.4334
mean(harga_A)
#> [1] 409.2308
mean(harga_B)
#> [1] 409.2308

Interpretasi: mean +- sd

  • Harga sewa pada daerah A umumnya jatuh pada interval 409.2308 +- 8.623
  • Harga sewa pada daerah B umumnya jatuh pada interval 409.2308 +-169.433

Apabila kita ditawarkan suatu bangungan di daerah B dengan harga 800, apakah harga tersebut masih digolongkan wajar?

# hitung batas bawah dan atas dari harga wajar daerah B
409.2308 + 169.43
#> [1] 578.6608

DIVE DEEPER: Diskusi

Dikumpulkan harga saham_A dan saham_B selama 20 periode terakhir.

saham_A <- c(1000,1200,1150,1000,950,900,1200,1300,1400,1450,1500,1600,1400,1250,1400,1600,1700,1300,1400,1300)
saham_B <- c(1300,1350,1320,1310,1280,1230,1250,1260,1280,1300,1320,1340,1300,1270,1280,1300,1320,1400,1300,1290)

Victor adalah seorang investor pemula. Bantulah Victor untuk menentukan saham mana yang lebih baik dipilih untuk investasi! Gunakan nilai mean dan standar deviasi.

Berapa rata-rata harga tiap saham?

mean(saham_A)
#> [1] 1300
mean(saham_B)
#> [1] 1300

Saham mana yang memiliki volatilitas lebih tinggi?

Note: Volatilitas menunjukkan seberapa fluktuatif (naik/turunnya) sebuah nilai saham

sd(saham_A)
#> [1] 223.6068
sd(saham_B)
#> [1] 37.41657

Kesimpulan: …

  1. Untuk masing-masing kasus di bawah, tentukan bagaimana kondisi ideal untuk nilai mean dan variancenya (tinggi/rendah):

a. Saya sebagai investor pemula tidak memiliki modal yang banyak untuk membeli saham dan ingin memilih saham dengan resiko rendah. Bagaimana keadaan harga saham yang saya harapkan?

  • Mean: (rendah)
  • Variansi: (rendah)

b. Saya sebagai tim marketing di suatu supermarket tentunya ingin memperoleh profit semaksimal mungkin. Bagaimana keadaan profit yang saya harapkan?

  • Mean: (tinggi)
  • Variansi: (rendah)

c. Saya sebagai student di Algoritma yang akan mengerjakan quiz untuk keseluruhan course. Bagaimana keadaan score quiz yang saya harapkan?

  • Mean: (tinggi)
  • Variansi: (rendah)

3.2.3 Range and IQR (Five Number Summary)

Five number summary (ringkasan lima angka) adalah satu set statistika deskriptif numerik yang terdiri dari lima angka:

  • Minimum: nilai terkecil
  • Kuartil 1 (Q1): nilai ke 25%
  • Kuartil 2 (Q2 atau median): nilai ke 50% (nilai tengah)
  • Kuartil 3 (Q3): nilai ke 75%
  • Maksimum: nilai terbesar

Gunakan fungsi summary() untuk merangkum nilai sebaran data tersebut.

Contoh:

Deskripsikan distribusi Sales dari data retail

summary(retail$Sales)
#>      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
#>     0.444    17.280    54.490   229.858   209.940 22638.480

Dari summary tersebut, kita bisa mengetahui nilai sebaran:

  • Range: selisih antara nilai maksimum dan minimum

Range dari Ship.Duration adalah 7

summary(retail$Ship.Duration)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.000   3.000   4.000   3.958   5.000   7.000
  • Interquartile Range (IQR): selisih antara Q3 (data ke 75%) dan Q1 (data ke 25%)

IQR dari Ship.Duration adalah 2

IQR(retail$Ship.Duration)
#> [1] 2

3.2.4 Boxplot

Distribusi data numerik pada umumnya divisualisasikan dengan boxplot, yang meliputi komponen:

  • Box: menggambarkan Q1, Q2 (median), dan Q3
  • Whisker: pagar bawah dan atas (PENTING: hati-hati, nilai ini bukan nilai minimum dan maksimum data)
  • Data outliers: nilai ekstrim data yang berada di luar pagar bawah dan atas

Beberapa hal yang harus diperhatikan dalam boxplot:

  • Banyaknya data dari Q1 ke nilai minimum (bukan pagar bawah) adalah 25%
  • Banyaknya data dari Q1 ke Q2 adalah 25%
  • Banyaknya data dari Q2 ke Q3 adalah 25%
  • Banyaknya data dari Q1 ke Q3 (IQR) adalah 50%
  • Banyaknya data dari Q3 ke nilai maksimum (bukan pagar atas) adalah 25%

Insight yang dapat diperoleh dari boxplot:

  1. Pusat data dengan median (Q2)
  2. Sebaran data dengan IQR (lebar kotak)
  3. Outlier, nilai ekstrim pada data
  4. Bentuk distribusi data:
  • box yang berada ditengah = distribusi normal (memadat di tengah)
  • box yang mendekati daerah kiri/kanan (bawah/atas) = distribusi skewed
  • bila median mendekati Q1 maka nilai pada data cenderung rendah.

Contoh:

Visualisasikan sebaran data Quantity dari data retail dengan boxplot()! Analisis informasi yang didapatkan.

boxplot(retail$Quantity, horizontal = T)

Contoh lain:

Selain untuk melihat satu value saja, boxplot juga dapat digunakan untuk melihat dua value. Mari kita coba visualisasikan sebaran data Quantity berdasarkan Category transaksi yan dilakukan.

boxplot(formula = Quantity ~ Category, data = retail)

3.3 Variable Relationship

Ukuran yang digunakan untuk melihat hubungan linear antara dua variabel numerik.

3.3.1 Covariance

Covariance menunjukkan bagaimana variansi 2 data (variable yang berbeda) bergerak bersamaan.

  • Formula Covariance:

\[Cov(X, Y) = \frac{1}{n-1}\sum\limits^n_{i=1}(X_i - \mu_X)(Y_i - \mu_Y)\]

  • Fungsi di R: cov()

  • Nilai covariance positif mengindikasikan pergerakan nilai yang searah / berbanding lurus.
  • Nilai covariance negatif mengindikasikan pergerakan nilai yang berbalik arah.

Contoh:

Hitunglah covariance antara saham_A dan saham_B! Bagaimana hubungannya?

saham_A <- c(1000,1200,1150,1000,950,900,1200,1300,1400,1450,1500,1600,1400,1250,1400,1600,1700,1300,1400,1300)
saham_B <- c(1300,1350,1320,1310,1280,1230,1250,1260,1280,1300,1320,1340,1300,1270,1280,1300,1320,1400,1300,1290)
cov(x = saham_A, y = saham_B)
#> [1] 2657.895

Kelemahan: Seperti variance, covariance tidak memiliki batasan nilai untuk mengukur kekuatan hubungan antar dua variabel (-inf s.d inf), sehingga kita hanya bisa mengetahui apakah hubungannya positif atau negatif. Oleh karena itu, hadir correlation.

3.3.2 Correlation

Correlation memampatkan nilai covariance yang dari -inf s.d inf menjadi -1 s.d 1 sehingga bisa diukur kekuatan hubungan antar data (variable).

  • Formula Correlation:

\[Cor(X,Y) = \frac{Cov(X,Y)}{\sqrt{Var(X)Var(Y)}}\]

  • Fungsi di R: cor()

  • Nilai korelasi mengindikasikan kekuatan hubungan antara dua variable numerik sebagai berikut:

Bila korelasi dua variable numerik mendekati: * -1 artinya korelasi negatif kuat * 0 artinya tidak berkorelasi * 1 artinya korelasi positif kuat

Contoh:

Adakah korelasi antara saham_A dan saham_B, bagaimana hubungan dan kekuatannya?

cor(x = saham_A, y = saham_B)
#> [1] 0.3176792

Jawaban: Weak Positive Corellation

Visualisasi korelasi dengan scatter plot:

# scatter plot
# run seluruh code bersamaan
plot(saham_A, saham_B)
abline(lm(saham_B ~ saham_A),
       col = 'red') 

Ilustrasi correlation:

Diskusi Bersama

Victor adalah seorang investor dan memiliki modal untuk membeli dua saham sekaligus. Victor telah mengumpulkan data historis 5 saham potensial dan melihat pergerakannya:

Melihat matriks korelasi antar saham dengan fungsi cor()

# buat matriks korelasi data
cor(saham)
#>            saham_A     saham_B      saham_C      saham_D    saham_E
#> saham_A  1.0000000  0.31767918 -0.202135392  0.434056705  1.0000000
#> saham_B  0.3176792  1.00000000  0.014539664 -0.112781955  0.3176792
#> saham_C -0.2021354  0.01453966  1.000000000 -0.005651362 -0.2021354
#> saham_D  0.4340567 -0.11278195 -0.005651362  1.000000000  0.4340567
#> saham_E  1.0000000  0.31767918 -0.202135392  0.434056705  1.0000000

Visualisasi korelasi dapat menggunakan fungsi ggcorr() (visualisasi heatmap) dari package GGally:

# install package di console:
# install.packages("GGally")

# load library:
library(GGally)

# visualisasi:
ggcorr(saham, label = T)

Diskusi: Berdasarkan korelasi di atas, dua saham mana yang akan Victor beli sekaligus?

Saham A & Saham E, karena korelasinya sangat tinggi.

4 Inferential Statistics

Inferential Statistics membantu kita menarik kesimpulan tentang keseluruhan data (populasi) dengan menggunakan sebagian informasinya saja (sampel).

Setiap data memiliki distribusi. Distribusi data yang spesial dan berperan dalam inferential statistics adalah distribusi normal.

4.1 Normal Distribution

Karakteristik:

  • Kurva berbentuk lonceng simetris, artinya puncaknya adalah titik pusat (mean = median)
  • Luas area di bawah kurva = 1 (menyatakan probabilitas)
  • Persebaran data:
    • 68% data berada di rentang +- 1 standar deviasi dari mean
    • 95% data berada di rentang +- 2 standar deviasi dari mean
    • 99.7% data berada di rentang +- 3 standar deviasi dari mean
  • Standar normal baku adalah distribusi normal dimana mean = 0 dan standar deviasi = 1.

Distribusi normal banyak digunakan pada inferensial statistik karena dicetuskannya Central Limit Theorem. Semakin bertambahnya jumlah sampel yang diambil secara acak (random), maka distribusi rata-rata sampel akan mengikuti distribusi normal.

Karakteristik distribusi normal inilah yang dimanfaatkan untuk penghitungan inferensial statistik:

  • Menghitung Probabilitas:
    • Probability Mass Function -> diskrit/kategorik
    • Probability Density Function -> kontinu/numerik
  • Membuat Confidence Interval
  • Uji Hipotesis

4.2 Probability Mass Function

  • Menghitung peluang untuk data diskrit, contoh:
    • peluang hujan/tidak hujan
    • peluang produk yang terjual
  • Formula: jumlah kejadian terjadi dibagi dengan jumlah kejadian total

Contoh:

Dari data Retail, berapa peluang (proporsi) pelanggan membeli produk dari Category Technology?

Hint:

  • table() membuat tabel frekuensi (count)
  • prop.table() membuat tabel proporsi dari tabel frekuensi
prop.table(table(retail$Category))
#> 
#>       Furniture Office Supplies      Technology 
#>       0.2122273       0.6029618       0.1848109

4.3 Probability Density Function

  • Menghitung probability data kontinu, contohnya:
    • tinggi badan
    • curah hujan
    • pendapatan/keuntungan
  • Tahapan:
    1. Hitung Z-score (ubah nilai data asli ke standar normal baku = Z-score)
    2. Hitung peluang (area di bawah kurva) berdasarkan Z-score

Z-score merupakan sebuah nilai yang merepresentasikan berapa standard deviasi data tersebut menyimpang dari rata-ratanya

  • Formula Z-score:

\[Z = \frac{x-\mu}{\sigma}\]

Keterangan:

  • Z = Z-score
  • x = titik data
  • \(\mu\) = mean
  • \(\sigma\) = standar deviasi

Contoh

Tinggi badan pria dewasa di Indonesia berdistribusi normal dengan rata-rata 165 cm dan standar deviasi 10 cm. Berapa peluang pria dewasa di Indonesia memiliki tinggi badan > 180 cm?

Diketahui:

  • mean = 165 cm
  • standar deviasi = 10 cm
  • titik data = 180 cm

Cara 1

Tahapan 1: Hitung Z-score

z_score <- (180 - 165) / 10
z_score
#> [1] 1.5

Tahapan 2: Ubah menjadi peluang

Dalam merubah Z-Score menjadi peluang, kita dapat memanfaatkan fungsi pnorm().

pnorm(q = z_score, lower.tail = F)
#> [1] 0.0668072

Cara 2

Pada cara 2, kita akan langsung menggunakan fungsi pnorm() dan memanfaatkan semua parameter yang ada.

pnorm(q = 180,
      mean = 165,
      sd = 10,
      lower.tail = F)
#> [1] 0.0668072

Jawaban: Peluang pria dewasa di Indonesia memiliki tinggi badan > 180 cm adalah 6.6%

4.4 Confidence Interval (CI)

Confidence interval (selang kepercayaan) berguna untuk menduga nilai mean populasi dengan sebuah interval. Menebak dengan sebuah interval akan meminimalisir error dibandingkan hanya dengan menebak satu nilai.

  • Formula:

\[CI = \bar{x} \pm Z_{\frac{\alpha}{2}}*SE\]

  • Keterangan:
    • \(\bar{x}\) = rata-rata sampel
    • \(Z_{\frac{\alpha}{2}}\) = Z-score ketika alpha/2
      • Tambahan: alpha dibagi 2 karena ingin membuat batas bawah dan batas atas
    • \(\alpha\) = tingkat error yang ditolerasi
    • tingkat kepercayaan = 1-\(\alpha\)
    • SE = standard error

SE mengukur kebaikan sampel dalam mewakilkan populasi. Semakin kecil, maka sampel semakin representatif (baik).

\[SE = \frac{\sigma}{\sqrt n}\]

  • Ket:
    • \(\sigma\) = standar deviasi populasi
    • \(n\) = jumlah sampel
  • Tahapan:
    1. Hitung nilai mean sampel dan standar deviasi populasi
    2. Hitung standar error (SE)
    3. Tentukan tingkat kepercayaan dan \(\alpha\) (biasanya \(\alpha\) = 5%)
    4. Tentukan nilai \(Z_{\frac{\alpha}{2}}\)
    5. Hitung confidence interval

Contoh:

Suatu retail memiliki 1000 cabang dan ingin memperkirakan interval durasi pelayan pelanggan pada setiap kasir. Total data yang berhasil dikumpulkan sementara waktu dari Retail tersebut adalah 300 cabang, dimana data tersebut memiliki durasi pelayan selama 3 bulan terakhir dengan rata-rata durasi 500 detik dan standar deviasi 100 detik.

Berapakah confidence interval untuk rata-rata durasi pelayanan? Gunakan tingkat kepercayaan 95%.

  • jumlah sampel (n) = 300 cabang
  • mean = 500 detik
  • sd = 100 detik

Tahapan 1: Hitung nilai SE

SE <- 100 / sqrt(300)
SE
#> [1] 5.773503

Tahapan 2: Tentukan tingkat kepercayaan dan alpha

Tambahan panduan dalam menentukan alpha,

  • alpha semakin tinggi, CI semakin sempit
  • alpha semakin rendah, CI semakin lebar
  • note: biasanya CI 95% dan alpha 5% (bergantung pada bisnis insight/problem)
alpha <- 0.05

Tahapan 3: Hitung nilai Z

Untuk menghitung nilai Z kita akan menggunakan fungsi qnorm(), dimana fungsi tersebut akan mengubah nilai probability menjadi Z.

  • qnorm() untuk mencari titik di normal baku (q) dari sebuah peluang (p) (z –> probability)
  • pnorm() untuk mencari peluang (p) dari sebuah titik di normal baku (q) (probability –> z)

Pada fungsi qnorm() akan kita isi dengan nilai peluan dari hasil alpha/2, alpha dibagi 2 karena ingin membuat batas bawah dan batas atas (dalam dunia statistika dikenal sebagai two-tailed)

knitr::include_graphics("assets/two-tailed.png")

Z <- qnorm(alpha/2)
Z
#> [1] -1.959964
Z_abs <- abs(Z)
Z_abs
#> [1] 1.959964
  1. Mendapatkan nilai CI

Sama seperti menentukan nilai standar devisasi, dalam menentukan nilai CI kita akan mencari batas atas dan batas bawah.

# CI batas atas
CI_atas <- 500 + Z_abs * SE
CI_atas
#> [1] 511.3159
# CI batas bawah
CI_bawah <- 500 - Z_abs * SE
CI_bawah
#> [1] 488.6841

Pelayanan pelanggan pada setiap kasir berkisar antara 488.6841 sampai 511.3159, dengan tingkat kepercayaan sebesar 90%

4.5 Uji Hipotesis

Uji hipotesis bertujuan untuk menguji dugaan. Uji hipotesis sering disebut juga sebagai uji signifikansi yang digunakan untuk menguji apakah suatu treatment memberikan perubahan/pengaruh signifikan terhadap suatu kondisi.

Istilah-istilah:

  • Hipotesis: dugaan sementara yang harus diuji
    • \(H_0\) / null hypothesis:
      • kondisi awal
      • memiliki unsur kesamaan (=, >=, <=)
    • \(H_1\) / alternative hypothesis:
      • kontradiktif dengan \(H_0\)

Contoh:

  1. Hipotesis dua arah (!=)
  • \(H_0\): Pemakaian masker tidak memberikan pengaruh pada laju penyebaran virus corona (=)
  • \(H_1\): Pemakaian masker memberikan pengaruh pada laju penyebaran virus corona (!=)
  1. Hipotesis satu arah (<)
  • \(H_0\): Penambahan kasir tidak memberikan perbedaan durasi pembayaran (>=)
  • \(H_1\): Penambahan kasir menurunkan durasi pembayaran (<)
  1. Hipotesis satu arah (>)
  • \(H_0\): Penerapan diskon tidak memberikan perbedaan jumlah pembelian produk (<=)

  • \(H_1\): Penerapan diskon meningkatkan jumlah pembelian produk (>)

  • \(\alpha\):

    • tingkat signifikansi
    • umumnya 0.05
  • \(1-\alpha\): tingkat kepercayaan

  • \(p-value\):

    • akan dibandingkan dengan alpha untuk untuk mengambil keputusan
    • peluang data sampel berada pada bagian sangat ekstrim/berbeda signifikan dengan keadaan normal.

Pengambilan keputusan:

  • Jika \(p-value\) < \(\alpha\), maka tolak \(H_0\)
  • Jika \(p-value\) > \(\alpha\), maka gagal tolak \(H_0\)

Contoh:

4.5.1 Z-test

Uji hipotesis yang menggunakan Z-test bila:

  • standar deviasi populasi diketahui
  • jumlah sampel banyak (n > 30)

\[Z = \frac{\bar X-\mu}{SE}\]

  • Keterangan:
    • \(\bar{X}\) = rata-rata sampel baru
    • \(\mu\) = rata-rata sampel lama
    • SE = standard error

\[SE = \frac{\sigma}{\sqrt n}\]

Contoh Kasus

BCA merupakan salah satu Bank terbaik di Indonesia. Bila diketahui rata-rata likes dari suatu post di platform mereka sebesar 14000 likes dengan standar deviasi 5000 likes.

Demi meningkatkan likes dari tiap post, BCA memutuskan untuk menggunakan influencer sebagai brand ambassador pemasaran produk. Setelah menggunakan influencer, diambil 50 postingan acak yang ternyata memiliki rata-rata likes 17500.

Sebagai tim marketing, lakukan analisis apakah menggunakan jasa influencer secara signifikan meningkatkan customer engagement (dari sisi rata-rata jumlah likes) atau tidak? Gunakan tingkat kepercayaan 95%.

Diketahui,

  • mean awal = 14000 likes
  • SD dari mean awal = 5000 likes
  • n post = 50
  • mean akhir = 17500
  • alpha = 0.05

Jawab:

Tahapan 1: Tentukan Hipotesis

H0 (awal): jasa influencer tidak berpengaruh terhadap customer engagement (= 14000) H1 (tujuan): jasa influencer berpengaruh terhadap customer engagement (> 14000)

  • \(H_0\): mean likes = 14000 –> influencer tidak meningkatakan jumlah like
  • \(H_1\): mean likes > 14000 –> influencer meningkatkan jumlah like

Tahapan 2: Hitung p-value

Untuk menghitung nilai p-value kita akan memanfaatkan nilai Z dari rumus di atas, lalu nilai Z tersebut akan dimasukan kedalam fungsi pnorm()

# menghitung nilai SE
SE <- 5000 / sqrt(50)

# menghitung nilai z
Z <- (17500 - 14000) / SE
p_value <- pnorm(q = Z, 
                 lower.tail = F)

p_value
#> [1] 0.0000003715492

Tahapan 3: Bandingkan p-value dengan alpha

  • Jika \(p-value\) < \(\alpha\), maka tolak \(H_0\)
  • Jika \(p-value\) > \(\alpha\), maka gagal tolak \(H_0\)

p-value = 0.0000003715492 < alpha = 0.05

tolak H0

Tahapan 4: kesimpulan

Jasa influencer berpengaruh terhadap customer engagement

4.5.2 T-test

Uji hipotesis menggunakan T-test jika:

  • standar deviasi populasi tidak diketahui atau
  • jumlah sampel sedikit (n <= 30)

Bentuk T-distribution mirip dengan normal distribution, hanya saja lebih landai ketika jumlah sampel sedikit:

Contoh:

Quicker merupakan startup yang bertugas untuk membantu para startup lain mendapatkan dana hibah dari pemerintah. Umumnya, rata-rata lama proses penyerahan berkas hingga dana dicairkan adalah 215 hari.

Dikumpulkan data durasi proses pencairan dana dari 10 perusahaan startup yang menggunakan jasa Quicker sebagai berikut:

duration <- c(201, 200, 215, 212, 246, 220, 205, 195, 190, 200)

Apakah Quicker bisa secara signifikan mempercepat durasi pencairan dana hibah Gunakan tingkat kepercayaan 95%.

Jawab:

Tahapan 1: Tentukan Hipotesis

  • \(H_0\): mean durasi pencairan dana >= 215 hari (Quicker tidak memberikan efek pada durasi pencairan dana)
  • \(H_1\): mean durasi pencairan dana < 215 hari (Quicker mempercepat durasi pencairan dana)

Tahapan 2: Hitung P-value dengan t.test()

Untuk t.test R sudah memiliki fungsi built-in tersendiri:

Parameter yang dapat digunakan pada t.test():

  • x = objek yang berisikan data ataupun vector
  • mu = rata-rata dari nilai yang diperhitungkan
  • alternative = operator pembanding yang diberikan pada H1 atau alternative hipotesis. greater / less
t.test(x = duration, 
       mu = 215, 
       alternative = "less")
#> 
#>  One Sample t-test
#> 
#> data:  duration
#> t = -1.297, df = 9, p-value = 0.1134
#> alternative hypothesis: true mean is less than 215
#> 95 percent confidence interval:
#>      -Inf 217.7279
#> sample estimates:
#> mean of x 
#>     208.4

Thapan 3: Bandingkan P-value dengan alpha

p-value = 0.1134 > alpha = 0.05

Gagal Tolak HO

Tahapan 4: Kesimpulan

Quicker tidak memberikan efek pada durasi pencairan dana

Summary Day 2:

  • Probability dapat dihitung untuk data yang diskrit ataupun continue
    • Untuk data diskrit, nama metodenya adalah Probability Mass Function
      • prop.table() & table()
    • Untuk data continue, nama metodenya adalah Probability Density Function
      • Z-Score -> pnorm() -> mengubah nilai Z Score menjadi probability
  • Confidence Interval
    • Tujuannya untuk mencari tahu nilai interval pada populasi kita berdasarkan mean sample kita
    • Dalam mencari nilai CI kita akan memanfaatkan fungsi qnorm(), kita menggunakan fungsi tersebut untuk mencari titik normal baku karena nilai yang kita miliki adalah probability berdsar penentuan alpha.
  • Uji Hipotesis
    • Z-Test
      • Ketika jumlah samplenya > 30 & kita memiliki nilai SD
    • T-Test
      • Kalo kedua kondisi untuk Z-Test tidak dipenuhi
    • Value yang akan dibandinkan adalah nilai p-value dengan alpha
    • H0 -> Kondisi basis, sebelum kita melakukan eksperimen
    • H1 -> Kondisi dimana ketika kita sudah melakukan eksperimen