1(a) Menghitung statistik deskriptif untuk variabel Ozone

data("airquality")
Menghapus nilai NA pada variabel Ozone
ozone_clean <- na.omit(airquality$Ozone)
Menghitung mean, median, dan standar deviasi
ozone_mean <- mean(ozone_clean)
ozone_median <- median(ozone_clean)
ozone_sd <- sd(ozone_clean)
Menampilkan hasil
cat("Statistik Deskriptif Ozone:\n")
## Statistik Deskriptif Ozone:
cat("Mean:", ozone_mean, "\n")
## Mean: 42.12931
cat("Median:", ozone_median, "\n")
## Median: 31.5
cat("Standar Deviasi:", ozone_sd, "\n")
## Standar Deviasi: 32.98788

1(b) Membuat diagram pencar (scatter plot) antara Wind dan Temp

Menghapus nilai NA jika ada
wind_temp_clean <- airquality[complete.cases(airquality[c("Wind", "Temp")]), ]
Membuat scatter plot
plot(
  wind_temp_clean$Wind, wind_temp_clean$Temp,
  xlab = "Wind (mph)",
  ylab = "Temperature (°F)",
  main = "Scatter Plot of Wind vs Temperature",
  pch = 16, col = "blue"
)

2. Buatlah barchart untuk variabel cyl dari dataset mtcars dan tambahkan label jumlah setiap kategori pada grafik.

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
ggplot(mtcars, aes(x = factor(cyl))) +
  geom_bar(fill = "green", color = "black") +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(title = "Bar Chart untuk Jumlah Silinder (cyl)",
       x = "Jumlah Silinder",
       y = "Frekuensi")
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Menggunakan dataset iris
data("iris")

3(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("skyblue", "lightgreen", "pink")
)

3(b) Menghitung korelasi antara Sepal.Length dan Petal.Length

correlation <- cor(iris$Sepal.Length, iris$Petal.Length)
cat("Korelasi antara Sepal.Length dan Petal.Length:", correlation, "\n")
## Korelasi antara Sepal.Length dan Petal.Length: 0.8717538
Interpretasi
if (correlation > 0.7) {
  cat("Interpretasi: Korelasi kuat dan positif.\n")
} else if (correlation > 0.4) {
  cat("Interpretasi: Korelasi sedang dan positif.\n")
} else if (correlation > 0) {
  cat("Interpretasi: Korelasi lemah dan positif.\n")
} else {
  cat("Interpretasi: Tidak ada korelasi atau korelasi negatif.\n")
}
## Interpretasi: Korelasi kuat dan positif.

3(c) Membuat scatter plot antara Sepal.Length dan Sepal.Width dengan warna berbeda berdasarkan spesies

library(ggplot2)
Scatter plot dengan warna berdasarkan spesies
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point(size = 2) +
  geom_smooth(method = "lm", se = FALSE) + # Garis regresi per spesies
  labs(
    title = "Scatter Plot Sepal.Length vs Sepal.Width",
    x = "Sepal.Length",
    y = "Sepal.Width"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

4. Lakukan uji Chi-Square untuk mengetahui hubungan antara dua variabel kategorik, yaitu vs dan am, dalam dataset mtcars.

Menggunakan dataset mtcars
data("mtcars")
Mengonversi variabel vs dan am menjadi faktor
mtcars$vs <- as.factor(mtcars$vs)
mtcars$am <- as.factor(mtcars$am)
Membuat tabel kontingensi antara vs dan am
contingency_table <- table(mtcars$vs, mtcars$am)
Menampilkan tabel kontingensi
cat("Tabel Kontingensi:\n")
## Tabel Kontingensi:
print(contingency_table)
##    
##      0  1
##   0 12  6
##   1  7  7
Melakukan uji Chi-Square
chi_square_test <- chisq.test(contingency_table)
Menampilkan hasil uji Chi-Square
cat("\nHasil Uji Chi-Square:\n")
## 
## Hasil Uji Chi-Square:
print(chi_square_test)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  contingency_table
## X-squared = 0.34754, df = 1, p-value = 0.5555
Interpretasi
if (chi_square_test$p.value < 0.05) {
  cat("\nKesimpulan: Ada hubungan signifikan antara vs dan am (p-value <", chi_square_test$p.value, ").\n")
} else {
  cat("\nKesimpulan: Tidak ada hubungan signifikan antara vs dan am (p-value =", chi_square_test$p.value, ").\n")
}
## 
## Kesimpulan: Tidak ada hubungan signifikan antara vs dan am (p-value = 0.5555115 ).

5. Bangun model regresi linear sederhana menggunakan dataset airquality untuk memprediksi Temp berdasarkan Solar.R

Menggunakan dataset airquality
data("airquality")

5(a) Membangun model regresi linear sederhana

Menghapus nilai NA
clean_data <- na.omit(airquality)
Membuat model: Temp ~ Solar.R
model <- lm(Temp ~ Solar.R, data = clean_data)
Menampilkan ringkasan model
cat("Ringkasan Model:\n")
## Ringkasan Model:
summary_model <- summary(model)
print(summary_model)
## 
## Call:
## lm(formula = Temp ~ Solar.R, data = clean_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -19.735  -6.292   1.080   6.231  18.648 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 72.110720   1.970502  36.595  < 2e-16 ***
## Solar.R      0.030747   0.009571   3.212  0.00173 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.15 on 109 degrees of freedom
## Multiple R-squared:  0.08649,    Adjusted R-squared:  0.07811 
## F-statistic: 10.32 on 1 and 109 DF,  p-value: 0.001731

5(b) Membuat scatter plot dengan garis regresi

plotregresi <- ggplot(airquality, aes(x = Solar.R, y = Temp)) + 
  geom_point() + 
  geom_smooth(method = "lm")
print(plotregresi)
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 7 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 7 rows containing missing values or values outside the scale range
## (`geom_point()`).

5(c) Interpretasi hasil

cat("\nInterpretasi:\n")
## 
## Interpretasi:
cat("1. Koefisien Regresi:\n")
## 1. Koefisien Regresi:
cat("   Intercept (Beta_0):", summary_model$coefficients[1, 1], "\n")
##    Intercept (Beta_0): 72.11072
cat("   Slope (Beta_1):", summary_model$coefficients[2, 1], "\n")
##    Slope (Beta_1): 0.03074685
cat("\n2. Nilai R-squared:\n")
## 
## 2. Nilai R-squared:
cat("   R²:", summary_model$r.squared, "\n")
##    R²: 0.08648754
if (summary_model$r.squared >= 0.7) {
  cat("   Interpretasi: Model memiliki kekuatan prediksi yang baik.\n")
} else if (summary_model$r.squared >= 0.4) {
  cat("   Interpretasi: Model memiliki kekuatan prediksi sedang.\n")
} else {
  cat("   Interpretasi: Model memiliki kekuatan prediksi lemah.\n")
}
##    Interpretasi: Model memiliki kekuatan prediksi lemah.