Distribusi sampel adalah distribusi probabilitas dari suatu statistik (seperti rata-rata, varians, atau proporsi) yang dihitung dari berbagai sampel yang diambil dari suatu populasi. Dalam kata lain, distribusi sampel menggambarkan bagaimana statistik yang kita hitung (misalnya, rata-rata sampel) bervariasi ketika kita mengambil banyak sampel dari populasi yang sama.
Konsep distribusi sampel sangat penting karena sebagian besar inferensi statistik (seperti estimasi parameter populasi dan pengujian hipotesis) bergantung pada pemahaman distribusi statistik sampel. Dalam hal ini, kita bisa memprediksi bagaimana statistik sampel akan berperilaku jika kita mengambil sampel secara berulang kali dari populasi yang sama.
Untuk membentuk distribusi sampel, kita perlu mengikuti langkah-langkah berikut: 1. Ambil sampel acak dari populasi. 2. Hitung statistik tertentu (misalnya rata-rata) dari sampel yang diambil. 3. Ulangi langkah 1 dan 2 untuk jumlah sampel yang banyak (misalnya 1000 sampel). 4. Distribusi statistik yang dihasilkan dari langkah 2 akan membentuk distribusi sampel.
Mari kita mulai dengan sebuah contoh sederhana untuk membayangkan distribusi sampel.
Misalkan kita memiliki populasi kecil berikut:
Populasi = {1, 2, 3, 4, 5}
Kita ingin menghitung distribusi rata-rata sampel untuk ukuran sampel n=2.
Kita akan mengambil semua kemungkinan kombinasi sampel yang bisa diambil dari populasi dengan ukuran sampel n=2:
Setelah mengambil sampel dan menghitung rata-rata untuk setiap sampel, kita bisa membuat distribusi rata-rata sampel sebagai berikut:
Ini adalah distribusi sampel rata-rata untuk ukuran sampel n=2.
Distribusi sampel memiliki beberapa karakteristik penting yang perlu dipahami:
Dalil Limit Pusat (CLT) menyatakan bahwa seiring dengan bertambahnya ukuran sampel (n → ∞), distribusi rata-rata sampel akan mendekati distribusi normal, bahkan jika populasi asalnya tidak terdistribusi normal.
Dengan kata lain, meskipun populasi asal memiliki distribusi yang tidak normal (misalnya, eksponensial atau uniform), rata-rata sampel yang diambil dari populasi ini akan mendekati distribusi normal jika ukuran sampel cukup besar.
Dalil Limit Pusat menyatakan bahwa jika \(X_1, X_2, \dots, X_n\) adalah sampel acak populasi dari distribusi apapun dengan rata-rata \(\mu\) dan varians \(\sigma^2\), maka rata-rata sampel:
\([\bar{X} = \frac{X_1 + X_2 + \dots + X_n}{n}]\)
akan mengikuti distribusi normal dengan:
\([E(\bar{X}) = \mu, \quad \text{dan} \quad \text{Var}(\bar{X}) = \frac{\sigma^2}{n}]\)
untuk \(n\) yang cukup besar, terlepas dari distribusi awal populasi.
Berikut adalah implementasi simulasi dalam R untuk membuktikan Dalil Limit Pusat pada beberapa distribusi awal yang berbeda.
set.seed(15)
k <- 1000 # jumlah ulangan
Penjelasan syntax:
set.seed(15): Menetapkan seed agar hasil simulasi
dapat direproduksi.
k <- 1000: Menentukan jumlah ulangan simulasi
(1000 kali).
Sebaran awal: Normal \((\mu = 0, \sigma^2 = 1)\). Berdasarkan Dalil Limit Pusat, rata-rata sampel akan mengikuti distribusi normal dengan \(N(0, \frac{1}{n})\).
n <- 10
x11 <- matrix(rnorm(n * k), k)
x11 <- apply(x11, 1, mean)
hist(x11, main = "Sebaran Percontohan Normal 10 Sampel")
mean(x11); var(x11)
## [1] -0.002779655
## [1] 0.1049205
Penjelasan Syntax:
n <- 10: Menentukan ukuran sampel (10).
matrix(rnorm(n * k), k): Membuat matriks dengan 1000
baris dan 10 kolom, diisi dengan angka dari distribusi normal.
apply(x11, 1, mean): Menghitung rata-rata setiap
baris.
hist(x11, main = "Sebaran Percontohan Normal 10 Sampel"):
Menampilkan histogram hasil simulasi.
mean(x11); var(x11): Menghitung rata-rata dan
varians dari hasil simulasi.
Ulangan dilakukan untuk n = 30 dan
n = 100, dengan kode yang sama.
n <- 30
x12 <- matrix(rnorm(n * k), k)
x12 <- apply(x12, 1, mean)
hist(x12, main = "Sebaran Percontohan Normal 30 Sampel")
mean(x12); var(x12)
## [1] 0.004575083
## [1] 0.0337004
n <- 100
x13 <- matrix(rnorm(n * k), k)
x13 <- apply(x13, 1, mean)
hist(x13, main = "Sebaran Percontohan Normal 100 Sampel")
mean(x13); var(x13)
## [1] 0.005533164
## [1] 0.009808944
Sebaran awal: Eksponensial \((\lambda = 1)\). Berdasarkan Dalil Limit Pusat, rata-rata sampel akan mengikuti distribusi normal dengan \(N(1, \frac{1}{(1^2)n})\).
n <- 10
x21 <- matrix(rexp(n * k), k)
x21 <- apply(x21, 1, mean)
hist(x21, main = "Sebaran Percontohan Eksponensial 10 Sampel")
mean(x21); var(x21)
## [1] 0.9974163
## [1] 0.09341337
Penjelasan Syntax:
rexp(n * k): Menghasilkan sampel dari distribusi
eksponensial dengan parameter λ=1= 1λ=1.
matrix(rexp(n * k), k): Membuat matriks dengan 1000
baris dan 10 kolom.
apply(x21, 1, mean): Menghitung rata-rata per
baris.
hist(x21, main = "Sebaran Percontohan Eksponensial 10 Sampel"):
Menampilkan histogram.
mean(x21); var(x21): Menghitung rata-rata dan
varians dari hasil simulasi.
Ulangan dilakukan untuk n = 30 dan
n = 100, dengan kode yang sama.
n <- 30
x22 <- matrix(rexp(n * k), k)
x22 <- apply(x22, 1, mean)
hist(x22, main = "Sebaran Percontohan Eksponensial 30 Sampel")
mean(x22); var(x22)
## [1] 1.007419
## [1] 0.03540545
n <- 100
x23 <- matrix(rexp(n * k), k)
x23 <- apply(x23, 1, mean)
hist(x23, main = "Sebaran Percontohan Eksponensial 100 Sampel")
mean(x23); var(x23)
## [1] 1.00021
## [1] 0.01018415
Sebaran awal: Seragam \(U(0,1)\). Berdasarkan Dalil Limit Pusat, rata-rata sampel akan mengikuti distribusi normal dengan \(N(0.5, \frac{1}{12n})\).
n <- 10
x31 <- matrix(runif(n * k), k)
x31 <- apply(x31, 1, mean)
hist(x31, main = "Sebaran Percontohan Seragam 10 Sampel")
mean(x31); var(x31)
## [1] 0.4989207
## [1] 0.008243281
Penjelasan Syntax:
runif(n * k): Menghasilkan sampel dari distribusi
seragam U(0,1)U(0,1)U(0,1).
matrix(runif(n * k), k): Membuat matriks dengan 1000
baris dan 10 kolom.
apply(x31, 1, mean): Menghitung rata-rata setiap
baris.
hist(x31, main = "Sebaran Percontohan Seragam 10 Sampel"):
Menampilkan histogram hasil simulasi.
mean(x31); var(x31): Menghitung rata-rata dan
varians dari hasil simulasi.
Ulangan dilakukan untuk n = 30 dan
n = 100, dengan kode yang sama.
n <- 30
x32 <- matrix(runif(n * k), k)
x32 <- apply(x32, 1, mean)
hist(x32, main = "Sebaran Percontohan Seragam 30 Sampel")
mean(x32); var(x32)
## [1] 0.4980883
## [1] 0.002778006
n <- 100
x33 <- matrix(runif(n * k), k)
x33 <- apply(x33, 1, mean)
hist(x33, main = "Sebaran Percontohan Seragam 100 Sampel")
mean(x33); var(x33)
## [1] 0.4995731
## [1] 0.000843557
Dari simulasi di atas, terlihat bahwa meskipun data awal berasal dari berbagai distribusi (Normal, Eksponensial, dan Seragam), rataan sampel mendekati distribusi normal ketika ukuran sampel (\(n\)) bertambah besar. Hal ini sesuai dengan Dalil Limit Pusat.
set.seed(123)
# Membangkitkan populasi normal, eksponensial, dan uniform
normal_population = rnorm(1000000) # Populasi Normal (1 juta elemen)
exponential_population = rexp(1000000) # Populasi Eksponensial (1 juta elemen)
uniform_population = runif(1000000) # Populasi Uniform (1 juta elemen)
normal_population berisi bilangan acak
yang terdistribusi normal.exponential_population berisi bilangan
acak yang terdistribusi eksponensial.uniform_population berisi bilangan
acak yang terdistribusi uniform.# Menampilkan histogram populasi untuk distribusi yang berbeda
hist(normal_population, main = "Populasi Normal") # Histogram untuk populasi normal
hist(exponential_population, main = "Populasi Eksponensial") # Histogram untuk populasi eksponensial
hist(uniform_population, main = "Populasi Uniform") # Histogram untuk populasi uniform
Fungsi hist() digunakan untuk menggambarkan
distribusi populasi yang telah dibangkitkan.
Populasi normal akan menunjukkan distribusi berbentuk lonceng simetris.
Populasi eksponensial akan lebih condong ke sisi kiri dengan ekor panjang ke kanan.
Populasi uniform akan tersebar merata di seluruh interval [0,1].
Ketiga distribusi ini memiliki bentuk yang berbeda dan akan menunjukkan seberapa beragam bentuk distribusi populasi yang bisa kita hadapi dalam dunia nyata.
set.seed(123)
k = 1000 # Jumlah eksperimen (sampel)
n = 10 # Ukuran sampel
normal_samples_10 = matrix(sample(normal_population, n*k), k) # Sampel dari populasi normal
exponential_samples_10 = matrix(sample(exponential_population, n*k), k) # Sampel dari populasi eksponensial
uniform_samples_10 = matrix(sample(uniform_population, n*k), k) # Sampel dari populasi uniform
k adalah jumlah eksperimen atau jumlah
sampel yang kita ambil.n adalah ukuran masing-masing sampel
(jumlah elemen dalam satu sampel).sample() digunakan untuk mengambil
sampel secara acak dari populasi yang telah dibangkitkan
(normal_population, exponential_population,
uniform_population).n elemen
yang diambil acak dari populasi, dan k
eksperimen dilakukan.normal_samples_10 berisi
10 sampel acak yang diambil dari populasi
normal.exponential_samples_10 berisi
10 sampel acak yang diambil dari populasi
eksponensial.uniform_samples_10 berisi
10 sampel acak yang diambil dari populasi
uniform.# Menghitung rata-rata untuk setiap sampel
normal_mean_10 = apply(normal_samples_10, 1, mean) # Rata-rata dari sampel normal
exponential_mean_10 = apply(exponential_samples_10, 1, mean) # Rata-rata dari sampel eksponensial
uniform_mean_10 = apply(uniform_samples_10, 1, mean) # Rata-rata dari sampel uniform
apply() digunakan untuk menghitung
rata-rata setiap sampel yang diambil dari masing-masing populasi.normal_mean_10,
exponential_mean_10,
uniform_mean_10), kita menghitung
rata-rata sampel.normal_mean_10 berisi rata-rata dari
setiap 10 sampel yang diambil dari populasi
normal.exponential_mean_10 berisi rata-rata
dari setiap 10 sampel yang diambil dari
populasi eksponensial.uniform_mean_10 berisi rata-rata dari
setiap 10 sampel yang diambil dari populasi
uniform.# Menampilkan histogram distribusi rata-rata sampel untuk setiap populasi
hist(normal_mean_10, main = "Distribusi Rata-Rata Sampel (Normal)") # Histogram untuk distribusi rata-rata sampel normal
hist(exponential_mean_10, main = "Distribusi Rata-Rata Sampel (Eksponensial)") # Histogram untuk distribusi rata-rata sampel eksponensial
hist(uniform_mean_10, main = "Distribusi Rata-Rata Sampel (Uniform)") # Histogram untuk distribusi rata-rata sampel uniform
Setelah menghitung rata-rata sampel, kita membuat histogram untuk setiap distribusi rata-rata sampel.
Hasilnya akan menunjukkan distribusi rata-rata sampel untuk populasi normal, eksponensial, dan uniform.
Efek CLT: Meskipun distribusi asalnya berbeda, distribusi rata-rata sampel mulai menunjukkan bentuk distribusi normal seiring bertambahnya jumlah sampel.
Distribusi rata-rata sampel: Dengan semakin banyaknya sampel yang kita ambil, distribusi rata-rata sampel mulai mendekati distribusi normal terlepas dari distribusi asalnya (normal, eksponensial, uniform).
# Menghitung rata-rata dan varians untuk setiap distribusi
mean_data_10 = c(mean(normal_mean_10), mean(exponential_mean_10), mean(uniform_mean_10))
var_data_10 = c(var(normal_mean_10), var(exponential_mean_10), var(uniform_mean_10))
# Membuat data frame untuk menyimpan hasil rata-rata dan varians
summary_stats_10 = data.frame("Mean" = mean_data_10, "Variance" = var_data_10, row.names = c("Normal", "Eksponensial", "Uniform"))
print(summary_stats_10)
## Mean Variance
## Normal 0.005472042 0.105708582
## Eksponensial 0.990954878 0.096089363
## Uniform 0.497587343 0.007767368
summary_stats_10 memberikan
rata-rata dan varians untuk
masing-masing distribusi sampel setelah dihitung.Selanjutnya, kita memperbesar ukuran sampel (n = 30 dan n = 100) untuk melihat bagaimana distribusi rata-rata sampel semakin mendekati distribusi normal.
set.seed(123)
n = 30 # Ukuran sampel lebih besar
normal_samples_30 = matrix(sample(normal_population, n*k), k) # Sampel dari populasi normal
exponential_samples_30 = matrix(sample(exponential_population, n*k), k) # Sampel dari populasi eksponensial
uniform_samples_30 = matrix(sample(uniform_population, n*k), k) # Sampel dari populasi uniform
normal_samples_30,
exponential_samples_30,
uniform_samples_30 berisi sampel dengan
ukuran 30 yang diambil dari masing-masing distribusi
populasi.# Menghitung rata-rata sampel dengan n = 30
normal_mean_30 = apply(normal_samples_30, 1, mean) # Rata-rata dari sampel normal dengan n=30
exponential_mean_30 = apply(exponential_samples_30, 1, mean) # Rata-rata dari sampel eksponensial dengan n=30
uniform_mean_30 = apply(uniform_samples_30, 1, mean) # Rata-rata dari sampel uniform dengan n=30
# Menampilkan histogram dari rata-rata sampel dengan n = 30
hist(normal_mean_30, main = "Distribusi Rata-Rata Sampel (Normal, n=30)")
hist(exponential_mean_30, main = "Distribusi Rata-Rata Sampel (Eksponensial, n=30)")
hist(uniform_mean_30, main = "Distribusi Rata-Rata Sampel (Uniform, n=30)")
# Membuat kesimpulan dari rata-rata dan varians sampel dengan ukuran lebih besar
mean_data_30 = c(mean(normal_mean_30), mean(exponential_mean_30), mean(uniform_mean_30))
var_data_30 = c(var(normal_mean_30), var(exponential_mean_30), var(uniform_mean_30))
summary_stats_30 = data.frame("Mean" = mean_data_30, "Variance" = var_data_30, row.names = c("Normal", "Eksponensial", "Uniform"))
print(summary_stats_30)
## Mean Variance
## Normal -0.005445146 0.037606446
## Eksponensial 0.997744247 0.032002352
## Uniform 0.500796193 0.002740172
summary_stats_30 akan menunjukkan
bagaimana distribusi rata-rata sampel semakin mendekati distribusi
normal meskipun populasi asalnya sangat berbeda (normal, eksponensial,
uniform).Ah, saya paham! Maaf, saya belum memasukkan bagian yang untuk n=100. Mari kita lengkapi dan sesuaikan penjelasannya agar sesuai dengan semua ukuran sampel yang disebutkan, yaitu n=10, n=30, dan n=100.
Berikut adalah perbaikan dan penyesuaian untuk n=100.
# Menggunakan ukuran sampel yang lebih besar, yaitu n=100
n = 100 # Ukuran sampel yang lebih besar
normal_samples_100 = matrix(sample(normal_population, n*k), k) # Sampel dari populasi normal
exponential_samples_100 = matrix(sample(exponential_population, n*k), k) # Sampel dari populasi eksponensial
uniform_samples_100 = matrix(sample(uniform_population, n*k), k) # Sampel dari populasi uniform
normal_samples_100,
exponential_samples_100, dan
uniform_samples_100 berisi sampel dengan
ukuran 100 yang diambil dari populasi masing-masing
(normal, eksponensial, dan uniform).# Menghitung rata-rata dari setiap sampel untuk n=100
normal_mean_100 = apply(normal_samples_100, 1, mean) # Rata-rata dari sampel normal dengan n=100
exponential_mean_100 = apply(exponential_samples_100, 1, mean) # Rata-rata dari sampel eksponensial dengan n=100
uniform_mean_100 = apply(uniform_samples_100, 1, mean) # Rata-rata dari sampel uniform dengan n=100
normal_mean_100,
exponential_mean_100, dan
uniform_mean_100 berisi rata-rata dari
setiap sampel yang diambil dari masing-masing populasi dengan ukuran
sampel 100.# Menampilkan histogram distribusi rata-rata sampel untuk n=100
hist(normal_mean_100, main = "Distribusi Rata-Rata Sampel (Normal, n=100)") # Histogram untuk distribusi rata-rata sampel normal
hist(exponential_mean_100, main = "Distribusi Rata-Rata Sampel (Eksponensial, n=100)") # Histogram untuk distribusi rata-rata sampel eksponensial
hist(uniform_mean_100, main = "Distribusi Rata-Rata Sampel (Uniform, n=100)") # Histogram untuk distribusi rata-rata sampel uniform
# Menghitung rata-rata dan varians untuk distribusi rata-rata sampel dengan n=100
mean_data_100 = c(mean(normal_mean_100), mean(exponential_mean_100), mean(uniform_mean_100))
var_data_100 = c(var(normal_mean_100), var(exponential_mean_100), var(uniform_mean_100))
# Membuat data frame untuk menyimpan hasil rata-rata dan varians
summary_stats_100 = data.frame("Mean" = mean_data_100, "Variance" = var_data_100, row.names = c("Normal", "Eksponensial", "Uniform"))
print(summary_stats_100)
## Mean Variance
## Normal -0.002353551 0.0106844162
## Eksponensial 0.995431620 0.0098568859
## Uniform 0.499035811 0.0008397367
summary_stats_100 menunjukkan
rata-rata dan varians untuk distribusi
rata-rata sampel dengan ukuran n=100.Untuk membandingkan distribusi rata-rata sampel dari populasi normal, eksponensial, dan uniform untuk ukuran sampel n=10, n=30, dan n=100, kita bisa menggunakan tampilan grafis berikut:
# Menampilkan histogram distribusi rata-rata sampel untuk n=10, n=30, dan n=100 dalam satu tampilan
par(mfrow=c(3,3)) # Membagi tampilan menjadi 3x3 grid untuk visualisasi
hist(normal_mean_10, main = "Normal n=10", xlim = c(-2,2))
hist(normal_mean_30, main = "Normal n=30", xlim = c(-2,2))
hist(normal_mean_100, main = "Normal n=100", xlim = c(-2,2))
hist(exponential_mean_10, main = "Eksponensial n=10", xlim = c(0,2))
hist(exponential_mean_30, main = "Eksponensial n=30", xlim = c(0,2))
hist(exponential_mean_100, main = "Eksponensial n=100", xlim = c(0,2))
hist(uniform_mean_10, main = "Uniform n=10", xlim = c(0,1))
hist(uniform_mean_30, main = "Uniform n=30", xlim = c(0,1))
hist(uniform_mean_100, main = "Uniform n=100", xlim = c(0,1))
par(mfrow=c(3,3)): Mengatur tampilan
grafik agar bisa menampilkan 9 histogram dalam satu
grid 3x3.# Membuat kesimpulan akhir untuk rata-rata dan varians dengan ukuran sampel n=100
mean_data_final = c(mean(normal_mean_100), mean(exponential_mean_100), mean(uniform_mean_100))
var_data_final = c(var(normal_mean_100), var(exponential_mean_100), var(uniform_mean_100))
final_stats = data.frame("Mean" = mean_data_final, "Variance" = var_data_final, row.names = c("Normal", "Eksponensial", "Uniform"))
print(final_stats)
## Mean Variance
## Normal -0.002353551 0.0106844162
## Eksponensial 0.995431620 0.0098568859
## Uniform 0.499035811 0.0008397367
final_stats memberikan
rata-rata dan varians dari distribusi
rata-rata sampel untuk populasi normal, eksponensial, dan uniform dengan
ukuran sampel n=100.Tujuan:
Dalam latihan ini, Anda akan mempelajari dan membandingkan distribusi
rata-rata sampel dari beberapa distribusi yang berbeda, baik dengan
populasi terhingga maupun tak
terhingga. Distribusi yang akan Anda gunakan adalah distribusi
Normal, Eksponensial,
Uniform, dan Gamma(3,5).
Langkah-langkah yang harus dilakukan:
a. Persiapkan Populasi
Buat 4 populasi besar dengan ukuran 1.000.000 elemen masing-masing:
Populasi Normal (menggunakan
rnorm(1000000))
Populasi Eksponensial (menggunakan
rexp(1000000))
Populasi Uniform (menggunakan
runif(1000000))
Populasi Gamma(3,5) (menggunakan
rgamma(1000000, shape = 3, scale = 5))
b. Ambil Sampel dari Populasi
Lakukan simulasi dengan mengambil 3 ukuran sampel yang berbeda: n = 5, n = 50, dan n = 500.
Ambil 1000 sampel untuk setiap ukuran sampel tersebut, dan hitung rata-rata dari setiap sampel.
c. Distribusi Sampel
Untuk setiap populasi dan ukuran sampel (n = 5, n = 50, n = 500), buat histogram yang menunjukkan distribusi rata-rata sampel.
Setiap histogram harus diberi judul yang sesuai, seperti “Distribusi Rata-Rata Sampel Normal (n=5)”, “Distribusi Rata-Rata Sampel Eksponensial (n=50)”, dll.
d. Perbandingan Hasil
Setelah Anda mendapatkan histogram untuk setiap distribusi (Normal, Eksponensial, Uniform, dan Gamma), bandingkan dan jelaskan perbedaannya.
Jelaskan bagaimana distribusi rata-rata sampel berubah dengan meningkatnya ukuran sampel (dari n=5, n=50, dan n=500).
Diskusikan apakah distribusi rata-rata sampel mulai mendekati distribusi normal seiring dengan bertambahnya ukuran sampel.
Instruksi Pemrograman:
Gunakan set.seed(123) untuk memastikan hasil simulasi yang konsisten di setiap percobaan.
Gunakan fungsi sample() untuk mengambil sampel acak
dari populasi.
Gunakan fungsi apply() untuk menghitung rata-rata
sampel.
Gunakan histogram (hist()) untuk
memvisualisasikan distribusi rata-rata sampel.