- Pendahuluan
- Gambaran Dataset
- Eksplorasi Data Awal
- Pemeriksaan Konsistensi Data
- Pemeriksaan Nilai Tidak Wajar
- Permasalahan Data
- Data Cleaning
- Penanganan Nilai Tidak Wajar
- Penanganan Duplikat
- Penanganan Missing Value
- Perbandingan Sebelum dan Sesudah Cleaning
- Dataset Setelah Cleaning
- Analisis Regresi
- Visualisasi Data
- Kategorisasi Jam Belajar
- Encoding Variabel
- Visualisasi Kategori Jam Belajar
- Hasil Akhir Data
- Kesimpulan
- Lampiran Kode
Pendahuluan
Latar Belakang
Data mahasiswa merupakan salah satu sumber informasi yang sangat berguna bagi institusi pendidikan. Melalui data tersebut, berbagai karakteristik mahasiswa dapat digambarkan, mulai dari identitas dasar seperti jenis kelamin, umur, dan asal kota, hingga kebiasaan sehari-hari seperti lama belajar, lama penggunaan internet, dan lama tidur, serta capaian akademik seperti kehadiran, nilai tugas, nilai ujian, dan nilai akhir.
Informasi tersebut dapat dimanfaatkan untuk memahami pola perilaku mahasiswa dan mendukung proses pengambilan keputusan berbasis data.
Namun, data yang dikumpulkan dalam kondisi nyata hampir tidak selalu berada dalam keadaan sempurna. Data dapat mengandung missing value, inkonsistensi penulisan, data duplikat, kesalahan tipe data, maupun nilai yang tidak wajar. Jika masalah tersebut tidak ditangani, hasil analisis dapat menjadi kurang akurat.
Oleh karena itu, sebelum melakukan analisis lebih lanjut, diperlukan proses eksplorasi dan pembersihan data (data cleaning). Pada laporan ini dilakukan pemeriksaan kualitas dataset mahasiswa, penanganan masalah data, analisis hubungan antara lama belajar, penggunaan internet, dan lama tidur mahasiswa, serta proses integrasi dan encoding data.
Rumusan Masalah
- Permasalahan kualitas data apa saja yang terdapat dalam dataset mahasiswa?
- Bagaimana cara menangani permasalahan tersebut menggunakan Excel dan R?
- Apakah lama belajar per minggu dan lama penggunaan internet per hari berkaitan dengan lama tidur mahasiswa per hari?
- Bagaimana data dari dua sumber dapat digabungkan?
- Bagaimana variabel jam belajar dapat diubah menjadi kategori dan kode numerik?
Tujuan
Tujuan dari analisis ini adalah:
- Mengetahui kondisi awal dataset mahasiswa.
- Mengidentifikasi missing value, data duplikat, inkonsistensi, dan nilai yang tidak wajar.
- Melakukan proses pembersihan data.
- Mengetahui hubungan antara jam belajar, penggunaan internet, dan lama tidur.
- Melakukan integrasi data dari dua sumber.
- Mengubah jam belajar menjadi kategori dan kode numerik.
Gambaran Dataset
Informasi Dataset
Dataset yang digunakan merupakan dataset mahasiswa yang digunakan sebagai bahan latihan eksplorasi dan pembersihan data.
Pada kondisi awal, dataset terdiri dari 1.215 baris dan 15 kolom. Setiap baris merepresentasikan satu catatan mahasiswa, sedangkan setiap kolom merepresentasikan karakteristik tertentu.
library(readxl)
file_data <- read_excel("C:/Users/User/Downloads/file_data.xlsx")
View(file_data)
# Lokasi file data (ubah jika file dipindahkan)
df <- file_data
df## # A tibble: 1,215 × 15
## ID_Mahasiswa Nama Gender Umur Semester Program_Studi Kota_Asal
## <dbl> <chr> <chr> <dbl> <dbl> <chr> <chr>
## 1 100740 Mahasiswa_0740 Laki-laki 20 3 Statistika Pekanbaru
## 2 100789 Mahasiswa_0789 Perempuan 21 3 Statistika Dumai
## 3 100044 Mahasiswa_0044 Perempuan 19 3 Matematika Pekanbaru
## 4 100156 Mahasiswa_0156 Laki-laki 24 5 Statistika Pekanbaru
## 5 100495 Mahasiswa_0495 Perempuan 20 5 Statistika Pekanbaru
## 6 100971 Mahasiswa_0971 Perempuan 21 3 Statistika Pekanbaru
## 7 100271 Mahasiswa_0271 Perempuan 21 5 Statistika Medan
## 8 100591 Mahasiswa_0591 Laki-laki 19 5 Matematika Pekanbaru
## 9 100124 Mahasiswa_0124 Laki-laki 21 3 Statistika Dumai
## 10 100114 Mahasiswa_0114 Perempuan 20 3 Statistika Pekanbaru
## # ℹ 1,205 more rows
## # ℹ 8 more variables: Jam_Belajar_per_Minggu <dbl>, Kehadiran_Persen <dbl>,
## # Nilai_Tugas <chr>, Nilai_Ujian <chr>, Nilai_Akhir <dbl>,
## # Jam_Internet_per_Hari <dbl>, Jam_Tidur_per_Hari <dbl>,
## # Kepuasan_Kuliah <dbl>
## [1] 1215 15
Berdasarkan hasil pembacaan data, jumlah baris dan kolom dapat
diketahui menggunakan fungsi dim(). Dataset awal memiliki
1.215 baris dan 15 kolom.
Menampilkan Data
## # A tibble: 10 × 15
## ID_Mahasiswa Nama Gender Umur Semester Program_Studi Kota_Asal
## <dbl> <chr> <chr> <dbl> <dbl> <chr> <chr>
## 1 100740 Mahasiswa_0740 Laki-laki 20 3 Statistika Pekanbaru
## 2 100789 Mahasiswa_0789 Perempuan 21 3 Statistika Dumai
## 3 100044 Mahasiswa_0044 Perempuan 19 3 Matematika Pekanbaru
## 4 100156 Mahasiswa_0156 Laki-laki 24 5 Statistika Pekanbaru
## 5 100495 Mahasiswa_0495 Perempuan 20 5 Statistika Pekanbaru
## 6 100971 Mahasiswa_0971 Perempuan 21 3 Statistika Pekanbaru
## 7 100271 Mahasiswa_0271 Perempuan 21 5 Statistika Medan
## 8 100591 Mahasiswa_0591 Laki-laki 19 5 Matematika Pekanbaru
## 9 100124 Mahasiswa_0124 Laki-laki 21 3 Statistika Dumai
## 10 100114 Mahasiswa_0114 Perempuan 20 3 Statistika Pekanbaru
## # ℹ 8 more variables: Jam_Belajar_per_Minggu <dbl>, Kehadiran_Persen <dbl>,
## # Nilai_Tugas <chr>, Nilai_Ujian <chr>, Nilai_Akhir <dbl>,
## # Jam_Internet_per_Hari <dbl>, Jam_Tidur_per_Hari <dbl>,
## # Kepuasan_Kuliah <dbl>
Output tersebut menunjukkan beberapa baris pertama dari dataset mahasiswa.
Variabel dalam Dataset
Dataset terdiri dari 15 variabel sebagai berikut.
| No | Variabel | Jenis | Keterangan |
|---|---|---|---|
| 1 | ID_Mahasiswa | Identitas | Kode unik mahasiswa |
| 2 | Nama | Identitas | Nama mahasiswa |
| 3 | Gender | Kategorik | Jenis kelamin |
| 4 | Umur | Numerik | Umur mahasiswa dalam tahun |
| 5 | Semester | Numerik | Semester yang sedang ditempuh |
| 6 | Program_Studi | Kategorik | Program studi mahasiswa |
| 7 | Kota_Asal | Kategorik | Kota asal mahasiswa |
| 8 | Jam_Belajar_per_Minggu | Numerik | Jumlah jam belajar dalam satu minggu |
| 9 | Kehadiran_Persen | Numerik | Persentase kehadiran |
| 10 | Nilai_Tugas | Numerik | Nilai tugas |
| 11 | Nilai_Ujian | Numerik | Nilai ujian |
| 12 | Nilai_Akhir | Numerik | Nilai akhir |
| 13 | Jam_Internet_per_Hari | Numerik | Lama penggunaan internet per hari |
| 14 | Jam_Tidur_per_Hari | Numerik | Lama tidur per hari |
| 15 | Kepuasan_Kuliah | Numerik | Tingkat kepuasan kuliah dengan skala 1–5 |
Sumber Data
Dataset yang digunakan merupakan data eksternal dan data sekunder, karena data diperoleh dari pihak lain dan tidak dikumpulkan secara langsung oleh peneliti dari mahasiswa sebagai responden.
Dataset digunakan sebagai bahan latihan pengolahan dan pembersihan data. Oleh karena itu, pemeriksaan kualitas data tetap diperlukan sebelum data digunakan untuk analisis.
Jenis Data
Dataset termasuk data terstruktur karena data tersusun dalam bentuk baris dan kolom dengan struktur variabel yang jelas. Kondisi tersebut memungkinkan data untuk diolah menggunakan Excel maupun R.
Eksplorasi Data Awal
Struktur Data
Struktur data diperiksa untuk mengetahui nama variabel, tipe data, dan bentuk data yang digunakan.
## tibble [1,215 × 15] (S3: tbl_df/tbl/data.frame)
## $ ID_Mahasiswa : num [1:1215] 100740 100789 100044 100156 100495 ...
## $ Nama : chr [1:1215] "Mahasiswa_0740" "Mahasiswa_0789" "Mahasiswa_0044" "Mahasiswa_0156" ...
## $ Gender : chr [1:1215] "Laki-laki" "Perempuan" "Perempuan" "Laki-laki" ...
## $ Umur : num [1:1215] 20 21 19 24 20 21 21 19 21 20 ...
## $ Semester : num [1:1215] 3 3 3 5 5 3 5 5 3 3 ...
## $ Program_Studi : chr [1:1215] "Statistika" "Statistika" "Matematika" "Statistika" ...
## $ Kota_Asal : chr [1:1215] "Pekanbaru" "Dumai" "Pekanbaru" "Pekanbaru" ...
## $ Jam_Belajar_per_Minggu: num [1:1215] 3.6 13 13.3 11.8 13.8 20.1 7 14.4 10.4 21.4 ...
## $ Kehadiran_Persen : num [1:1215] 90 81 83.4 87.9 93.8 NA 78.6 90.4 85.8 88.4 ...
## $ Nilai_Tugas : chr [1:1215] "45" "74.7" "76.900000000000006" "55.4" ...
## $ Nilai_Ujian : chr [1:1215] "95.2" "81.599999999999994" "94.3" "93.4" ...
## $ Nilai_Akhir : num [1:1215] 78.6 81.1 86.7 80 93.8 86.6 71.5 89.5 85.5 88.4 ...
## $ Jam_Internet_per_Hari : num [1:1215] 5.8 3.4 4.4 4.6 5.6 5.9 2.1 5.3 7.4 7.3 ...
## $ Jam_Tidur_per_Hari : num [1:1215] 4.9 7.7 5.6 7.5 6.3 6.3 7 7.1 6.1 5.5 ...
## $ Kepuasan_Kuliah : num [1:1215] 5 4 4 3 5 3 3 2 3 4 ...
Berdasarkan struktur tersebut dapat diketahui apakah masing-masing variabel sudah memiliki tipe data yang sesuai. Variabel numerik seperti umur, semester, jam belajar, nilai, jam internet, dan jam tidur seharusnya memiliki tipe numerik, sedangkan variabel seperti nama, gender, program studi, dan kota asal merupakan data kategorik atau karakter.
Jumlah Baris dan Kolom
## Jumlah baris : 1215
## Jumlah kolom : 15
Dataset awal terdiri dari 1.215 baris dan 15 kolom.
Ringkasan Statistik
## ID_Mahasiswa Nama Gender Umur
## Min. :100001 Length :1215 Length :1215 Min. : -3.00
## 1st Qu.:100302 N.unique :1200 N.unique : 8 1st Qu.: 20.00
## Median :100601 N.blank : 0 N.blank : 0 Median : 21.00
## Mean :100601 Min.nchar: 14 Min.nchar: 1 Mean : 20.69
## 3rd Qu.:100901 Max.nchar: 19 Max.nchar: 9 3rd Qu.: 22.00
## Max. :101200 Max. :150.00
##
## Semester Program_Studi Kota_Asal Jam_Belajar_per_Minggu
## Min. :3.000 Length :1215 Length :1215 Min. : 2.00
## 1st Qu.:3.000 N.unique : 3 N.unique : 13 1st Qu.:10.50
## Median :3.000 N.blank : 0 N.blank : 0 Median :13.90
## Mean :3.375 Min.nchar: 10 Min.nchar: 5 Mean :13.85
## 3rd Qu.:4.000 Max.nchar: 10 Max.nchar: 9 3rd Qu.:17.20
## Max. :5.000 Max. :29.60
## NAs :12
## Kehadiran_Persen Nilai_Tugas Nilai_Ujian Nilai_Akhir
## Min. :-10.00 Length :1215 Length :1215 Min. : -8.00
## 1st Qu.: 82.90 N.unique : 381 N.unique : 201 1st Qu.: 81.80
## Median : 87.70 N.blank : 0 N.blank : 0 Median : 86.10
## Mean : 87.69 Min.nchar: 2 Min.nchar: 2 Mean : 85.48
## 3rd Qu.: 93.00 Max.nchar: 18 Max.nchar: 18 3rd Qu.: 89.80
## Max. :125.00 NAs : 8 NAs : 8 Max. :120.00
## NAs :10
## Jam_Internet_per_Hari Jam_Tidur_per_Hari Kepuasan_Kuliah
## Min. :-1.000 Min. : 1.000 Min. :0.00
## 1st Qu.: 3.400 1st Qu.: 6.000 1st Qu.:3.00
## Median : 4.500 Median : 6.700 Median :4.00
## Mean : 4.552 Mean : 6.724 Mean :3.62
## 3rd Qu.: 5.700 3rd Qu.: 7.400 3rd Qu.:4.00
## Max. :30.000 Max. :20.000 Max. :8.00
## NAs :8
Ringkasan statistik digunakan untuk melihat nilai minimum, kuartil, median, mean, dan maksimum pada variabel numerik serta distribusi sederhana pada variabel kategorik.
Pemeriksaan Missing Value
missing_data <- data.frame(
Variabel = names(df),
Jumlah_Missing = sapply(df, function(x) sum(is.na(x))),
Persentase_Missing = round(
sapply(df, function(x) mean(is.na(x))) * 100,
2
)
)
missing_data## Variabel Jumlah_Missing Persentase_Missing
## ID_Mahasiswa ID_Mahasiswa 0 0.00
## Nama Nama 0 0.00
## Gender Gender 0 0.00
## Umur Umur 0 0.00
## Semester Semester 0 0.00
## Program_Studi Program_Studi 0 0.00
## Kota_Asal Kota_Asal 0 0.00
## Jam_Belajar_per_Minggu Jam_Belajar_per_Minggu 12 0.99
## Kehadiran_Persen Kehadiran_Persen 10 0.82
## Nilai_Tugas Nilai_Tugas 8 0.66
## Nilai_Ujian Nilai_Ujian 8 0.66
## Nilai_Akhir Nilai_Akhir 0 0.00
## Jam_Internet_per_Hari Jam_Internet_per_Hari 0 0.00
## Jam_Tidur_per_Hari Jam_Tidur_per_Hari 0 0.00
## Kepuasan_Kuliah Kepuasan_Kuliah 8 0.66
Pemeriksaan missing value dilakukan untuk mengetahui apakah terdapat data kosong pada masing-masing variabel. Variabel yang memiliki nilai missing perlu diperhatikan sebelum analisis lebih lanjut.
Pemeriksaan Data Duplikat
## Jumlah baris duplikat: 14
Data duplikat merupakan baris yang tercatat lebih dari satu kali. Duplikat dapat menyebabkan jumlah observasi menjadi lebih besar dari jumlah mahasiswa sebenarnya dan dapat memengaruhi hasil analisis.
Pemeriksaan ID Mahasiswa
jumlah_id_duplikat <- sum(duplicated(df$ID_Mahasiswa))
cat("Jumlah ID mahasiswa yang duplikat:", jumlah_id_duplikat)## Jumlah ID mahasiswa yang duplikat: 15
ID mahasiswa seharusnya bersifat unik. Jika terdapat ID yang muncul lebih dari satu kali, perlu diperiksa apakah data tersebut benar-benar duplikat atau merupakan catatan yang berbeda.
Pemeriksaan Konsistensi Data
Gender
##
## Female L Laki-laki Male P Perempuan Pria Wanita
## 6 2 539 4 8 646 3 7
Pemeriksaan dilakukan untuk mengetahui apakah penulisan kategori gender sudah konsisten.
Program Studi
##
## Matematika Sains Data Statistika
## 172 112 931
Pemeriksaan program studi digunakan untuk mengetahui kategori yang tersedia serta mendeteksi kemungkinan adanya perbedaan penulisan.
Kota Asal
##
## Pekanbaru Padang Medan Dumai Jambi pekanbaru padang jambi
## 546 206 179 133 121 7 6 4
## JAMBI DUMAI PEKANBARU PADANG MEDAN
## 4 3 3 2 1
Pemeriksaan kota asal dilakukan untuk melihat variasi kategori dan mendeteksi kemungkinan inkonsistensi penulisan.
Pemeriksaan Nilai Tidak Wajar
Nilai tidak wajar diperiksa berdasarkan batas logis dari masing-masing variabel.
Umur
## [1] 2
Umur di luar rentang yang wajar perlu diperiksa karena dapat menunjukkan kesalahan pencatatan.
Semester
## [1] 0
Semester yang berada di luar rentang yang ditentukan dapat dianggap sebagai nilai yang perlu diperiksa.
Kehadiran
## [1] 2
Nilai kehadiran seharusnya berada pada rentang 0 sampai 100 persen.
Permasalahan Data
Berdasarkan eksplorasi awal, pemeriksaan kualitas data difokuskan pada beberapa jenis permasalahan, yaitu:
- Missing value, yaitu terdapat nilai yang kosong pada beberapa variabel.
- Data duplikat, yaitu terdapat baris atau ID mahasiswa yang tercatat lebih dari satu kali.
- Inkonsistensi data, yaitu adanya kemungkinan perbedaan penulisan pada variabel kategorik.
- Nilai tidak wajar, yaitu nilai yang berada di luar batas logis variabel.
- Ketidaksesuaian tipe data, apabila variabel numerik terbaca sebagai karakter.
Jumlah permasalahan aktual dapat dilihat dari output pemeriksaan pada bagian sebelumnya.
Data Cleaning
Pemeriksaan Tipe Data
## ID_Mahasiswa Nama Gender
## "numeric" "character" "character"
## Umur Semester Program_Studi
## "numeric" "numeric" "character"
## Kota_Asal Jam_Belajar_per_Minggu Kehadiran_Persen
## "character" "numeric" "numeric"
## Nilai_Tugas Nilai_Ujian Nilai_Akhir
## "character" "character" "numeric"
## Jam_Internet_per_Hari Jam_Tidur_per_Hari Kepuasan_Kuliah
## "numeric" "numeric" "numeric"
Pemeriksaan tipe data dilakukan untuk memastikan bahwa variabel numerik telah terbaca sebagai numerik.
Konversi Variabel Numerik
kolom_numerik <- c(
"ID_Mahasiswa",
"Umur",
"Semester",
"Jam_Belajar_per_Minggu",
"Kehadiran_Persen",
"Nilai_Tugas",
"Nilai_Ujian",
"Nilai_Akhir",
"Jam_Internet_per_Hari",
"Jam_Tidur_per_Hari",
"Kepuasan_Kuliah"
)
for (kol in kolom_numerik) {
if (kol %in% names(df)) {
df[[kol]] <- as.numeric(df[[kol]])
}
}Konversi dilakukan agar variabel yang seharusnya berupa angka dapat digunakan dalam perhitungan statistik dan analisis regresi.
Membersihkan Spasi pada Data Kategorik
kolom_kategorik <- c(
"Nama",
"Gender",
"Program_Studi",
"Kota_Asal"
)
for (kol in kolom_kategorik) {
if (kol %in% names(df)) {
df[[kol]] <- trimws(df[[kol]])
}
}Pembersihan spasi dilakukan untuk mengurangi kemungkinan kategori yang sebenarnya sama tetapi dianggap berbeda akibat adanya spasi tambahan.
Standarisasi Gender
df$Gender <- case_when(
tolower(trimws(df$Gender)) %in%
c("laki-laki", "laki laki", "laki_laki", "laki") ~ "Laki-laki",
tolower(trimws(df$Gender)) %in%
c("perempuan", "wanita") ~ "Perempuan",
TRUE ~ df$Gender
)Standarisasi dilakukan agar kategori yang memiliki arti sama menggunakan penulisan yang seragam.
Penanganan Nilai Tidak Wajar
Nilai yang berada di luar rentang logis akan diubah menjadi
NA agar tidak digunakan sebagai nilai valid dalam
analisis.
df <- df %>%
mutate(
Umur = ifelse(Umur < 15 | Umur > 100, NA, Umur),
Semester = ifelse(
Semester < 1 | Semester > 14,
NA,
Semester
),
Kehadiran_Persen = ifelse(
Kehadiran_Persen < 0 |
Kehadiran_Persen > 100,
NA,
Kehadiran_Persen
),
Nilai_Tugas = ifelse(
Nilai_Tugas < 0 |
Nilai_Tugas > 100,
NA,
Nilai_Tugas
),
Nilai_Ujian = ifelse(
Nilai_Ujian < 0 |
Nilai_Ujian > 100,
NA,
Nilai_Ujian
),
Nilai_Akhir = ifelse(
Nilai_Akhir < 0 |
Nilai_Akhir > 100,
NA,
Nilai_Akhir
),
Kepuasan_Kuliah = ifelse(
Kepuasan_Kuliah < 1 |
Kepuasan_Kuliah > 5,
NA,
Kepuasan_Kuliah
)
)Dengan cara tersebut, nilai yang tidak memenuhi batas logis tidak langsung dianggap sebagai data yang benar.
Penanganan Duplikat
Baris duplikat dapat dihapus menggunakan fungsi
distinct().
jumlah_sebelum <- nrow(df)
df_clean <- df %>%
distinct()
jumlah_sesudah <- nrow(df_clean)
cat("Jumlah baris sebelum cleaning :", jumlah_sebelum, "\n")## Jumlah baris sebelum cleaning : 1215
## Jumlah baris sesudah cleaning : 1201
## Jumlah baris yang dihapus : 14
Penghapusan dilakukan terhadap baris yang benar-benar identik.
Penanganan Missing Value
Jumlah missing value setelah proses pemeriksaan dapat dilihat kembali.
missing_after <- data.frame(
Variabel = names(df_clean),
Jumlah_Missing = sapply(
df_clean,
function(x) sum(is.na(x))
)
)
missing_after## Variabel Jumlah_Missing
## ID_Mahasiswa ID_Mahasiswa 0
## Nama Nama 0
## Gender Gender 0
## Umur Umur 2
## Semester Semester 0
## Program_Studi Program_Studi 0
## Kota_Asal Kota_Asal 0
## Jam_Belajar_per_Minggu Jam_Belajar_per_Minggu 12
## Kehadiran_Persen Kehadiran_Persen 12
## Nilai_Tugas Nilai_Tugas 10
## Nilai_Ujian Nilai_Ujian 10
## Nilai_Akhir Nilai_Akhir 2
## Jam_Internet_per_Hari Jam_Internet_per_Hari 0
## Jam_Tidur_per_Hari Jam_Tidur_per_Hari 0
## Kepuasan_Kuliah Kepuasan_Kuliah 10
Untuk analisis regresi, observasi yang memiliki missing value pada
variabel yang digunakan dapat dikeluarkan menggunakan
na.omit().
data_regresi <- df_clean %>%
select(
Jam_Tidur_per_Hari,
Jam_Belajar_per_Minggu,
Jam_Internet_per_Hari
) %>%
na.omit()
nrow(data_regresi)## [1] 1189
Perbandingan Sebelum dan Sesudah Cleaning
perbandingan <- data.frame(
Kondisi = c(
"Sebelum Cleaning",
"Sesudah Cleaning"
),
Jumlah_Baris = c(
nrow(df),
nrow(df_clean)
),
Jumlah_Kolom = c(
ncol(df),
ncol(df_clean)
)
)
perbandingan## Kondisi Jumlah_Baris Jumlah_Kolom
## 1 Sebelum Cleaning 1215 15
## 2 Sesudah Cleaning 1201 15
Perbandingan tersebut digunakan untuk melihat perubahan jumlah observasi setelah proses pembersihan data.
Dataset Setelah Cleaning
## [1] 1201 15
## tibble [1,201 × 15] (S3: tbl_df/tbl/data.frame)
## $ ID_Mahasiswa : num [1:1201] 100740 100789 100044 100156 100495 ...
## $ Nama : chr [1:1201] "Mahasiswa_0740" "Mahasiswa_0789" "Mahasiswa_0044" "Mahasiswa_0156" ...
## $ Gender : chr [1:1201] "Laki-laki" "Perempuan" "Perempuan" "Laki-laki" ...
## $ Umur : num [1:1201] 20 21 19 24 20 21 21 19 21 20 ...
## $ Semester : num [1:1201] 3 3 3 5 5 3 5 5 3 3 ...
## $ Program_Studi : chr [1:1201] "Statistika" "Statistika" "Matematika" "Statistika" ...
## $ Kota_Asal : chr [1:1201] "Pekanbaru" "Dumai" "Pekanbaru" "Pekanbaru" ...
## $ Jam_Belajar_per_Minggu: num [1:1201] 3.6 13 13.3 11.8 13.8 20.1 7 14.4 10.4 21.4 ...
## $ Kehadiran_Persen : num [1:1201] 90 81 83.4 87.9 93.8 NA 78.6 90.4 85.8 88.4 ...
## $ Nilai_Tugas : num [1:1201] 45 74.7 76.9 55.4 83.7 71.3 52.1 69.9 70.2 77.5 ...
## $ Nilai_Ujian : num [1:1201] 95.2 81.6 94.3 93.4 100 91.5 83.7 100 99.2 89.1 ...
## $ Nilai_Akhir : num [1:1201] 78.6 81.1 86.7 80 93.8 86.6 71.5 89.5 85.5 88.4 ...
## $ Jam_Internet_per_Hari : num [1:1201] 5.8 3.4 4.4 4.6 5.6 5.9 2.1 5.3 7.4 7.3 ...
## $ Jam_Tidur_per_Hari : num [1:1201] 4.9 7.7 5.6 7.5 6.3 6.3 7 7.1 6.1 5.5 ...
## $ Kepuasan_Kuliah : num [1:1201] 5 4 4 3 5 3 3 2 3 4 ...
## ID_Mahasiswa Nama Gender Umur
## Min. :100001 Length :1201 Length :1201 Min. :18.0
## 1st Qu.:100301 N.unique :1200 N.unique : 7 1st Qu.:20.0
## Median :100601 N.blank : 0 N.blank : 0 Median :21.0
## Mean :100601 Min.nchar: 14 Min.nchar: 1 Mean :20.6
## 3rd Qu.:100901 Max.nchar: 19 Max.nchar: 9 3rd Qu.:22.0
## Max. :101200 Max. :40.0
## NAs :2
## Semester Program_Studi Kota_Asal Jam_Belajar_per_Minggu
## Min. :3.000 Length :1201 Length :1201 Min. : 2.00
## 1st Qu.:3.000 N.unique : 3 N.unique : 13 1st Qu.:10.50
## Median :3.000 N.blank : 0 N.blank : 0 Median :13.90
## Mean :3.376 Min.nchar: 10 Min.nchar: 5 Mean :13.84
## 3rd Qu.:4.000 Max.nchar: 10 Max.nchar: 9 3rd Qu.:17.10
## Max. :5.000 Max. :29.60
## NAs :12
## Kehadiran_Persen Nilai_Tugas Nilai_Ujian Nilai_Akhir
## Min. : 65.50 Min. : 45.00 Min. : 66.30 Min. : 61.00
## 1st Qu.: 82.90 1st Qu.: 62.60 1st Qu.: 92.00 1st Qu.: 81.85
## Median : 87.70 Median : 69.70 Median : 97.90 Median : 86.10
## Mean : 87.73 Mean : 69.64 Mean : 95.45 Mean : 85.52
## 3rd Qu.: 93.00 3rd Qu.: 76.45 3rd Qu.:100.00 3rd Qu.: 89.80
## Max. :100.00 Max. :100.00 Max. :100.00 Max. :100.00
## NAs :12 NAs :10 NAs :10 NAs :2
## Jam_Internet_per_Hari Jam_Tidur_per_Hari Kepuasan_Kuliah
## Min. :-1.000 Min. : 1.000 Min. :1.00
## 1st Qu.: 3.400 1st Qu.: 6.000 1st Qu.:3.00
## Median : 4.500 Median : 6.700 Median :4.00
## Mean : 4.554 Mean : 6.724 Mean :3.62
## 3rd Qu.: 5.700 3rd Qu.: 7.400 3rd Qu.:4.00
## Max. :30.000 Max. :20.000 Max. :5.00
## NAs :10
Setelah proses cleaning, dataset diperiksa kembali untuk memastikan bahwa struktur data tetap sesuai dan variabel dapat digunakan untuk analisis selanjutnya.
Analisis Regresi
Tujuan Analisis
Analisis regresi dilakukan untuk mengetahui hubungan antara:
- Jam_Belajar_per_Minggu sebagai variabel bebas pertama.
- Jam_Internet_per_Hari sebagai variabel bebas kedua.
- Jam_Tidur_per_Hari sebagai variabel terikat.
Model regresi yang digunakan adalah:
Jam_Tidur_per_Hari = β₀ + β₁(Jam_Belajar_per_Minggu) + β₂(Jam_Internet_per_Hari) + ε
Membuat Model Regresi
model <- lm(
Jam_Tidur_per_Hari ~
Jam_Belajar_per_Minggu +
Jam_Internet_per_Hari,
data = data_regresi
)
summary(model)##
## Call:
## lm(formula = Jam_Tidur_per_Hari ~ Jam_Belajar_per_Minggu + Jam_Internet_per_Hari,
## data = data_regresi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.7454 -0.6667 -0.0129 0.6550 13.2273
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.504226 0.117371 55.416 <2e-16 ***
## Jam_Belajar_per_Minggu 0.013864 0.006256 2.216 0.0269 *
## Jam_Internet_per_Hari 0.005847 0.016445 0.356 0.7222
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.08 on 1186 degrees of freedom
## Multiple R-squared: 0.004265, Adjusted R-squared: 0.002586
## F-statistic: 2.54 on 2 and 1186 DF, p-value: 0.07931
Interpretasi Koefisien
## (Intercept) Jam_Belajar_per_Minggu Jam_Internet_per_Hari
## 6.504226268 0.013863601 0.005847137
Koefisien regresi digunakan untuk melihat arah hubungan masing-masing variabel bebas terhadap lama tidur ketika variabel bebas lainnya dianggap tetap.
Koefisien positif menunjukkan hubungan searah, sedangkan koefisien negatif menunjukkan hubungan berlawanan arah.
R-Squared
## [1] 0.004264759
Nilai R-squared menunjukkan proporsi variasi lama tidur yang dapat dijelaskan oleh variabel jam belajar dan jam penggunaan internet dalam model.
Uji Signifikansi
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.504226268 0.117371097 55.4159112 0.00000000
## Jam_Belajar_per_Minggu 0.013863601 0.006255976 2.2160572 0.02687684
## Jam_Internet_per_Hari 0.005847137 0.016444877 0.3555598 0.72223347
Nilai p-value digunakan untuk melihat signifikansi
statistik dari masing-masing variabel dalam model. Interpretasi
dilakukan dengan mempertimbangkan tingkat signifikansi yang digunakan,
misalnya 5%.
Visualisasi Data
Hubungan Jam Belajar dan Jam Tidur
ggplot(
data_regresi,
aes(
x = Jam_Belajar_per_Minggu,
y = Jam_Tidur_per_Hari
)
) +
geom_point() +
geom_smooth(
method = "lm",
se = TRUE
) +
labs(
title = "Hubungan Jam Belajar dengan Jam Tidur",
x = "Jam Belajar per Minggu",
y = "Jam Tidur per Hari"
) +
theme_minimal()Grafik digunakan untuk melihat pola hubungan antara jumlah jam belajar per minggu dan lama tidur per hari.
Hubungan Penggunaan Internet dan Jam Tidur
ggplot(
data_regresi,
aes(
x = Jam_Internet_per_Hari,
y = Jam_Tidur_per_Hari
)
) +
geom_point() +
geom_smooth(
method = "lm",
se = TRUE
) +
labs(
title = "Hubungan Penggunaan Internet dengan Jam Tidur",
x = "Jam Internet per Hari",
y = "Jam Tidur per Hari"
) +
theme_minimal()Grafik menunjukkan pola hubungan antara lama penggunaan internet dan lama tidur mahasiswa.
Kategorisasi Jam Belajar
Jam belajar per minggu dapat diubah menjadi variabel kategorik.
Catatan: batas kategori di bawah merupakan contoh. Jika dosen memberikan interval tertentu, gunakan interval yang ditentukan oleh dosen.
Encoding Variabel
Setelah variabel jam belajar dibuat menjadi kategori, kategori tersebut dapat diubah menjadi kode numerik.
df_clean <- df_clean %>%
mutate(
Kode_Jam_Belajar = case_when(
Kategori_Jam_Belajar == "Rendah" ~ 1,
Kategori_Jam_Belajar == "Sedang" ~ 2,
Kategori_Jam_Belajar == "Tinggi" ~ 3,
TRUE ~ NA_real_
)
)Hasil Encoding
## # A tibble: 10 × 3
## Jam_Belajar_per_Minggu Kategori_Jam_Belajar Kode_Jam_Belajar
## <dbl> <chr> <dbl>
## 1 3.6 Rendah 1
## 2 13 Sedang 2
## 3 13.3 Sedang 2
## 4 11.8 Sedang 2
## 5 13.8 Sedang 2
## 6 20.1 Tinggi 3
## 7 7 Rendah 1
## 8 14.4 Sedang 2
## 9 10.4 Sedang 2
## 10 21.4 Tinggi 3
Hasil encoding menunjukkan bahwa kategori jam belajar telah direpresentasikan dalam bentuk kode numerik.
| Kategori | Kode |
|---|---|
| Rendah | 1 |
| Sedang | 2 |
| Tinggi | 3 |
Visualisasi Kategori Jam Belajar
ggplot(
df_clean,
aes(x = Kategori_Jam_Belajar)
) +
geom_bar() +
labs(
title = "Distribusi Kategori Jam Belajar",
x = "Kategori Jam Belajar",
y = "Jumlah Mahasiswa"
) +
theme_minimal()Grafik menunjukkan jumlah mahasiswa pada masing-masing kategori jam belajar.
Hasil Akhir Data
## Jumlah baris akhir : 1201
## Jumlah kolom akhir : 17
## # A tibble: 10 × 17
## ID_Mahasiswa Nama Gender Umur Semester Program_Studi Kota_Asal
## <dbl> <chr> <chr> <dbl> <dbl> <chr> <chr>
## 1 100740 Mahasiswa_0740 Laki-laki 20 3 Statistika Pekanbaru
## 2 100789 Mahasiswa_0789 Perempuan 21 3 Statistika Dumai
## 3 100044 Mahasiswa_0044 Perempuan 19 3 Matematika Pekanbaru
## 4 100156 Mahasiswa_0156 Laki-laki 24 5 Statistika Pekanbaru
## 5 100495 Mahasiswa_0495 Perempuan 20 5 Statistika Pekanbaru
## 6 100971 Mahasiswa_0971 Perempuan 21 3 Statistika Pekanbaru
## 7 100271 Mahasiswa_0271 Perempuan 21 5 Statistika Medan
## 8 100591 Mahasiswa_0591 Laki-laki 19 5 Matematika Pekanbaru
## 9 100124 Mahasiswa_0124 Laki-laki 21 3 Statistika Dumai
## 10 100114 Mahasiswa_0114 Perempuan 20 3 Statistika Pekanbaru
## # ℹ 10 more variables: Jam_Belajar_per_Minggu <dbl>, Kehadiran_Persen <dbl>,
## # Nilai_Tugas <dbl>, Nilai_Ujian <dbl>, Nilai_Akhir <dbl>,
## # Jam_Internet_per_Hari <dbl>, Jam_Tidur_per_Hari <dbl>,
## # Kepuasan_Kuliah <dbl>, Kategori_Jam_Belajar <chr>, Kode_Jam_Belajar <dbl>
Dataset akhir merupakan dataset yang telah melalui beberapa tahap pemeriksaan dan pembersihan sehingga dapat digunakan untuk analisis lebih lanjut.
Kesimpulan
Berdasarkan proses eksplorasi dan pembersihan data yang telah dilakukan, dapat disimpulkan bahwa dataset mahasiswa perlu diperiksa terlebih dahulu sebelum digunakan dalam analisis. Pemeriksaan dilakukan terhadap struktur data, missing value, duplikasi, konsistensi data, tipe data, dan nilai yang tidak wajar.
Proses data cleaning dilakukan untuk memperbaiki kualitas data sehingga data menjadi lebih terstruktur dan siap digunakan dalam analisis.
Analisis regresi digunakan untuk melihat hubungan antara jam belajar per minggu dan jam penggunaan internet per hari terhadap jam tidur per hari. Hasil regresi dapat dilihat berdasarkan koefisien, nilai R-squared, dan p-value yang dihasilkan oleh model.
Selain itu, dilakukan proses integrasi data menggunakan ID_Mahasiswa sebagai kunci penggabungan. Variabel jam belajar juga dikategorikan menjadi kategori rendah, sedang, dan tinggi, kemudian diubah menjadi kode numerik melalui proses encoding.
Dengan demikian, seluruh tahapan mulai dari eksplorasi, pembersihan, analisis, integrasi, hingga encoding dapat dilakukan secara sistematis menggunakan R.
Lampiran Kode
Seluruh kode yang digunakan dalam proses pengolahan dan analisis data ditampilkan pada setiap bagian laporan agar proses analisis dapat direproduksi kembali.