Penelitian ini menganalisis kualitas udara di Kota New York pada tahun 1973 menggunakan dataset airquality. Analisis dilakukan melalui statistik deskriptif, visualisasi distribusi variabel, korelasi antarvariabel, regresi linear sederhana, dan uji ANOVA. Hasil menunjukkan bahwa suhu memiliki hubungan positif kuat dengan ozon, sedangkan angin berhubungan negatif. Radiasi matahari juga turut memperkuat pembentukan ozon. ANOVA mengungkap adanya perbedaan signifikan kadar ozon antarbulan, terutama Juni–Juli sebagai periode tertinggi. Secara keseluruhan, variabel meteorologi dan kondisi musiman memengaruhi variasi ozon di New York.
Kualitas udara merupakan aspek penting yang berhubungan dengan kesehatan masyarakat dan lingkungan hidup. Salah satu indikator kualitas udara adalah ozon troposfer, yang pembentukannya dipengaruhi oleh suhu, radiasi matahari, dan kondisi atmosfer lainnya.
Dataset airquality berisi pengukuran kualitas udara harian di Kota New York pada tahun 1973. Variabel-variabel yang disediakan mencakup:
Analisis ini memberi pemahaman mengenai faktor-faktor meteorologi yang memengaruhi ozon troposfer.
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
summary(airquality)
## Ozone Solar.R Wind Temp
## Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00
## 1st Qu.: 18.00 1st Qu.:115.8 1st Qu.: 7.400 1st Qu.:72.00
## Median : 31.50 Median :205.0 Median : 9.700 Median :79.00
## Mean : 42.13 Mean :185.9 Mean : 9.958 Mean :77.88
## 3rd Qu.: 63.25 3rd Qu.:258.8 3rd Qu.:11.500 3rd Qu.:85.00
## Max. :168.00 Max. :334.0 Max. :20.700 Max. :97.00
## NA's :37 NA's :7
## Month Day
## Min. :5.000 Min. : 1.0
## 1st Qu.:6.000 1st Qu.: 8.0
## Median :7.000 Median :16.0
## Mean :6.993 Mean :15.8
## 3rd Qu.:8.000 3rd Qu.:23.0
## Max. :9.000 Max. :31.0
##
Pembahasan:
Data menunjukkan nilai hilang terutama pada variabel Ozone dan Solar.R,
sehingga diperlukan pembersihan.
air_clean <- na.omit(airquality)
air_clean
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 38 29 127 9.7 82 6 7
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 44 23 148 8.0 82 6 13
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
Jumlah data setelah pembersihan:
nrow(air_clean)
## [1] 111
Pembahasan:
Dataset yang sudah dibersihkan memiliki observasi penuh dan siap
dianalisis lebih lanjut.
hist(air_clean$Temp,
main = "Distribusi Suhu Udara",
xlab = "Suhu (°F)",
col = "lightgreen", border = "darkgreen")
Pembahasan:
Sebagian besar suhu berada pada rentang 70–90°F, mencerminkan kondisi
musim panas yang mendukung pembentukan ozon.
hist(air_clean$Ozone,
main = "Distribusi Kadar Ozon",
xlab = "Ozon (ppb)",
col = "skyblue", border = "blue")
Pembahasan:
Distribusi kadar ozon cukup menyebar dengan beberapa titik tinggi yang
menandakan adanya hari-hari dengan kondisi atmosfer ekstrem.
hist(air_clean$Wind,
main = "Distribusi Kecepatan Angin",
xlab = "Wind (mph)",
col = "lightyellow", border = "gold")
Pembahasan:
Sebagian besar angin bergerak pada kecepatan 5–15 mph. Angin berfungsi
menyebarkan polutan, sehingga kecepatan yang lebih tinggi biasanya
berkaitan dengan ozon lebih rendah.
boxplot(Ozone ~ Month, data = air_clean,
main = "Kadar Ozon Berdasarkan Bulan",
xlab = "Bulan",
ylab = "Ozon (ppb)",
col = "orange")
Pembahasan:
Bulan Juni dan Juli memiliki kadar ozon tertinggi. Kondisi ini sejalan
dengan suhu dan radiasi matahari yang lebih tinggi pada pertengahan
musim panas.
plot(air_clean$Temp, air_clean$Ozone,
main = "Hubungan Suhu dan Ozon",
xlab = "Suhu (°F)",
ylab = "Ozon (ppb)",
pch = 19, col = "purple")
abline(lm(Ozone ~ Temp, data = air_clean), col = "red", lwd = 2)
Pembahasan:
Hubungan positif terlihat jelas. Suhu lebih tinggi berkaitan dengan
kadar ozon yang lebih tinggi. Garis regresi menunjukkan pola linear yang
kuat.
cor(air_clean[, c("Ozone", "Solar.R", "Wind", "Temp")])
## Ozone Solar.R Wind Temp
## Ozone 1.0000000 0.3483417 -0.6124966 0.6985414
## Solar.R 0.3483417 1.0000000 -0.1271835 0.2940876
## Wind -0.6124966 -0.1271835 1.0000000 -0.4971897
## Temp 0.6985414 0.2940876 -0.4971897 1.0000000
Pembahasan Korelasi:
corr <- cor(air_clean[, c("Ozone", "Solar.R", "Wind", "Temp")])
image(corr, axes = FALSE, main = "Heatmap Korelasi")
axis(1, at = seq(0,1,length=4), labels = colnames(corr))
axis(2, at = seq(0,1,length=4), labels = colnames(corr))
Pembahasan:
Heatmap menunjukkan hubungan paling kuat adalah antara suhu dan ozon,
serta hubungan negatif antara angin dan ozon. Heatmap menunjukkan
intensitas korelasi menggunakan tingkat kecerahan warna.
- Warna terang: korelasi positif yang kuat (misal Ozone–Temp).
- Warna gelap: korelasi negatif atau lemah (misal Ozone–Wind).
- Pola heatmap memperkuat hasil korelasi numerik sebelumnya.
model <- lm(Ozone ~ Temp, data = air_clean)
summary(model)
##
## Call:
## lm(formula = Ozone ~ Temp, data = air_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.922 -17.459 -0.874 10.444 118.078
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -147.6461 18.7553 -7.872 2.76e-12 ***
## Temp 2.4391 0.2393 10.192 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 23.92 on 109 degrees of freedom
## Multiple R-squared: 0.488, Adjusted R-squared: 0.4833
## F-statistic: 103.9 on 1 and 109 DF, p-value: < 2.2e-16
Pembahasan:
Model regresi menunjukkan bahwa suhu secara signifikan mempengaruhi
kadar ozon. Koefisien positif mengartikan bahwa setiap kenaikan satu
derajat suhu dapat meningkatkan ozon.
anova_model <- aov(Ozone ~ factor(Month), data = air_clean)
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## factor(Month) 4 27383 6846 7.686 1.78e-05 ***
## Residuals 106 94419 891
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pembahasan:
Hasil ANOVA (p-value < 0.05) menunjukkan bahwa rata-rata ozon berbeda
signifikan antar bulan. Hal ini mendukung temuan boxplot.
TukeyHSD(anova_model)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Ozone ~ factor(Month), data = air_clean)
##
## $`factor(Month)`
## diff lwr upr p adj
## 6-5 5.3194444 -27.055937 37.694826 0.9909676
## 7-5 34.9903846 11.543913 58.436857 0.0006529
## 8-5 35.8750000 11.705694 60.044306 0.0007086
## 9-5 7.3232759 -15.533665 30.180217 0.9003224
## 7-6 29.6709402 -2.363039 61.704919 0.0832942
## 8-6 30.5555556 -2.011209 63.122320 0.0768729
## 9-6 2.0038314 -29.601208 33.608871 0.9997820
## 8-7 0.8846154 -22.825422 24.594653 0.9999736
## 9-7 -27.6671088 -50.037855 -5.296363 0.0074736
## 9-8 -28.5517241 -51.678950 -5.424498 0.0076199
Pembahasan:
Tukey menunjukkan pasangan bulan mana yang berbeda signifikan, terutama
bulan Juni dan Juli dibandingkan Mei atau September.