# Load dataset cars
data(cars)
head(cars)
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
str(cars)
## 'data.frame': 50 obs. of 2 variables:
## $ speed: num 4 4 7 7 8 9 10 10 10 11 ...
## $ dist : num 2 10 4 22 16 10 18 26 34 17 ...
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
# Mengecek jumlah missing values di setiap kolom
colSums(is.na(cars))
## speed dist
## 0 0
Hasilnya semua nol, artinya tidak ada missing values.
# Cek missing values tanpa visualisasi
colSums(is.na(cars))
## speed dist
## 0 0
#Deteksi Outlier dengan Boxplot
boxplot(cars$dist, main = "Boxplot of Stopping Distance",
ylab = "Distance (ft)", col = "lightblue", border = "black")
#Identifikasi Outlier dengan IDR
# Hitung kuartil
Q1 <- quantile(cars$dist, 0.25) # Kuartil pertama (Q1)
Q3 <- quantile(cars$dist, 0.75) # Kuartil ketiga (Q3)
IQR_value <- Q3 - Q1 # IQR (Interquartile Range)
# Menentukan batas outlier
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Menampilkan nilai outlier
outliers <- cars$dist[cars$dist < lower_bound | cars$dist > upper_bound]
print(outliers)
## [1] 120
Nilai 120 terdeteksi sebagai outlier
#Visualisasi Outlier dengan Scatter PLot
# Scatter plot dengan outlier
plot(cars$speed, cars$dist, main = "Speed vs Stopping Distance",
xlab = "Speed (mph)", ylab = "Distance (ft)",
col = "blue", pch = 16)
# Menyoroti outlier dalam warna merah
points(cars$speed[cars$dist %in% outliers],
cars$dist[cars$dist %in% outliers],
col = "red", pch = 16, cex = 1.5)
#Mengatasi Outlier
#Menghapus Oulier
cars_clean <- cars[!(cars$dist < lower_bound | cars$dist > upper_bound), ]
#Mengganti Outlier dengan Median
cars$dist[cars$dist < lower_bound | cars$dist > upper_bound] <- median(cars$dist)
Hasil Analisis: Dataset bersih, tidak ada missing values. Ditemukan 1 outlier yaitu nilai 120.Outlier bisa dihapus atau diganti dengan median, tergantung tujuan analisis. Jika outlier bisa mengganggu analisis, maka sebaiknya dihapus. Jika ingin mempertahankan jumlah data, maka bisa menggantinya dengan median.