1. Bangkitkan 50 bilangan acak yang berdistribusi normal? Lakukan pengecekan kenormalan menggunakan histogram/boxplot/QQ-plot dan pengujian kenormalan? Simpulkan?
# ---------#
#  Nomor 1 #
# ---------#


# Bangkitkan 50 bilangan acak berdistribusi normal
set.seed(123)  
data_normal <- rnorm(50,
              mean = 0,
              sd = 1)
data_normal
##  [1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774  1.71506499
##  [7]  0.46091621 -1.26506123 -0.68685285 -0.44566197  1.22408180  0.35981383
## [13]  0.40077145  0.11068272 -0.55584113  1.78691314  0.49785048 -1.96661716
## [19]  0.70135590 -0.47279141 -1.06782371 -0.21797491 -1.02600445 -0.72889123
## [25] -0.62503927 -1.68669331  0.83778704  0.15337312 -1.13813694  1.25381492
## [31]  0.42646422 -0.29507148  0.89512566  0.87813349  0.82158108  0.68864025
## [37]  0.55391765 -0.06191171 -0.30596266 -0.38047100 -0.69470698 -0.20791728
## [43] -1.26539635  2.16895597  1.20796200 -1.12310858 -0.40288484 -0.46665535
## [49]  0.77996512 -0.08336907
# 1) Pengecekan Kenormalan dengan Grafik

# Histogram
hist(data_normal, 
     main = "Histogram Data Normal", 
     xlab = "Nilai", 
     ylab = "Frekuensi",
     col = "lightpink", 
     border = "black")

Interpretasi Histogram

Grafik histogram data memberikan pola distribusi yang normal, terlihat sebaran data menyerupai kurva normal dengan puncak di tengah (sekitar nilai 0) dan menurun secara simetris ke kedua sisi.

# Boxplot
boxplot(data_normal, 
        main = "Boxplot Data Normal", 
        ylab = "Nilai",
        col = "lightblue",
        border = "black")

Interpretasi Boxplot

Boxplot data memberikan garis median yang berada di tengah kotak, dan panjang kotak atas dan kotak bawah relatif sama. Hal ini memberikan gambaran bahwasanya data mengikuti sebaran normal. Tidak terlihat adanya pencilan (outlier) yang ekstrim.

# Q-Q Plot
qqnorm(data_normal, 
       main = "QQ-Plot Data Normal")
qqline(data_normal, 
       col = "red")

Interpretasi Q-Q Plot

QQ Plot (Quantile-Quantile Plot) memberikan gambaran bahwa asumsi normalitas terpenuhi, terlihat dari titik-titik menyebar sangat dekat dengan garis diagonal. Tidak ada pola berliku-liku atau menyimpang jauh dari garis diagonal.

# 2) Pengujian Kenormalan Shapiro-Wilk test

# Hipotesis:
# H0 : Data berdistribusi normal.
# H1 : Data tidak berdistribusi normal.

# Statistik Uji: Uji Shapiro-Wilk (SW)

# Kriteria Uji : Jika p-value lebih besar atau sama dengan α = 0.05, maka kita gagal menolak hipotesis nol (H0) yang menyatakan bahwa data berdistribusi normal.

# Taraf signifikansi = α = 0.05

# Pengujian Kenormalan Data: Uji Shapiro-Wilk Test
shapiro_test <- shapiro.test(data_normal)
shapiro_test
## 
##  Shapiro-Wilk normality test
## 
## data:  data_normal
## W = 0.98928, p-value = 0.9279
# Kesimpulan
# Hasil Uji Shapiro-Wilk menunjukkan bahwa p-value pengujian adalah 0.9279. Sehingga jika alpha yang digunakan α = 0.05 atau 5% dapat disimpulkan pengujian menunjukkan terima H0 yang berarti data berdistribusi normal.

Kesimpulan Akhir:

Berdasarkan hasil pengecekan kenormalan dengan grafik dan pengujian kenormalan Shapiro-Wilk, dapat disimpulkan bahwa data mengikuti distribusi normal.

  1. Bangkitkan 100 bilangan bulat acak (gunakan fungsi floor untuk membuat bilangan bulat) yang berdistribusi normal dengan rata-rata 50 dan simpangan baku 20? Buatlah plot fungsi peluangnya (probability density function) dan plot fungsi kumulatifnya (cumulative distribution function)? Jelaskan perbedaan kedua plot yang dihasilkan?
# ---------#
#  Nomor 2 #
# ---------#

# Bangkitkan 100 bilangan bulat dari distribusi normal
set.seed(123) 
data_bulat <- floor(rnorm(100, mean = 50, sd = 20))

data_bulat
##   [1] 38 45 81 51 52 84 59 24 36 41 74 57 58 52 38 85 59 10 64 40 28 45 29 35 37
##  [26] 16 66 53 27 75 58 44 67 67 66 63 61 48 43 42 36 45 24 93 74 27 41 40 65 48
##  [51] 55 49 49 77 45 80 19 61 52 54 57 39 43 29 28 56 58 51 68 91 40  3 70 35 36
##  [76] 70 44 25 53 47 50 57 42 62 45 56 71 58 43 72 69 60 54 37 77 37 93 80 45 29
# Probability Density Function (PDF)
plot(density(data_bulat), 
     main = "PDF (Probability Density Function)", 
     xlab = "Nilai", 
     ylab = "Densitas Peluang",
     col = "blue", 
     lwd = 2)

# Cumulative Distribution Function (CDF)
cdf_values <- ecdf(data_bulat)
plot(cdf_values, 
     main = "CDF (Cumulative Distribution Function)", 
     xlab = "Nilai",
     ylab = "Probabilitas Kumulatif",
     col = "darkgreen", 
     lwd = 2)

Perbedaan kedua plot yang dihasilkan

1.Probability Density Function (PDF):

  1. Plot PDF menggambarkan kepadatan probabilitas untuk setiap nilai dalam distribusi normal. Pada plot ini, probabilitas tidak dihitung secara kumulatif, melainkan menunjukkan peluang relatif suatu nilai muncul. Nilai pada sumbu vertikal (y) merepresentasikan kepadatan probabilitas, yang tidak setara dengan probabilitas langsung karena total area di bawah kurva PDF adalah 1.

  2. Plot PDF yang dihasilkan memiliki bentuk simetris menyerupai kurva lonceng dengan puncak di rata-rata (50) dan menyusut di kedua sisi. Hal ini menunjukkan bahwa nilai-nilai yang mendekati rata-rata memiliki probabilitas relatif lebih tinggi dibandingkan nilai-nilai yang jauh dari rata-rata.

  3. PDF cocok digunakan untuk melihat pola distribusi probabilitas pada setiap titik data.

  1. Cumulative Distribution Function (CDF):
  1. Plot CDF menggambarkan probabilitas kumulatif hingga nilai tertentu. Artinya, untuk nilai tertentu pada sumbu horizontal (x), nilai pada sumbu vertikal (y) menunjukkan total probabilitas semua nilai yang lebih kecil atau sama dengan nilai tersebut.

  2. Plot CDF yang dihasilkan berbentuk kurva monoton naik, dimulai dari 0 (untuk nilai terkecil) dan berakhir di 1 (untuk nilai terbesar). Pada titik rata-rata (50), nilai pada sumbu y sekitar 0,5, yang menunjukkan bahwa sekitar 50% data berada di bawah nilai rata-rata.

  3. CDF digunakan untuk memahami proporsi data yang berada di bawah atau di atas nilai tertentu.

  1. Bangkitkan 30 bilangan bulat acak (dari 0 s/d 10) yang berdistribusi uniform? Hitunglah mean, modus, dan mediannya?
# ---------#
#  Nomor 3 #
# ---------#

# Bangkitkan bilangan bulat uniform
set.seed(123)
data_uniform <- sample(0:10, 30, replace = TRUE)
data_uniform
##  [1]  2  2  9  1  5 10  4  3  5  8  9 10  4  2 10  8  8  8  2  7  9  6  9  8  2
## [26]  3  0 10  6  4
# Menghitung Mean
mean_uniform <- mean(data_uniform)

cat("Mean:", mean_uniform, "\n")
## Mean: 5.8
# Menghitung Modus
mode_uniform <- as.numeric(names(sort(table(data_uniform), decreasing = TRUE))[1])

cat("Modus:", mode_uniform, "\n")
## Modus: 2
# Menghitung Median
median_uniform <- median(data_uniform)

cat("Median:", median_uniform, "\n")
## Median: 6