1. Data Mahasiswa

Membuat Data Awal

# Data awal
mahasiswa <- data.frame(
  Nama = c("Ani", "Budi", "Carli", "Elon", "Fajar", "Gani", "Haidar"),
  Asal = c("Sukabumi", "Jogja", "Depok", "Jakarta", "Surabaya", "Purwokerto", "Jombang")
)

# Tampilkan data
print(mahasiswa)
##     Nama       Asal
## 1    Ani   Sukabumi
## 2   Budi      Jogja
## 3  Carli      Depok
## 4   Elon    Jakarta
## 5  Fajar   Surabaya
## 6   Gani Purwokerto
## 7 Haidar    Jombang

Bagian ini membuat sebuah data frame berisi 7 mahasiswa, masing-masing dengan nama dan asal daerahnya.

Menyisipkan Data Baru pada Baris Keempat

# Menyisipkan Duta dari Purworejo ke baris ke-4
mahasiswa <- rbind(
  mahasiswa[1:3, ],
  data.frame(Nama = "Duta", Asal = "Purworejo"),
  mahasiswa[4:nrow(mahasiswa), ]
)

# Tampilkan data
print(mahasiswa)
##      Nama       Asal
## 1     Ani   Sukabumi
## 2    Budi      Jogja
## 3   Carli      Depok
## 4    Duta  Purworejo
## 41   Elon    Jakarta
## 5   Fajar   Surabaya
## 6    Gani Purwokerto
## 7  Haidar    Jombang

Bagian ini menyisipkan mahasiswa baru bernama Duta dari Purworejo ke baris ke-4 dalam data. Untuk itu, data dipisah menjadi dua bagian: sebelum dan sesudah baris ke-4, lalu digabung kembali dengan rbind().

Ringkasan Numerik dan Frekuensi Asal Daerah

# Ringkasan numerik
summary(mahasiswa)
##      Nama               Asal          
##  Length:8           Length:8          
##  Class :character   Class :character  
##  Mode  :character   Mode  :character
# Frekuensi asal daerah mahasiswa
table(mahasiswa$Asal)
## 
##      Depok    Jakarta      Jogja    Jombang Purwokerto  Purworejo   Sukabumi 
##          1          1          1          1          1          1          1 
##   Surabaya 
##          1

Interpretasi Hasil

  • Setelah menyisipkan mahasiswa bernama Duta dari Purworejo, total mahasiswa menjadi 8 orang.

  • Terdapat 8 daerah asal yang berbeda, di mana frekuensi tiap asal = 1.

  • Penambahan mahasiswa dari Purworejo menambah representasi daerah di tabel.

2. Regresi Linear: Ozone terhadap Temperatur

Membuat Data Ozone dan Temperatur

ozone <- c(2.29, 2.62, 2.84, 2.67, 2.00, 2.51, 2.22, 2.41, 3.44, 3.30)
temp <- c(74, 62, 65, 59, 61, 69, 66, 68, 67, 72)

ozone
##  [1] 2.29 2.62 2.84 2.67 2.00 2.51 2.22 2.41 3.44 3.30
temp
##  [1] 74 62 65 59 61 69 66 68 67 72

Membuat dua vektor numerik yang menampilkan 10 nilai kadar ozone dan 10 nilai temperatur.

Membuat Matriks X dan Y

X <- cbind(1, temp)
Y <- matrix(ozone, ncol=1)

X
##         temp
##  [1,] 1   74
##  [2,] 1   62
##  [3,] 1   65
##  [4,] 1   59
##  [5,] 1   61
##  [6,] 1   69
##  [7,] 1   66
##  [8,] 1   68
##  [9,] 1   67
## [10,] 1   72
Y
##       [,1]
##  [1,] 2.29
##  [2,] 2.62
##  [3,] 2.84
##  [4,] 2.67
##  [5,] 2.00
##  [6,] 2.51
##  [7,] 2.22
##  [8,] 2.41
##  [9,] 3.44
## [10,] 3.30

Kode di atas membuat dua matriks:

  • Matriks X berukuran 10 × 2

  • Matriks Y berukuran 10 × 1

di mana:

  • X: matriks desain berisi kolom pertama (intersep) dengan nilai 1 dan kolom kedua berisi data temperatur.

  • Y: vektor kolom dari data ozone.

Menghitung Koefisien Regresi

# Koefisien regresi b = (X'X)^-1 X'Y
b <- solve(t(X) %*% X) %*% t(X) %*% Y
b
##            [,1]
##      1.32738854
## temp 0.01964723

Rumus tersebut digunakan untuk mendapatkan nilai parameter dari model regresi linier sederhana.

\(b = (X^T X)^{-1} X^T Y\)

Hasil Regresi

alpha <- b[1]
beta <- b[2]

cat(sprintf("Ozone = %.4f + %.4f * Temperatur\n", alpha, beta))
## Ozone = 1.3274 + 0.0196 * Temperatur
  • b[1] adalah nilai intersep (α)

  • b[2] adalah kemiringan garis regresi atau slope (β)

Interpretasi Hasil

  • Intersep (α) sebesar 0.1234 berarti bahwa saat temperatur 0°C.

  • Koefisien regresi (β) sebesar 0.0345 berarti bahwa setiap kenaikan 1 derajat temperatur, kadar ozone meningkat rata-rata sebesar 0.0345 satuan.

  • Karena koefisien β bernilai positif, maka hubungan antara temperatur dan kadar ozone bersifat positif, artinya semakin tinggi suhu, semakin tinggi kadar ozone.

3. Ringkasan Numerik

Membuat Data Frame dan Ringkasan Statistik

data <- data.frame(Ozone = ozone, Temperatur = temp)

# Ringkasan Statistik
summary(data)
##      Ozone         Temperatur   
##  Min.   :2.000   Min.   :59.00  
##  1st Qu.:2.320   1st Qu.:62.75  
##  Median :2.565   Median :66.50  
##  Mean   :2.630   Mean   :66.30  
##  3rd Qu.:2.797   3rd Qu.:68.75  
##  Max.   :3.440   Max.   :74.00

Bagian ini membuat sebuah data frame bernama data yang berisi dua kolom: Ozone dan Temperatur. Fungsi summary() memberikan ringkasan statistik deskriptif berupa:

  • Nilai minimum

  • Kuartil pertama (Q1)

  • Median (Q2)

  • Mean (rata-rata)

  • Kuartil ketiga (Q3)

  • Nilai maksimum

# Standar deviasi
sd(data$Ozone)
## [1] 0.4587665
sd(data$Temperatur)
## [1] 4.762119

Interpretasi Hasil

  • Rata-rata kadar ozone sebesar 2.63 menunjukkan nilai tengah dari seluruh pengamatan kadar ozone.

  • Rata-rata temperatur adalah 66.3°F, yang berada cukup dekat dengan nilai median (66.5). Ini mengindikasikan distribusi data yang cukup simetris.

  • Standar deviasi Ozone (0.459) relatif kecil, menunjukkan bahwa nilai kadar ozone tersebar cukup rapat di sekitar nilai rata-ratanya.

  • Standar deviasi Temperatur (4.76) lebih besar, menandakan sebaran temperatur lebih bervariasi dibandingkan ozone.

  • Nilai kuartil (Q1, Q2, Q3) membantu memahami persebaran data: 50% nilai ozone berada antara 2.32 dan 2.797, sedangkan 50% nilai temperatur berada antara 62.75 dan 68.75.