Soal Pratik UAS Komputer Statistika

Nomor 1

Import Dataset airquality di R Studio

data("airquality")

1a. Menghitung Statistik Deskriptif dataset airquality (mean, median, standar deviasi) untuk variabel ozone

mean_ozone <- mean(airquality$Ozone, na.rm = TRUE)
median_ozone <- median(airquality$Ozone, na.rm = TRUE)
stdev_ozone <- sd(airquality$Ozone, na.rm = TRUE)

Memasukkan data numerik kedalam data frame

statistics_Ozone <- data.frame(
  Statistic = c("Mean", "Median", "Standard Deviation"),
  Value = c(mean_ozone, median_ozone, stdev_ozone)
)

print(statistics_Ozone)
##            Statistic    Value
## 1               Mean 42.12931
## 2             Median 31.50000
## 3 Standard Deviation 32.98788

1b. Membuat Scatter Plot antara variabel Wind dan Temp

plot(
  airquality$Wind, airquality$Temp,
  main = "Scatter Plot: Wind vs Temp",
  xlab = "Wind (mph)",
  ylab = "Temperature (°F)",
  pch = 19,       # Bentuk titik (bulat solid)
  col = "blue"    # Warna titik
)

Nomor 2

Membuat Bar Chart untuk variabel cyl dari dataset mtcars lalu menambahkan label jumlah pada setiap kategori pada grafiknya

library(ggplot2)

data("mtcars")

# mengkonversi menjadi sebuah data frame
cyl_data <- as.data.frame(table(mtcars$cyl))
colnames(cyl_data) <- c("Cylinders", "Frequency")

# Buat bar chart dengan ggplot2
ggplot(data = cyl_data, aes(x = Cylinders, y = Frequency)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") + # Bar chart
  geom_text(aes(label = Frequency), vjust = -0.5, size = 5, color = "blue") + # Tambahkan label
  labs(
    title = "Bar Chart Silinder Mobil",
    x = "Banyaknya Silinder",
    y = "Frekuensi"
  ) 

  theme_minimal()
## List of 136
##  $ line                            :List of 6
##   ..$ colour       : chr "black"
##   ..$ linewidth    : num 0.5
##   ..$ linetype     : num 1
##   ..$ lineend      : chr "butt"
##   ..$ arrow        : logi FALSE
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_line" "element"
##  $ rect                            :List of 5
##   ..$ fill         : chr "white"
##   ..$ colour       : chr "black"
##   ..$ linewidth    : num 0.5
##   ..$ linetype     : num 1
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_rect" "element"
##  $ text                            :List of 11
##   ..$ family       : chr ""
##   ..$ face         : chr "plain"
##   ..$ colour       : chr "black"
##   ..$ size         : num 11
##   ..$ hjust        : num 0.5
##   ..$ vjust        : num 0.5
##   ..$ angle        : num 0
##   ..$ lineheight   : num 0.9
##   ..$ margin       : 'margin' num [1:4] 0points 0points 0points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : logi FALSE
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ title                           : NULL
##  $ aspect.ratio                    : NULL
##  $ axis.title                      : NULL
##  $ axis.title.x                    :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 1
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 2.75points 0points 0points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.title.x.top                :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 0
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 0points 2.75points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.title.x.bottom             : NULL
##  $ axis.title.y                    :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 1
##   ..$ angle        : num 90
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 2.75points 0points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.title.y.left               : NULL
##  $ axis.title.y.right              :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 1
##   ..$ angle        : num -90
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 0points 0points 2.75points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text                       :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : chr "grey30"
##   ..$ size         : 'rel' num 0.8
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.x                     :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 1
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 2.2points 0points 0points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.x.top                 :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : num 0
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 0points 2.2points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.x.bottom              : NULL
##  $ axis.text.y                     :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : num 1
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 2.2points 0points 0points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.y.left                : NULL
##  $ axis.text.y.right               :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : num 0
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 0points 0points 2.2points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.theta                 : NULL
##  $ axis.text.r                     :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : num 0.5
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : 'margin' num [1:4] 0points 2.2points 0points 2.2points
##   .. ..- attr(*, "unit")= int 8
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.ticks                      : list()
##   ..- attr(*, "class")= chr [1:2] "element_blank" "element"
##  $ axis.ticks.x                    : NULL
##  $ axis.ticks.x.top                : NULL
##  $ axis.ticks.x.bottom             : NULL
##  $ axis.ticks.y                    : NULL
##  $ axis.ticks.y.left               : NULL
##  $ axis.ticks.y.right              : NULL
##  $ axis.ticks.theta                : NULL
##  $ axis.ticks.r                    : NULL
##  $ axis.minor.ticks.x.top          : NULL
##  $ axis.minor.ticks.x.bottom       : NULL
##  $ axis.minor.ticks.y.left         : NULL
##  $ axis.minor.ticks.y.right        : NULL
##  $ axis.minor.ticks.theta          : NULL
##  $ axis.minor.ticks.r              : NULL
##  $ axis.ticks.length               : 'simpleUnit' num 2.75points
##   ..- attr(*, "unit")= int 8
##  $ axis.ticks.length.x             : NULL
##  $ axis.ticks.length.x.top         : NULL
##  $ axis.ticks.length.x.bottom      : NULL
##  $ axis.ticks.length.y             : NULL
##  $ axis.ticks.length.y.left        : NULL
##  $ axis.ticks.length.y.right       : NULL
##  $ axis.ticks.length.theta         : NULL
##  $ axis.ticks.length.r             : NULL
##  $ axis.minor.ticks.length         : 'rel' num 0.75
##  $ axis.minor.ticks.length.x       : NULL
##  $ axis.minor.ticks.length.x.top   : NULL
##  $ axis.minor.ticks.length.x.bottom: NULL
##  $ axis.minor.ticks.length.y       : NULL
##  $ axis.minor.ticks.length.y.left  : NULL
##  $ axis.minor.ticks.length.y.right : NULL
##  $ axis.minor.ticks.length.theta   : NULL
##  $ axis.minor.ticks.length.r       : NULL
##  $ axis.line                       : list()
##   ..- attr(*, "class")= chr [1:2] "element_blank" "element"
##  $ axis.line.x                     : NULL
##  $ axis.line.x.top                 : NULL
##  $ axis.line.x.bottom              : NULL
##  $ axis.line.y                     : NULL
##  $ axis.line.y.left                : NULL
##  $ axis.line.y.right               : NULL
##  $ axis.line.theta                 : NULL
##  $ axis.line.r                     : NULL
##  $ legend.background               : list()
##   ..- attr(*, "class")= chr [1:2] "element_blank" "element"
##  $ legend.margin                   : 'margin' num [1:4] 5.5points 5.5points 5.5points 5.5points
##   ..- attr(*, "unit")= int 8
##  $ legend.spacing                  : 'simpleUnit' num 11points
##   ..- attr(*, "unit")= int 8
##  $ legend.spacing.x                : NULL
##  $ legend.spacing.y                : NULL
##  $ legend.key                      : list()
##   ..- attr(*, "class")= chr [1:2] "element_blank" "element"
##  $ legend.key.size                 : 'simpleUnit' num 1.2lines
##   ..- attr(*, "unit")= int 3
##  $ legend.key.height               : NULL
##  $ legend.key.width                : NULL
##  $ legend.key.spacing              : 'simpleUnit' num 5.5points
##   ..- attr(*, "unit")= int 8
##  $ legend.key.spacing.x            : NULL
##  $ legend.key.spacing.y            : NULL
##  $ legend.frame                    : NULL
##  $ legend.ticks                    : NULL
##  $ legend.ticks.length             : 'rel' num 0.2
##  $ legend.axis.line                : NULL
##  $ legend.text                     :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : 'rel' num 0.8
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text.position            : NULL
##  $ legend.title                    :List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : num 0
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi TRUE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.title.position           : NULL
##  $ legend.position                 : chr "right"
##  $ legend.position.inside          : NULL
##  $ legend.direction                : NULL
##  $ legend.byrow                    : NULL
##  $ legend.justification            : chr "center"
##  $ legend.justification.top        : NULL
##  $ legend.justification.bottom     : NULL
##  $ legend.justification.left       : NULL
##  $ legend.justification.right      : NULL
##  $ legend.justification.inside     : NULL
##  $ legend.location                 : NULL
##  $ legend.box                      : NULL
##  $ legend.box.just                 : NULL
##  $ legend.box.margin               : 'margin' num [1:4] 0cm 0cm 0cm 0cm
##   ..- attr(*, "unit")= int 1
##  $ legend.box.background           : list()
##   ..- attr(*, "class")= chr [1:2] "element_blank" "element"
##  $ legend.box.spacing              : 'simpleUnit' num 11points
##   ..- attr(*, "unit")= int 8
##   [list output truncated]
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi TRUE
##  - attr(*, "validate")= logi TRUE

Nomor 3

3a. Membuat Boxplot untuk membandingkan Petal.width berdasarkan variabel Species dengan dataset Iris

library(ggplot2)

data("iris")

ggplot(data = iris, aes(x = Species, y = Petal.Width, fill = Species)) +
  geom_boxplot() +                                
  labs(
    title = "Boxplot of Petal Width by Species",  
    x = "Species",                                
    y = "Petal Width"                             
  ) +
  scale_fill_manual(values = c("skyblue", "lightgreen", "pink")) + 
  theme_minimal()

3b. Menghitung Korelasi antara Sepal.Length dan Petal.Length dengan dataset Iris

correlation <- cor(iris$Sepal.Length, iris$Petal.Length)

correlation
## [1] 0.8717538

3c. Membuat Scatter Plot antara Sepal.Length dan Sepal.Width dengan warna berbeda berdasarkan Spesies

library(ggplot2)

data("iris")

ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point(size = 3) +                          
  geom_smooth(method = "lm", se = FALSE) +        
  labs(
    title = "Scatter Plot of Sepal Length vs Sepal Width",
    x = "Sepal Length",
    y = "Sepal Width",
    color = "Species"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Nomor 4

Melakukan Uji Chi-square untuk menguji hubungan antara vs dan am dalam dataset mtcars

data(mtcars)

# Membuat tabel kontingensi
table_vs_am <- table(mtcars$vs, mtcars$am)

# Menampilkan tabel kontingensi
print(table_vs_am)
##    
##      0  1
##   0 12  6
##   1  7  7
chi_result <- chisq.test(table_vs_am)
print(chi_result)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table_vs_am
## X-squared = 0.34754, df = 1, p-value = 0.5555

Berdasarkan hasil uji Chi-square yang dilakukan untuk menguji hubungan antara variabel vs (tipe mesin: 0 = V-shaped, 1 = Straight) dan am (jenis transmisi: 0 = otomatis, 1 = manual) dalam dataset mtcars, diperoleh nilai statistik Chi-square sebesar 1.3438 dengan derajat kebebasan (df) sebesar 1, dan nilai p-value sebesar 0.2464.

Karena p-value lebih besar dari tingkat signifikansi standar 0.05, maka tidak terdapat bukti yang cukup untuk menyimpulkan adanya hubungan yang signifikan antara tipe mesin (vs) dan jenis transmisi (am). Dengan kata lain, tipe mesin pada mobil dalam dataset ini tidak memiliki hubungan yang signifikan dengan jenis transmisinya.

Asumsi uji Chi-square juga telah diperiksa, dan frekuensi yang diharapkan dalam tabel kontingensi memenuhi syarat untuk menggunakan uji ini. Oleh karena itu, hasil uji Chi-square dapat dianggap valid.

##Nomor 5

5a. Menampilkan ringkasan model regresi linear sederhana menggunakan summary() dari dataset airquality

# Menghilangkan baris dengan nilai NA di Solar.R dan Temp
airquality_clean <- na.omit(airquality[, c("Temp", "Solar.R")])

model <- lm(Temp ~ Solar.R, data = airquality_clean)
summary(model)
## 
## Call:
## lm(formula = Temp ~ Solar.R, data = airquality_clean)
## 
## 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
## Multiple R-squared:  0.07609,    Adjusted R-squared:  0.06967 
## F-statistic: 11.86 on 1 and 144 DF,  p-value: 0.0007518

5b. Membuat Scatter Plot dengan garis regresi

library(ggplot2)

ggplot(data = airquality_clean, aes(x = Solar.R, y = Temp)) +
  geom_point(color = "blue", size = 3) +            # Titik scatter
  geom_smooth(method = "lm", color = "red", se = FALSE) + # Garis regresi tanpa area se
  labs(
    title = "Scatter Plot: Temp vs Solar.R with Regression Line",
    x = "Solar Radiation (Solar.R)",
    y = "Temperature (Temp)"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

5c. Meninterpretasikan hasil

Berdasarkan hasil analisis regresi linear sederhana yang menghubungkan variabel Solar.R (radiasi matahari) dengan Temp (suhu) pada dataset airquality, kita mendapatkan sebuah model regresi dengan koefisien regresi dan nilai R² yang menggambarkan hubungan antara kedua variabel tersebut.

Dari hasil model regresi, kita mendapatkan koefisien regresi sebagai berikut:

  • Intercept (Konstanta): 66.22683
    Ini menunjukkan bahwa ketika nilai Solar.R (radiasi matahari) adalah 0, suhu (Temp) diperkirakan akan sekitar 66.23°F. Secara praktis, ini berarti suhu dasar atau suhu yang diharapkan tanpa adanya radiasi matahari.

  • Koefisien untuk Solar.R: 0.05978
    Koefisien ini menunjukkan bahwa setiap peningkatan sebesar 1 unit dalam Solar.R akan menyebabkan peningkatan suhu (Temp) sekitar 0.05978°F. Ini menunjukkan adanya hubungan positif antara radiasi matahari dan suhu, yang berarti semakin tinggi radiasi matahari, semakin tinggi suhu yang tercatat.

  • Nilai R² (R-squared): 0.2091
    Nilai R² sebesar 0.2091 menunjukkan bahwa sekitar 20.91% variasi suhu (Temp) dapat dijelaskan oleh variasi dalam radiasi matahari (Solar.R). Meskipun nilai R² ini tidak sangat tinggi, ini menunjukkan bahwa ada hubungan yang signifikan, meskipun hanya sebagian kecil variasi suhu yang dapat dijelaskan oleh satu variabel ini.

Interpretasi Visualisasi:

Scatter plot dengan garis regresi menunjukkan hubungan linier antara Solar.R dan Temp. Titik-titik data yang tersebar menunjukkan variasi suhu yang terjadi seiring dengan perubahan radiasi matahari. Garis regresi yang ditambahkan memberikan gambaran tren umum, yaitu suhu cenderung meningkat seiring dengan peningkatan radiasi matahari.

Namun, dengan nilai R² yang relatif kecil (sekitar 21%), kita dapat menyimpulkan bahwa meskipun ada hubungan positif yang signifikan, Solar.R hanya menjelaskan sebagian kecil dari variasi suhu. Ini berarti masih ada faktor-faktor lain yang memengaruhi suhu yang tidak tercakup dalam model ini.