MINGGU 1 - “IMPORT DATA”
MINGGU 2 - “STATISTIKA DESKRIPTIF”
#Ringkasan Statistik
summary(dataset_lingkungan)
## hari suhu_c kelembapan_persen curah_hujan_mm
## Min. : 1.00 Min. :25.00 Min. :65.00 Min. : 0.600
## 1st Qu.:15.75 1st Qu.:28.57 1st Qu.:75.00 1st Qu.: 3.675
## Median :30.50 Median :29.95 Median :78.00 Median : 7.800
## Mean :30.50 Mean :29.90 Mean :78.77 Mean : 9.083
## 3rd Qu.:45.25 3rd Qu.:31.20 3rd Qu.:83.00 3rd Qu.:12.275
## Max. :60.00 Max. :34.90 Max. :94.00 Max. :31.800
## pm25_ugm3
## Min. :12.0
## 1st Qu.:35.0
## Median :43.0
## Mean :43.1
## 3rd Qu.:52.0
## Max. :63.0
ringkasan <- dataset_lingkungan %>%
summarise(across(everything(), list(
mean = ~mean(.x, na.rm=TRUE),
median = ~median(.x, na.rm=TRUE),
sd = ~sd(.x, na.rm=TRUE),
min = ~min(.x, na.rm=TRUE),
max = ~max(.x, na.rm=TRUE)
)))
ringkasan
## # A tibble: 1 × 25
## hari_mean hari_median hari_sd hari_min hari_max suhu_c_mean suhu_c_median
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 30.5 30.5 17.5 1 60 29.9 30.0
## # ℹ 18 more variables: suhu_c_sd <dbl>, suhu_c_min <dbl>, suhu_c_max <dbl>,
## # kelembapan_persen_mean <dbl>, kelembapan_persen_median <dbl>,
## # kelembapan_persen_sd <dbl>, kelembapan_persen_min <dbl>,
## # kelembapan_persen_max <dbl>, curah_hujan_mm_mean <dbl>,
## # curah_hujan_mm_median <dbl>, curah_hujan_mm_sd <dbl>,
## # curah_hujan_mm_min <dbl>, curah_hujan_mm_max <dbl>, pm25_ugm3_mean <dbl>,
## # pm25_ugm3_median <dbl>, pm25_ugm3_sd <dbl>, pm25_ugm3_min <dbl>, …
#Histogram Dataset Lingkungan
hist(dataset_lingkungan$hari, main="Histogram Hari", xlab="Hari")

hist(dataset_lingkungan$suhu_c, main="Histogram Suhu", xlab="Suhu (°C)")

hist(dataset_lingkungan$kelembapan_persen, main="Histogram Kelembapan", xlab="%")

hist(dataset_lingkungan$curah_hujan_mm, main="Histogram Curah Hujan", xlab="mm")

hist(dataset_lingkungan$pm25_ugm3, main="Histogram PM2.5", xlab="µg/m3")

MINGGU 3 - “PROBABILITAS EMPIRIS”
hitung_prob <- function(x, nama_variabel){
ambang <- mean(x, na.rm=TRUE)
p_emp <- mean(x > ambang, na.rm=TRUE)
data.frame(
variabel = nama_variabel,
ambang = round(ambang,2),
peluang = p_emp
)
}
rbind(
hitung_prob(dataset_lingkungan$hari, "hari"),
hitung_prob(dataset_lingkungan$suhu_c, "suhu"),
hitung_prob(dataset_lingkungan$kelembapan_persen, "kelembapan"),
hitung_prob(dataset_lingkungan$curah_hujan_mm, "curah hujan"),
hitung_prob(dataset_lingkungan$pm25_ugm3, "pm25")
)
## variabel ambang peluang
## 1 hari 30.50 0.5000000
## 2 suhu 29.90 0.5000000
## 3 kelembapan 78.77 0.4666667
## 4 curah hujan 9.08 0.4166667
## 5 pm25 43.10 0.4833333
MINGGU 4 - “DISTRIBUSI DISKRIT”
buat_pmf <- function(x, nama_variabel){
x_diskrit <- round(x)
freq <- table(x_diskrit)
pmf <- prop.table(freq)
pmf_df <- data.frame(
variabel = nama_variabel,
nilai = as.numeric(names(pmf)),
probabilitas = as.numeric(pmf)
)
return(pmf_df)
}
# Terapkan ke semua variabel
pmf_hari <- buat_pmf(dataset_lingkungan$hari, "hari")
pmf_suhu <- buat_pmf(dataset_lingkungan$suhu_c, "suhu")
pmf_kelembapan <- buat_pmf(dataset_lingkungan$kelembapan_persen, "kelembapan")
pmf_hujan <- buat_pmf(dataset_lingkungan$curah_hujan_mm, "curah hujan")
pmf_pm25 <- buat_pmf(dataset_lingkungan$pm25_ugm3, "pm25")
# Gabungkan semua
pmf_semua <- rbind(
pmf_hari,
pmf_suhu,
pmf_kelembapan,
pmf_hujan,
pmf_pm25
)
pmf_semua
## variabel nilai probabilitas
## 1 hari 1 0.01666667
## 2 hari 2 0.01666667
## 3 hari 3 0.01666667
## 4 hari 4 0.01666667
## 5 hari 5 0.01666667
## 6 hari 6 0.01666667
## 7 hari 7 0.01666667
## 8 hari 8 0.01666667
## 9 hari 9 0.01666667
## 10 hari 10 0.01666667
## 11 hari 11 0.01666667
## 12 hari 12 0.01666667
## 13 hari 13 0.01666667
## 14 hari 14 0.01666667
## 15 hari 15 0.01666667
## 16 hari 16 0.01666667
## 17 hari 17 0.01666667
## 18 hari 18 0.01666667
## 19 hari 19 0.01666667
## 20 hari 20 0.01666667
## 21 hari 21 0.01666667
## 22 hari 22 0.01666667
## 23 hari 23 0.01666667
## 24 hari 24 0.01666667
## 25 hari 25 0.01666667
## 26 hari 26 0.01666667
## 27 hari 27 0.01666667
## 28 hari 28 0.01666667
## 29 hari 29 0.01666667
## 30 hari 30 0.01666667
## 31 hari 31 0.01666667
## 32 hari 32 0.01666667
## 33 hari 33 0.01666667
## 34 hari 34 0.01666667
## 35 hari 35 0.01666667
## 36 hari 36 0.01666667
## 37 hari 37 0.01666667
## 38 hari 38 0.01666667
## 39 hari 39 0.01666667
## 40 hari 40 0.01666667
## 41 hari 41 0.01666667
## 42 hari 42 0.01666667
## 43 hari 43 0.01666667
## 44 hari 44 0.01666667
## 45 hari 45 0.01666667
## 46 hari 46 0.01666667
## 47 hari 47 0.01666667
## 48 hari 48 0.01666667
## 49 hari 49 0.01666667
## 50 hari 50 0.01666667
## 51 hari 51 0.01666667
## 52 hari 52 0.01666667
## 53 hari 53 0.01666667
## 54 hari 54 0.01666667
## 55 hari 55 0.01666667
## 56 hari 56 0.01666667
## 57 hari 57 0.01666667
## 58 hari 58 0.01666667
## 59 hari 59 0.01666667
## 60 hari 60 0.01666667
## 61 suhu 25 0.01666667
## 62 suhu 26 0.08333333
## 63 suhu 27 0.08333333
## 64 suhu 28 0.06666667
## 65 suhu 29 0.15000000
## 66 suhu 30 0.21666667
## 67 suhu 31 0.18333333
## 68 suhu 32 0.06666667
## 69 suhu 33 0.03333333
## 70 suhu 34 0.08333333
## 71 suhu 35 0.01666667
## 72 kelembapan 65 0.01666667
## 73 kelembapan 66 0.01666667
## 74 kelembapan 68 0.01666667
## 75 kelembapan 69 0.01666667
## 76 kelembapan 70 0.03333333
## 77 kelembapan 71 0.01666667
## 78 kelembapan 72 0.05000000
## 79 kelembapan 73 0.03333333
## 80 kelembapan 74 0.03333333
## 81 kelembapan 75 0.08333333
## 82 kelembapan 76 0.08333333
## 83 kelembapan 77 0.08333333
## 84 kelembapan 78 0.05000000
## 85 kelembapan 79 0.05000000
## 86 kelembapan 80 0.03333333
## 87 kelembapan 81 0.06666667
## 88 kelembapan 82 0.03333333
## 89 kelembapan 83 0.06666667
## 90 kelembapan 84 0.03333333
## 91 kelembapan 85 0.01666667
## 92 kelembapan 87 0.01666667
## 93 kelembapan 88 0.05000000
## 94 kelembapan 89 0.03333333
## 95 kelembapan 90 0.05000000
## 96 kelembapan 94 0.01666667
## 97 curah hujan 1 0.08333333
## 98 curah hujan 2 0.08333333
## 99 curah hujan 3 0.06666667
## 100 curah hujan 4 0.08333333
## 101 curah hujan 5 0.08333333
## 102 curah hujan 6 0.05000000
## 103 curah hujan 7 0.03333333
## 104 curah hujan 8 0.06666667
## 105 curah hujan 9 0.05000000
## 106 curah hujan 10 0.06666667
## 107 curah hujan 11 0.05000000
## 108 curah hujan 12 0.03333333
## 109 curah hujan 13 0.01666667
## 110 curah hujan 14 0.05000000
## 111 curah hujan 16 0.06666667
## 112 curah hujan 18 0.05000000
## 113 curah hujan 26 0.03333333
## 114 curah hujan 28 0.01666667
## 115 curah hujan 32 0.01666667
## 116 pm25 12 0.01666667
## 117 pm25 17 0.03333333
## 118 pm25 22 0.01666667
## 119 pm25 26 0.01666667
## 120 pm25 27 0.01666667
## 121 pm25 31 0.01666667
## 122 pm25 33 0.06666667
## 123 pm25 34 0.03333333
## 124 pm25 35 0.05000000
## 125 pm25 36 0.03333333
## 126 pm25 37 0.01666667
## 127 pm25 38 0.01666667
## 128 pm25 39 0.01666667
## 129 pm25 40 0.01666667
## 130 pm25 41 0.08333333
## 131 pm25 42 0.01666667
## 132 pm25 43 0.05000000
## 133 pm25 44 0.03333333
## 134 pm25 45 0.03333333
## 135 pm25 47 0.01666667
## 136 pm25 48 0.06666667
## 137 pm25 50 0.05000000
## 138 pm25 51 0.01666667
## 139 pm25 52 0.05000000
## 140 pm25 54 0.05000000
## 141 pm25 56 0.05000000
## 142 pm25 57 0.01666667
## 143 pm25 58 0.01666667
## 144 pm25 61 0.05000000
## 145 pm25 62 0.01666667
## 146 pm25 63 0.01666667
#Grafik Distribusi Diskrit
## GRAFIK DISTRIBUSI DISKRIT
# Atur layout (5 plot)
par(mfrow=c(3,2), mar=c(2,2,2,1))
# Fungsi aman buat plot
plot_pmf <- function(x, judul){
x_diskrit <- round(x)
freq <- table(x_diskrit)
pmf <- prop.table(freq)
barplot(pmf,
main=judul,
xlab="Nilai",
ylab="Probabilitas",
col="skyblue",
border="black")
}
# Plot semua variabel
plot_pmf(dataset_lingkungan$hari, "PMF Hari")
plot_pmf(dataset_lingkungan$suhu_c, "PMF Suhu")
plot_pmf(dataset_lingkungan$kelembapan_persen, "PMF Kelembapan")
plot_pmf(dataset_lingkungan$curah_hujan_mm, "PMF Curah Hujan")
plot_pmf(dataset_lingkungan$pm25_ugm3, "PMF PM2.5")
# Balikin layout normal
par(mfrow=c(1,1))

MINGGU 5 - “DISTRIBUSI KONTINU”
#Menghitung Parameter & Peluang
## MINGGU 5 - DISTRIBUSI KONTINU
hitung_normal <- function(x, nama_variabel){
mu <- mean(x, na.rm=TRUE)
sigma <- sd(x, na.rm=TRUE)
ambang <- mu
p_model <- 1 - pnorm(ambang, mean=mu, sd=sigma)
data.frame(
variabel = nama_variabel,
mean = mu,
sd = sigma,
peluang = p_model
)
}
hasil_normal <- rbind(
hitung_normal(dataset_lingkungan$hari, "hari"),
hitung_normal(dataset_lingkungan$suhu_c, "suhu"),
hitung_normal(dataset_lingkungan$kelembapan_persen, "kelembapan"),
hitung_normal(dataset_lingkungan$curah_hujan_mm, "curah hujan"),
hitung_normal(dataset_lingkungan$pm25_ugm3, "pm25")
)
hasil_normal
## variabel mean sd peluang
## 1 hari 30.500000 17.464249 0.5
## 2 suhu 29.903333 2.340286 0.5
## 3 kelembapan 78.766667 6.518206 0.5
## 4 curah hujan 9.083333 7.146913 0.5
## 5 pm25 43.100000 11.648380 0.5
#Histogram dan Kurva Normal
plot_normal <- function(x, judul){
mu <- mean(x, na.rm=TRUE)
sigma <- sd(x, na.rm=TRUE)
x_range <- range(x, na.rm=TRUE)
hist(x, probability=TRUE,
main=paste("Histogram + Normal:", judul),
xlab=judul,
xlim=x_range,
col="lightgray",
border="black")
curve(dnorm(x, mean=mu, sd=sigma),
from=x_range[1],
to=x_range[2],
add=TRUE,
lwd=2,
col="blue")
}
plot_normal(dataset_lingkungan$hari, "Hari")

plot_normal(dataset_lingkungan$suhu_c, "Suhu (°C)")

plot_normal(dataset_lingkungan$kelembapan_persen, "Kelembapan (%)")

plot_normal(dataset_lingkungan$curah_hujan_mm, "Curah Hujan (mm)")

plot_normal(dataset_lingkungan$pm25_ugm3, "PM2.5")

MINGGU 6 - Distribusi Sampling
set.seed(123)
B <- 2000
n1 <- 10
n2 <- 30
mean_n10 <- replicate(B, mean(sample(dataset_lingkungan$hari, n1, replace=TRUE)))
mean_n30 <- replicate(B, mean(sample(dataset_lingkungan$hari, n2, replace=TRUE)))
hist(mean_n10, main="Distribusi Sampling Mean Hari (n=10)", xlab="Mean Sampel")

hist(mean_n30, main="Distribusi Sampling Mean Hari (n=30)", xlab="Mean Sampel")

mean_n10 <- replicate(B, mean(sample(dataset_lingkungan$suhu_c, n1, replace=TRUE)))
mean_n30 <- replicate(B, mean(sample(dataset_lingkungan$suhu_c, n2, replace=TRUE)))
hist(mean_n10, main="Distribusi Sampling Mean Suhu(c) (n=10)", xlab="Mean Sampel")

hist(mean_n30, main="Distribusi Sampling Mean Suhu(c) (n=30)", xlab="Mean Sampel")

mean_n10 <- replicate(B, mean(sample(dataset_lingkungan$kelembapan_persen, n1, replace=TRUE)))
mean_n30 <- replicate(B, mean(sample(dataset_lingkungan$kelembapan_persen, n2, replace=TRUE)))
hist(mean_n10, main="Distribusi Sampling Mean Kelembapan(%) (n=10)", xlab="Mean Sampel")

hist(mean_n30, main="Distribusi Sampling Mean Kelembapan(%) (n=30)", xlab="Mean Sampel")

mean_n10 <- replicate(B, mean(sample(dataset_lingkungan$curah_hujan_mm, n1, replace=TRUE)))
mean_n30 <- replicate(B, mean(sample(dataset_lingkungan$curah_hujan_mm, n2, replace=TRUE)))
hist(mean_n10, main="Distribusi Sampling Mean Curah Hujan(mm) (n=10)", xlab="Mean Sampel")

hist(mean_n30, main="Distribusi Sampling Mean Curah Hujan(mm) (n=30)", xlab="Mean Sampel")

mean_n10 <- replicate(B, mean(sample(dataset_lingkungan$pm25_ugm3, n1, replace=TRUE)))
mean_n30 <- replicate(B, mean(sample(dataset_lingkungan$pm25_ugm3, n2, replace=TRUE)))
hist(mean_n10, main="Distribusi Sampling Mean PM2.5 (n=10)", xlab="Mean Sampel")

hist(mean_n30, main="Distribusi Sampling Mean PM2.5 (n=30)", xlab="Mean Sampel")

MINGGU 7 - Estimasi Parameter
#Rata-Rata
mean(dataset_lingkungan$hari)
## [1] 30.5
mean(dataset_lingkungan$suhu_c)
## [1] 29.90333
mean(dataset_lingkungan$kelembapan_persen)
## [1] 78.76667
mean(dataset_lingkungan$curah_hujan_mm)
## [1] 9.083333
mean(dataset_lingkungan$pm25_ugm3)
## [1] 43.1
#Interval Kepercayaan
t.test(dataset_lingkungan$hari, conf.level=0.95)$conf.int
## [1] 25.98851 35.01149
## attr(,"conf.level")
## [1] 0.95
t.test(dataset_lingkungan$suhu_c, conf.level=0.95)$conf.int
## [1] 29.29877 30.50789
## attr(,"conf.level")
## [1] 0.95
t.test(dataset_lingkungan$kelembapan_persen, conf.level=0.95)$conf.int
## [1] 77.08284 80.45050
## attr(,"conf.level")
## [1] 0.95
t.test(dataset_lingkungan$curah_hujan_mm, conf.level=0.95)$conf.int
## [1] 7.23709 10.92958
## attr(,"conf.level")
## [1] 0.95
t.test(dataset_lingkungan$pm25_ugm3, conf.level=0.95)$conf.int
## [1] 40.0909 46.1091
## attr(,"conf.level")
## [1] 0.95