Tujuan Analisis

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.

1. Analisis Variabel Ozone dalam Dataset airquality

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.

2. Bar Chart Variabel cyl dalam Dataset mtcars

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.

3. Analisis Dataset iris

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.

4. Uji Chi-Square untuk menguji hubungan antara dua variabel kategorik (vs dan am) dalam dataset mtcars

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.

5. Model Regresi Linier Sederhana Menggunakan Dataset “airquality” Untuk Memprediksi Variabel “Temp” Berdasarkan “Solar.R”

# (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.