Exercise 5.7.1

1. Peubah acak normal X

Peubah acak normal X dengan rata-rata 5.0 dan simpangan baku 2.0, menentukan probabilitas bahwa X kurang dari 3.0.

pnorm(3, mean = 5, sd = 2)
## [1] 0.1586553

Program di atas menghitung probabilitas kumulatif sampai nilai 3 pada distribusi normal, sehingga output yang dihasilkan adalah peluang bahwa X < 3.

2. Probabilitas

Menentukan probabilitas bahwa X lebih besar dari 4.5

1-pnorm(4.5, mean = 5, sd = 2)
## [1] 0.5987063

Program di atas menghitung probabilitas X > 4.5, dengan cara mengambil komplemen dari peluang kumulatif sampai 4.5, sehingga output menunjukkan peluang di sisi kanan.

3. Menentukan nilai K sehingga P(X>K)=0.05

qnorm(0.95, mean = 5, sd = 2)
## [1] 8.289707

Program di atas mencari nilai K, yaitu batas di mana 95% data berada di bawahnya, sehingga output adalah nilai K yang memenuhi P(X > K) = 0.05.

4.Probabilitas tidak muncul

Jika melempar koin sebanyak 10 kali, tentukan probabilitas tidak munculnya sisi kepala sama sekali (distribusi binomial)

dbinom(0, size = 10, prob = 0.5)
## [1] 0.0009765625

Program di atas menghitung probabilitas tidak muncul kepala sama sekali dari 10 percobaan, sehingga output adalah peluang tepat 0 kejadian.

5. Probabilitas muncul

Menentukan probabilitas muncul tepat 5 kali sisi kepala

dbinom(5, size = 10, prob = 0.5)
## [1] 0.2460938

Program di atas menghitung probabilitas muncul tepat 5 kali kepala dari 10 percobaan, sehingga output adalah peluang kejadian tersebut.

6. Probabilitas muncul lebih dari

Tentukan probabilitas muncul lebih dari 7 kali sisi kepala.

1 - pbinom(7, size = 10, prob = 0.5)
## [1] 0.0546875

Program di atas menghitung probabilitas muncul lebih dari 7 kali kepala, dengan cara mengambil komplemen dari peluang kumulatif sampai 7, sehingga output adalah peluang untuk nilai di atas 7.

Exercise 5.7.2

1. Simulasi sampel

Simulasikan sampel berisi 100 data acak dari distribusi normal dengan rata-rata 100 dan simpangan baku 5, lalu simpan hasilnya dalam sebuah vektor

# Simulasi 100 data dari distribusi normal
set.seed(123)
data <- rnorm(100, mean = 100, sd = 5)

# Melihat beberapa data pertama
head(data)
## [1]  97.19762  98.84911 107.79354 100.35254 100.64644 108.57532

2. Histogram dan Boxplot

Buat histogram dan boxplot dari vektor yang baru saja Anda buat (lihat Bagian 4.3.3 hal. 92 dan Bagian 4.3.5 hal. 95).

# Histogram 
hist(data, 
     col = "lightblue", 
     main = "Histogram Data Simulasi", 
     xlab = "Nilai")

# Boxplot
boxplot(data, 
        col = "lightgreen", 
        main = "Boxplot Data Simulasi", 
        ylab = "Nilai")

Histogram menunjukkan sebaran data yang berbentuk mendekati simetris dan menyerupai distribusi normal, dengan puncak frekuensi berada di sekitar nilai tengah (sekitar 100), serta tidak terlihat adanya kemiringan ekstrem ke kiri atau kanan, sehingga data tersebar merata di sekitar rata-rata.

Boxplot menunjukkan median berada di tengah kotak dengan jarak antar kuartil yang seimbang, serta tidak terlihat pencilan (outlier) yang signifikan, sehingga dapat disimpulkan bahwa data relatif simetris dan tidak memiliki nilai ekstrem yang menyimpang jauh dari sebaran utama.

3. Menghitung rata-rata sampel dan simpangan baku

mean(data)
## [1] 100.452
sd(data)
## [1] 4.564079

Mean sebesar 100.452 menunjukkan bahwa rata-rata nilai data berada di sekitar 100, sehingga secara umum data terpusat di sekitar nilai tersebut dan keenam data yang diberikan memang berada tidak jauh dari rata-rata itu.

Standar deviasi sebesar 4.564079 menunjukkan bahwa penyebaran data dari rata-rata sekitar 4.56, sehingga variasi data tergolong kecil hingga sedang dan nilai-nilai data tidak terlalu jauh menyimpang dari rata-ratanya. ### 4. Mengitung median dan jangkauan interkuartil (interquartile range)

median(data)
## [1] 100.3088
IQR(data)
## [1] 5.928367

Median sebesar 100.3088 menunjukkan bahwa nilai tengah data berada sangat dekat dengan rata-rata, sehingga distribusi data cenderung simetris dan tidak condong ke kiri atau kanan.

IQR sebesar 5.928367 menunjukkan bahwa 50% data berada dalam rentang sekitar 5.93 satuan, sehingga sebagian besar data terkonsentrasi cukup rapat di sekitar pusat dan tidak memiliki penyebaran yang terlalu lebar.

5. Uji hipotesis bahwa rata-rata sama dengan 100

Dengan data di atas, uji hipotesis bahwa rata-rata sama dengan 100 (gunakan t.test).

# H0: mean = 100
t.test(data, mu = 100)
## 
##  One Sample t-test
## 
## data:  data
## t = 0.99041, df = 99, p-value = 0.3244
## alternative hypothesis: true mean is not equal to 100
## 95 percent confidence interval:
##   99.54642 101.35764
## sample estimates:
## mean of x 
##   100.452

Program di atas menggunakan t.test(data, mu = 100) untuk menguji apakah rata-rata sampel berbeda dari 100, dengan hipotesis nol bahwa mean = 100 dan alternatif bahwa mean tidak sama dengan 100. Hasilnya menunjukkan nilai p-value = 0.3244 (> 0.05), sehingga gagal tolak H0 , artinya tidak ada bukti yang cukup bahwa rata-rata berbeda dari 100, dan hal ini juga didukung oleh interval kepercayaan 95% yang mencakup nilai 100.

6. Uji hipotesis bahwa rata-rata sama dengan 90

# H0: mean = 90
t.test(data, mu = 90)
## 
##  One Sample t-test
## 
## data:  data
## t = 22.901, df = 99, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 90
## 95 percent confidence interval:
##   99.54642 101.35764
## sample estimates:
## mean of x 
##   100.452

Program di atas menggunakan t.test(data, mu = 90) untuk menguji apakah rata-rata sampel sama dengan 90 dengan hipotesis nol mean = 90. Hasilnya menunjukkan p-value sangat kecil (< 2.2e-16), sehingga H0 ditolak, artinya rata-rata data berbeda secara signifikan dari 90, yang juga didukung karena nilai rata-rata sampel (100.452) jauh dari 90 dan tidak berada dalam interval kepercayaan.

7. Uji Wilcoxon signed-rank

Ulangi dua pengujian di atas menggunakan uji Wilcoxon signed-rank. Bandingkan nilai p (p-value) dengan hasil dari uji t yang telah Anda lakukan.

# H0: mean/median = 100
wilcox.test(data, mu = 100)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  data
## V = 2763, p-value = 0.4142
## alternative hypothesis: true location is not equal to 100
# H0: mean/median = 90
wilcox.test(data, mu = 90)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  data
## V = 5048, p-value < 2.2e-16
## alternative hypothesis: true location is not equal to 90

Program di atas menggunakan wilcox.test() untuk menguji median terhadap 100 dan 90 sebagai alternatif nonparametrik dari uji t. Hasilnya menunjukkan bahwa untuk pengujian terhadap 100 diperoleh p-value = 0.4142 (> 0.05) sehingga gagal tola H0, sejalan dengan uji t sebelumnya, sedangkan untuk pengujian terhadap 90 diperoleh p-value sangat kecil (< 2.2e-16) sehingga H0 ditolak, juga konsisten dengan hasil uji t.

Exercise 5.7.3

1. Fungsi t.test untuk membandingkan PupalWeight

Gunakan fungsi t.test untuk membandingkan PupalWeight berdasarkan T_treatment. Menggunakan data hal 248.

set.seed(123)
# Jumlah data
n <- 84
# Variabel kategori
T_treatment <- sample(c("ambient", "elevated"), n, replace = TRUE)
CO2_treatment <- sample(c(280, 400), n, replace = TRUE)
Gender <- sample(c(0, 1), n, replace = TRUE)
# Variabel numerik (dibuat realistis)
PupalWeight <- rnorm(n, mean = 0.31, sd = 0.06)
Frass <- rnorm(n, mean = 0.25, sd = 0.05)
# Gabungkan jadi data frame
pupae <- data.frame(
  T_treatment,
  CO2_treatment,
  Gender,
  PupalWeight,
  Frass
)
head(pupae)
##   T_treatment CO2_treatment Gender PupalWeight     Frass
## 1     ambient           400      1   0.3241232 0.2559623
## 2     ambient           400      0   0.3146777 0.2621844
## 3     ambient           280      1   0.2522886 0.3116238
## 4    elevated           280      1   0.3057215 0.2241968
## 5     ambient           400      1   0.3966731 0.2003746
## 6    elevated           280      1   0.3370902 0.3337848
# Jika ingin asumsi varians sama (seperti di materi)
t.test(PupalWeight ~ T_treatment, data = pupae, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  PupalWeight by T_treatment
## t = -0.72793, df = 82, p-value = 0.4687
## alternative hypothesis: true difference in means between group ambient and group elevated is not equal to 0
## 95 percent confidence interval:
##  -0.03721360  0.01727515
## sample estimates:
##  mean in group ambient mean in group elevated 
##              0.3057960              0.3157653

Program di atas menggunakan t.test(PupalWeight ~ T_treatment) untuk membandingkan rata-rata PupalWeight antara dua kelompok yaitu ambient dan elevated. Hasilnya menunjukkan p-value = 0.4687 (> 0.05) sehingga tidak ada perbedaan rata-rata yang signifikan antara kedua kelompok, yang juga terlihat dari nilai rata-rata yang hampir sama (0.3058 dan 0.3158) serta interval kepercayaan yang mencakup nol.

2. Mengulangi langkah di atas menggunakan uji Wilcoxon rank-sum.

wilcox.test(PupalWeight ~ T_treatment, data = pupae, exact = FALSE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  PupalWeight by T_treatment
## W = 746, p-value = 0.3139
## alternative hypothesis: true location shift is not equal to 0

Program di atas menggunakan wilcox.test(PupalWeight ~ T_treatment) untuk membandingkan median PupalWeight antara kelompok ambient dan elevated sebagai alternatif nonparametrik dari uji t.Hasilnya menunjukkan p-value = 0.3139 (> 0.05) sehingga tidak ada perbedaan yang signifikan antara kedua kelompok, dan hasil ini konsisten dengan uji t sebelumnya.

3. Jalankan kode berikut untuk menghasilkan data

set.seed(123)
base <- rnorm(20, 20, 5)
x <- base + rnorm(20,0,0.5)
y <- base + rnorm(20,1,0.5)
print(x,y)
##  [1] 16.663709914245512 18.740125095254456 27.280539346592001 19.988096342477309
##  [5] 20.333919041880101 27.731978279045201 22.723474552193274 13.751380385885588
##  [9] 15.996667272026395 18.398597610035171 26.333641097935715 21.651533393790682
## [13] 22.451420083492771 20.992480323492121 17.631584867048371 29.278885811065436
## [17] 22.766211217914989 10.135958361563448 23.353798175948469 17.445807460854141

4. Dengan menggunakan uji t dua sampel

Dengan menggunakan uji t dua sampel, bandingkan rata-rata x dan y, dengan asumsi varians kedua sampel sama.

t.test(x, y, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  x and y
## t = -0.70564, df = 38, p-value = 0.4847
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -4.174019  2.016277
## sample estimates:
## mean of x mean of y 
##  20.68249  21.76136

Program di atas menggunakan t.test(x, y, var.equal = TRUE) untuk membandingkan rata-rata dua sampel dengan asumsi varians sama. Hasilnya menunjukkan p-value = 0.4847 (> 0.05) sehingga tidak ada perbedaan rata-rata yang signifikan antara x dan y, yang juga terlihat dari selisih rata-rata yang kecil (20.68 dan 21.76) serta interval kepercayaan yang mencakup nol.

5. Menggunakan uji t berpasangan (paired t-test)

Ulangi langkah di atas menggunakan uji t berpasangan (paired t-test). Bagaimana perubahan nilai p?

t.test(x, y, paired = TRUE)
## 
##  Paired t-test
## 
## data:  x and y
## t = -8.0139, df = 19, p-value = 1.633e-07
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -1.3606441 -0.7970983
## sample estimates:
## mean difference 
##       -1.078871

Program di atas menggunakan t.test(x, y, paired = TRUE) untuk membandingkan rata-rata dua sampel yang berpasangan dengan melihat selisih tiap pasangan data.Hasilnya menunjukkan p-value sangat kecil (1.633e-07 < 0.05) sehingga H0 ditolak, artinya terdapat perbedaan yang signifikan antara x dan y, dan dibandingkan sebelumnya p-value berubah dari tidak signifikan menjadi signifikan karena pendekatan berpasangan mempertimbangkan hubungan antar data.

6. Uji mana yang paling tepat?

uji yang paling tepat adalah uji t berpasangan (paired t-test), karena data x dan y berasal dari pasangan pengamatan yang saling berhubungan (bukan dua sampel independen), sehingga analisis harus mempertimbangkan selisih tiap pasangan agar hasilnya lebih akurat.