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