Tujuan dari analisis ini adalah untuk melakukan eksplorasi dan analisis terhadap dataset yang mencakup kualitas udara (airquality), kendaraan (mtcars), dan tanaman (iris). Di sini, kita akan menggali beberapa jenis analisis seperti statistik deskriptif, korelasi antar variabel, visualisasi data, hingga regresi linear untuk membuat prediksi.
data("airquality") #Load dataset
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
# (a) Menghitung statistik deskriptif (mean, median, standar deviasi) variabel Ozone.
summary(airquality$Ozone)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 18.00 31.50 42.13 63.25 168.00 37
sd(airquality$Ozone, na.rm = TRUE)
## [1] 32.98788
Hasil summary menampilkan mean, median, min, max, dan quartiles. Standar deviasi dihitung dengan sd() sambil mengabaikan nilai NA.
# (b) Diagram pencar (scatter plot) antara variabel Wind dan Temp
plot(airquality$Wind, airquality$Temp,
xlab = "Wind",
ylab = "Temp",
main = "Scatter Plot antara Wind dan Temp",
col = "skyblue", pch = 16)
Scatter plot di atas menunjukkan hubungan antara Wind (kecepatan angin)
dan Temp (suhu). Berdasarkan persebaran titik-titik data, terlihat
adanya tren negatif antara variabel Wind dan Temp. Ini berarti, seiring
dengan peningkatan kecepatan angin (Wind), suhu (Temp) cenderung
menurun.Namun, data tampak tersebar dengan cukup merata yang
mengindikasikan hubungan negatif ini bersifat lemah hingga sedang.
data(mtcars) # Load dataset
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
barplot(table(mtcars$cyl),
main = "Bar Chart Jumlah Kategori cyl",
xlab = "Jumlah Silinder (cyl)",
ylab = "Frekuensi",
col = "blue")
text(x = barplot(table(mtcars$cyl)),
y = table(mtcars$cyl),
label = table(mtcars$cyl), pos = 3)
Bar chart tersebut menunjukkan distribusi frekuensi dari variabel “cyl”
(jumlah silinder) dalam dataset mtcars. Setiap batang pada grafik
merepresentasikan satu kategori jumlah silinder, yaitu 4, 6, dan 8
silinder. Ketinggian setiap batang mengindikasikan banyaknya mobil dalam
dataset yang memiliki jumlah silinder tersebut. Dari grafik terlihat
bahwa kategori dengan jumlah silinder 8 memiliki frekuensi tertinggi,
diikuti oleh kategori 4 silinder, dan kategori 6 silinder memiliki
frekuensi terendah. Ini mengindikasikan bahwa dalam dataset mtcars,
sebagian besar mobil memiliki 8 silinder, sementara jumlah mobil dengan
6 silinder relatif lebih sedikit.
data("iris") # Load dataset
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
# (a) Membuat boxplot untuk membandingkan Petal.Width berdasarkan variabel Species
boxplot(Petal.Width ~ Species, data = iris,
main = "Boxplot Petal.Width berdasarkan Species",
xlab = "Species", ylab = "Petal Width",
col = c("orange", "purple", "cyan"))
Boxplot di atas menunjukkan distribusi lebar petal (Petal.Width) untuk
tiga spesies bunga yang berbeda (setosa, versicolor, dan virginica).
Dapat dilihat bahwa secara umum, spesies virginica memiliki lebar petal
yang paling besar, diikuti oleh versicolor, dan setosa memiliki lebar
petal yang paling kecil. Selain itu, rentang (range) lebar petal pada
spesies virginica juga lebih besar dibandingkan dengan dua spesies
lainnya. Hal ini mengindikasikan adanya variasi yang lebih besar pada
lebar petal spesies virginica. Garis tengah (median) pada boxplot juga
menunjukkan bahwa nilai tengah lebar petal untuk setiap spesies berbeda
secara signifikan. Dari boxplot ini, kita dapat menyimpulkan bahwa lebar
petal merupakan karakteristik yang dapat digunakan untuk membedakan
ketiga spesies bunga tersebut.
# (b) Menghitung korelasi antara Sepal.Length dengan Petal.Length
cor(iris$Sepal.Length, iris$Petal.Length)
## [1] 0.8717538
Hasil korelasi antara Sepal.Length dan Petal.Length adalah 0.8717538, yang menunjukkan adanya korelasi positif yang cukup kuat di antara keduanya.Korelasi positif berarti bahwa ketika panjang Sepal meningkat, maka panjang Petal juga cenderung meningkat. Sebaliknya, ketika panjang Sepal menurun, panjang Petal juga cenderung menurun.
# (c) Membuat Scatter Plot antara Sepal.Length dan Sepal.Width berdasarkan variabel Species
plot(iris$Sepal.Length, iris$Sepal.Width,
col = iris$Species,
pch = 16,
xlab = "Sepal Length",
ylab = "Sepal Width",
main = "Scatter Plot berdasarkan Species")
legend("topright", legend = levels(iris$Species),
col = 1:3, pch = 16)
abline(lm(Sepal.Width ~ Sepal.Length, data = iris[iris$Species == "setosa", ]), col = "red")
abline(lm(Sepal.Width ~ Sepal.Length, data = iris[iris$Species == "versicolor", ]), col = "green")
abline(lm(Sepal.Width ~ Sepal.Length, data = iris[iris$Species == "virginica", ]), col = "blue")
Scatter plot di atas menunjukkan hubungan antara panjang sepal (Sepal
Length) dan lebar sepal (Sepal Width) untuk tiga spesies bunga yang
berbeda (setosa, versicolor, dan virginica). Dari plot ini, dapat
dilihat bahwa secara umum, spesies setosa memiliki panjang dan lebar
sepal yang lebih kecil dibandingkan dengan spesies versicolor dan
virginica. Spesies virginica cenderung memiliki panjang dan lebar sepal
yang lebih besar. Selain itu, kemiringan garis untuk masing-masing
spesies juga berbeda, menunjukkan bahwa hubungan antara panjang dan
lebar sepal tidak persis sama untuk ketiga spesies. Dengan demikian,
scatter plot ini menunjukkan bahwa panjang dan lebar sepal dapat menjadi
ciri yang berguna untuk membedakan ketiga spesies bunga tersebut.
tbl <- table(mtcars$vs, mtcars$am) # Membuat tabel kontingensi
chisq.test(tbl)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tbl
## X-squared = 0.34754, df = 1, p-value = 0.5555
Hasil dari Uji Chi-Square menunjukkan nilai statistik X-squared = 0.34754 dengan df = 1 (derajat kebebasan) dan p-value = 0.5555. Karena p-value lebih besar dari tingkat signifikansi yang umum digunakan (misalnya 0.05), kita gagal untuk menolak hipotesis nol yang menyatakan bahwa tidak ada hubungan yang signifikan antara kedua variabel yang diuji. Dengan kata lain, hasil ini menunjukkan bahwa tidak ada bukti yang cukup untuk mendukung adanya hubungan yang signifikan antara variabel yang diuji dalam dataset.
# (a) Ringkasan Model
model <- lm(Temp ~ Solar.R, data = airquality)
summary(model)
##
## Call:
## lm(formula = Temp ~ Solar.R, data = airquality)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.3787 -4.9572 0.8932 5.9111 18.4013
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 72.863012 1.693951 43.014 < 2e-16 ***
## Solar.R 0.028255 0.008205 3.444 0.000752 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.898 on 144 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.07609, Adjusted R-squared: 0.06967
## F-statistic: 11.86 on 1 and 144 DF, p-value: 0.0007518
Hasil dari model regresi linear sederhana yang memprediksi variabel Temp berdasarkan Solar.R menunjukkan bahwa koefisien untuk Intercept adalah 72.863012 dan untuk Solar.R adalah 0.028255, yang menunjukkan bahwa dengan setiap peningkatan satu unit pada Solar.R, suhu Temp diperkirakan akan meningkat sebesar 0.028255. Koefisien untuk Solar.R juga signifikan dengan nilai p-value = 0.000752 yang lebih kecil dari 0.05, sehingga kita dapat menyimpulkan bahwa ada hubungan yang signifikan antara Solar.R dan Temp. Nilai Multiple R-squared sebesar 0.07609 menunjukkan bahwa model ini hanya dapat menjelaskan sekitar 7.6% variasi pada Temp dengan Solar.R sebagai prediktor, yang berarti model ini memiliki daya prediksi yang rendah. Adjusted R-squared yang sedikit lebih rendah (0.06967) menunjukkan bahwa perbaikan model dengan variabel tambahan tidak banyak meningkatkan daya prediksi. Nilai F-statistic sebesar 11.86 dan p-value = 0.0007518 menunjukkan bahwa model secara keseluruhan signifikan. Namun, karena R-squared yang rendah, model ini memiliki keterbatasan dalam menjelaskan variasi suhu berdasarkan hanya Solar.R.
# (b) Membuat Scatter Plot Dengan Garis Regresi
plot(airquality$Solar.R, airquality$Temp,
xlab = "Solar.R", ylab = "Temp",
main = "Scatter Plot Temp vs Solar.R")
abline(model, col = "red")
Scatter plot ini menunjukkan adanya hubungan positif yang lemah antara
suhu dan radiasi matahari. Meskipun secara umum suhu cenderung meningkat
seiring dengan peningkatan radiasi matahari, hubungan ini tidak selalu
konsisten dan dipengaruhi oleh faktor-faktor lain.
Koefisien Regresi: Intercept (72.863012) menunjukkan nilai suhu yang diprediksi ketika nilai Solar.R adalah 0. Sedangkan koefisien Solar.R (0.028255) menunjukkan pengaruh perubahan nilai Solar.R terhadap perubahan nilai Temp. Artinya, setiap kenaikan 1 unit pada Solar.R akan menyebabkan kenaikan suhu sebesar 0.028255 unit.