Analisis dan Penanganan Data Bermasalah pada Dataset Mahasiswa

1 Pendahuluan

1.1 Latar Belakang

Data mahasiswa tidak hanya berisi identitas dan nilai. Data juga mencatat kebiasaan sehari-hari, seperti lama belajar, penggunaan internet, dan jam tidur, serta kepuasan mahasiswa terhadap perkuliahan. Dengan data seperti ini, kondisi mahasiswa dapat dilihat dari sisi akademik sekaligus kebiasaannya.

Meski begitu, data tidak selalu siap dianalisis begitu diperoleh. Isinya bisa saja ada yang kosong, ditulis dengan cara berbeda-beda, tercatat dua kali, atau berisi angka yang tidak masuk akal. Jika data seperti ini langsung dipakai, hasil analisisnya bisa menyesatkan. Karena itu, data perlu diperiksa dan dibersihkan lebih dulu.

Pada tugas project kali ini digunakan dataset mahasiswa yang terdiri dari 1.215 baris dan 15 variabel, mencakup identitas, karakteristik demografi, informasi akademik, kebiasaan belajar, penggunaan internet, jam tidur, serta kepuasan terhadap perkuliahan. Dataset ini bukan hasil pengumpulan data sendiri, sehingga kondisinya perlu diperiksa terlebih dahulu. Hasil pemeriksaan awal menunjukkan beberapa masalah, yaitu 46 nilai kosong, penulisan Gender dan Kota_Asal yang tidak seragam, 15 ID mahasiswa yang muncul lebih dari satu kali, serta nilai yang tidak masuk akal seperti umur -3 dan 150 tahun, kehadiran hingga 125 persen, dan penggunaan internet 30 jam dalam sehari.

Dengan kondisi tersebut, data tidak bisa langsung dianalisis. Karena itu, pada project berisi tentang bagaimana mengerjakan pemeriksaan masalah data, pembersihan dengan R, dan pengecekan validitas. Data yang sudah bersih kemudian dipakai untuk melihat apakah jam belajar dan penggunaan internet berhubungan dengan jam tidur mahasiswa. Di bagian akhir, jam belajar dikelompokkan menjadi kategori dan digabungkan ke dalam satu tabel agar siap dipakai pada analisis selanjutnya.

1.215
baris (objek: mahasiswa)
15
kolom atau variabel
Terstruktur
bentuk tabel baris dan kolom

1.2 Rumusan Masalah

  1. Bagaimana gambaran umum dataset mahasiswa yang digunakan?
  2. Permasalahan apa saja yang terdapat pada dataset tersebut?
  3. Bagaimana tahapan data wrangling untuk membersihkan dan merapikan dataset?
  4. Apakah data yang telah dibersihkan valid dan layak digunakan untuk analisis?
  5. Bagaimana hubungan jam belajar dan penggunaan internet dengan jam tidur mahasiswa?
  6. Bagaimana proses integrasi dan encoding data agar data siap digunakan pada analisis selanjutnya?

1.3 Tujuan

Tujuan 1
Mengetahui gambaran umum dataset mahasiswa yang digunakan.
Tujuan 2
Mengidentifikasi permasalahan yang terdapat pada dataset, seperti missing value, inkonsistensi, duplikasi, dan data noisy.
Tujuan 3
Melakukan proses data wrangling untuk membersihkan dan merapikan dataset.
Tujuan 4
Memastikan data yang telah dibersihkan valid dan memenuhi asumsi untuk analisis regresi.
Tujuan 5
Menganalisis hubungan jam belajar dan penggunaan internet dengan jam tidur mahasiswa.
Tujuan 6
Melakukan integrasi dan encoding data untuk menghasilkan data yang lebih siap digunakan dalam analisis selanjutnya.

2 Gambaran Dataset

Bab ini memaparkan gambaran dataset sebelum pemeriksaan masalah data dilakukan, meliputi isi data, sumber data, jenis data, dan cara data dimasukkan ke R. Dengan mengenal karakteristik data lebih dulu, proses pembersihan dan analisis dapat dilakukan dengan lebih terarah.

2.1 Informasi Dataset

Dataset yang digunakan merupakan data mahasiswa dengan jumlah awal sebanyak 1.215 baris dan 15 variabel. Data ini memuat informasi mengenai identitas mahasiswa, karakteristik demografi, akademik, kebiasaan belajar, penggunaan internet, jam tidur, dan kepuasan kuliah. Variabel-variabel tersebut dapat dikelompokkan berdasarkan jenis data dan fungsinya sebagai berikut:

No Variabel Jenis Keterangan
1 ID_Mahasiswa Identitas Kode unik untuk setiap mahasiswa dan digunakan sebagai kunci dalam penggabungan data
2 Nama Identitas Nama mahasiswa
3 Gender Kategorik Jenis kelamin mahasiswa, yaitu Laki-laki atau Perempuan
4 Umur Numerik Umur mahasiswa dalam satuan tahun
5 Semester Numerik Semester yang sedang ditempuh mahasiswa
6 Program_Studi Kategorik Program studi yang ditempuh mahasiswa
7 Kota_Asal Kategorik Kota asal mahasiswa
8 Jam_Belajar_per_Minggu Numerik Total waktu belajar mahasiswa dalam satu minggu
9 Kehadiran_Persen Numerik Persentase kehadiran mahasiswa dengan rentang 0–100
10 Nilai_Tugas Numerik Nilai tugas mahasiswa dengan skala 0–100
11 Nilai_Ujian Numerik Nilai ujian mahasiswa dengan skala 0–100
12 Nilai_Akhir Numerik Nilai akhir mahasiswa dengan skala 0–100
13 Jam_Internet_per_Hari Numerik Lama penggunaan internet dalam satu hari, dalam satuan jam
14 Jam_Tidur_per_Hari Numerik Lama tidur mahasiswa dalam satu hari, dalam satuan jam
15 Kepuasan_Kuliah Numerik (skala) Tingkat kepuasan mahasiswa terhadap perkuliahan dengan skala 1–5

Dapat dilihat bahwa dataset ini memiliki variabel dengan bentuk yang berbeda-beda. Variabel seperti Gender, Program_Studi, dan Kota_Asal merupakan data kategorik, sedangkan sebaagian besar variabel lainnya berbentuk numerik.

2.2 Sumber Data

Dataset yang digunakan dalam project ini merupakan data sekunder dan data eksternal. Data tidak diperoleh secara langsung dari subjek penelitian (mahasiswa).Dataset ini memang digunakan sebagai data simulasi untuk keperluan pembelajaran mengenai proses eksplorasi, pembersihan, validasi, analisis, dan integrasi data.

2.3 Jenis Data

Berdasarkan bentuk dan sumbernya, dataset yang digunakan dapat dikategorikan sebagai berikut:

  • Data sekunder, karena data tidak dikumpulkan secara langsung dari subjek yang diteliti atau mahasiswa nya langsung oleh kelompok peneliti.
  • Data eksternal, karena dataset diperoleh dari sumber lain di luar proses pengumpulan data yang dilakukan oleh kelompok peneliti sendiri.
  • Data terstruktur, karena data disusun dalam bentuk baris dan kolom dengan variabel yang dapat diidentifikasi.

2.4 Import Data

Dataset yang digunakan dalam project ini berbentuk file Excel. Sebelum data dapat diperiksa dan diolah menggunnakan R, data kemudian diimpor ke dalam R menggunakan package readxl dan disimpan dalam objek bernama df. Proses import data ini dilakukan sebagai tahap awal sebelum data diperiksa dan diolah lebih lanjut.

Dataset berupa file Excel. Data diimpor ke R menggunakan paket readxl lalu disimpan dalam objek df sebagai bahan pemeriksaan dan pengolahan selanjutnya.

##   ID_Mahasiswa        Nama              Gender               Umur       
##  Min.   :100001   Length:1215        Length:1215        Min.   : -3.00  
##  1st Qu.:100302   Class :character   Class :character   1st Qu.: 20.00  
##  Median :100601   Mode  :character   Mode  :character   Median : 21.00  
##  Mean   :100601                                         Mean   : 20.69  
##  3rd Qu.:100901                                         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   Class :character   Class :character   1st Qu.:10.50         
##  Median :3.000   Mode  :character   Mode  :character   Median :13.90         
##  Mean   :3.375                                         Mean   :13.85         
##  3rd Qu.:4.000                                         3rd Qu.:17.20         
##  Max.   :5.000                                         Max.   :29.60         
##                                                        NA's   :12            
##  Kehadiran_Persen Nilai_Tugas        Nilai_Ujian         Nilai_Akhir    
##  Min.   :-10.00   Length:1215        Length:1215        Min.   : -8.00  
##  1st Qu.: 82.90   Class :character   Class :character   1st Qu.: 81.80  
##  Median : 87.70   Mode  :character   Mode  :character   Median : 86.10  
##  Mean   : 87.69                                         Mean   : 85.48  
##  3rd Qu.: 93.00                                         3rd Qu.: 89.80  
##  Max.   :125.00                                         Max.   :120.00  
##  NA's   :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   
##                                           NA's   :8

Hasil import data menunjukkan bahwa dataset memiliki 1.215 baris dan 15 variabel. Lima baris pertama pada tabel berikut memberi gambaran bentuk data yang digunakan. Dataset memuat variabel identitas, demografi, akademik, kebiasaan belajar, penggunaan internet, jam tidur, dan kepuasan kuliah.

Lima Baris Pertama Dataset
ID_Mahasiswa Nama Gender Umur Semester Program_Studi Kota_Asal Jam_Belajar_per_Minggu Kehadiran_Persen Nilai_Tugas Nilai_Ujian Nilai_Akhir Jam_Internet_per_Hari Jam_Tidur_per_Hari Kepuasan_Kuliah
100740 Mahasiswa_0740 Laki-laki 20 3 Statistika Pekanbaru 3.6 90.0 45 95.2 78.6 5.8 4.9 5
100789 Mahasiswa_0789 Perempuan 21 3 Statistika Dumai 13.0 81.0 74.7 81.599999999999994 81.1 3.4 7.7 4
100044 Mahasiswa_0044 Perempuan 19 3 Matematika Pekanbaru 13.3 83.4 76.900000000000006 94.3 86.7 4.4 5.6 4
100156 Mahasiswa_0156 Laki-laki 24 5 Statistika Pekanbaru 11.8 87.9 55.4 93.4 80.0 4.6 7.5 3
100495 Mahasiswa_0495 Perempuan 20 5 Statistika Pekanbaru 13.8 93.8 83.7 100 93.8 5.6 6.3 5

Sebagian variabel yang seharusnya berisi angka dapat terbaca sebagai teks karena ada karakter yang tidak diharapkan, misalnya spasi tambahan atau tanda persen seperti “100%”. Variabel seperti ini tidak dapat dihitung rata-rata atau mediannya, dan tidak bisa dimasukkan ke model regresi. Karena itu, sepuluh kolom yang seharusnya numerik diubah menggunakan as.numeric(). Bentuk as.numeric(as.character(.x)) dipakai agar konversi tetap aman walaupun kolom awalnya bertipe faktor atau teks.

##                   Umur               Semester Jam_Belajar_per_Minggu 
##                      0                      0                     12 
##       Kehadiran_Persen            Nilai_Tugas            Nilai_Ujian 
##                     10                      8                      8 
##            Nilai_Akhir  Jam_Internet_per_Hari     Jam_Tidur_per_Hari 
##                      0                      0                      0 
##        Kepuasan_Kuliah 
##                      8
Tipe Data Setelah Konversi
Variabel Tipe_Data
Umur Umur numeric
Semester Semester numeric
Jam_Belajar_per_Minggu Jam_Belajar_per_Minggu numeric
Kehadiran_Persen Kehadiran_Persen numeric
Nilai_Tugas Nilai_Tugas numeric
Nilai_Ujian Nilai_Ujian numeric
Nilai_Akhir Nilai_Akhir numeric
Jam_Internet_per_Hari Jam_Internet_per_Hari numeric
Jam_Tidur_per_Hari Jam_Tidur_per_Hari numeric
Kepuasan_Kuliah Kepuasan_Kuliah numeric

3 Permasalahan Data

Hasil eksplorasi menunjukkan adanya empat permasalahan utama pada dataset ini, yaitu missing value, inkonsistensi data, duplikasi data, dan data noisy.

3.1 Missing Value

Missing value merupakan kondisi ketika terdapat nilai yang tidak tersedia atau kosong pada suatu variabel. Keberadaan missing value perlu diperiksa karena dapat memengaruhi proses analisis apabila tidak ditangani dengan tepat.

Pada pemeriksaan awal, sejumlah variabel diketahui memiliki nilai kosong. Jumlahnya dihitung dengan fungsi is.na() dan colSums(), lalu ditampilkan pada tabel berikut.

mv <- colSums(is.na(df))
mv_tabel <- data.frame(Variabel = names(mv[mv > 0]), Jumlah_Missing_Value = as.numeric(mv[mv > 0]))
knitr::kable(mv_tabel, caption = "Jumlah Missing Value per Variabel")
Jumlah Missing Value per Variabel
Variabel Jumlah_Missing_Value
Jam_Belajar_per_Minggu 12
Kehadiran_Persen 10
Nilai_Tugas 8
Nilai_Ujian 8
Kepuasan_Kuliah 8
sum(mv)
## [1] 46

Berdasarkan tabel tersebut, terdapat 46 missing value pada lima variabel. Missing value paling banyak ditemukan pada variabel Jam_Belajar_per_Minggu, yaitu sebanyak 12 nilai. Selanjutnya, Kehadiran_Persen memiliki 10 missing value, sedangkan Nilai_Tugas, Nilai_Ujian, dan Kepuasan_Kuliah masing-masing memiliki 8 missing value.

3.2 Inkonsistensi Data

Inkonsistensi data terjadi ketika suatu nilai ditulis dalam bentuk yang berbeda, tetapi memiliki makna yang sama. Kondisi ini perlu diperiksa karena dapat menyebabkan kategori yang seharusnya sama terbaca sebagai kategori yang berbeda saat dilakukan analisis.

Pada dataset mahasiswa, ditemukan inkonsistensi terutama pada variabel Gender dan Kota_Asal. Untuk mengetahui bentuk penulisan yang terdapat pada kedua variabel tersebut, dilakukan pemeriksaan menggunakan R.

3.2.1 Inkonsistensi Gender

Pada variabel Gender ditemukan penulisan yang beragam meskipun memiliki arti ataupun makna yang sama.
a. Laki-laki ditulis sebagai Laki-laki, Male, Pria, L.
b. Perempuan ditulis sebagai Perempuan, Female, Wanita, P.

table(df$Gender, useNA = "ifany")
## 
##    Female         L Laki-laki      Male         P Perempuan      Pria    Wanita 
##         6         2       539         4         8       646         3         7

Berdasarkan hasil pemeriksaan pada variabel Gender, terlihat bahwa terdapat beberapa bentuk penulisan yang berbeda untuk kategori yang memiliki makna sama. Hal ini menunjukkan adanya inkonsistensi penulisan pada variabel Gender.

3.2.2 Inkonsistensi Kota_Asal

Pada variabel Kota_Asal ditemukan penulisan besar kecil huruf yang berbeda.
a. Pekanbaru: Pekanbaru, pekanbaru, PEKANBARU.
b. Padang: Padang, padang, PADANG.
c. Jambi: Jambi, jambi, JAMBI.
d. Dumai: Dumai, DUMAI.
e. Medan: Medan, MEDAN.

table(df$Kota_Asal, useNA = "ifany")
## 
##     Dumai     DUMAI     jambi     Jambi     JAMBI     Medan     MEDAN    padang 
##       133         3         4       121         4       179         1         6 
##    Padang    PADANG pekanbaru Pekanbaru PEKANBARU 
##       206         2         7       546         3

Kondisi ini menunjukkan bahwa data belum memiliki format penulisan yang seragam. Inkonsistensi tersebut tidak menunjukkan perbedaan informasi, tetapi hanya perbedaan dalam penulisan kategori. Oleh karena itu, kategori yang memiliki makna sama perlu diseragamkan pada tahap data wrangling agar tidak dianggap sebagai kategori yang berbeda dalam proses analisis.

3.3 Duplikasi Data

Duplikasi data merupakan kondisi ketika terdapat data yang tercatat lebih dari satu kali. Pemeriksaan duplikasi dilakukan untuk memastikan setiap data mahasiswa tidak tercatat secara berulang dan untuk menghindari data yang sama dihitung lebih dari satu kali dalam analisis.

jumlah_duplikat <- sum(duplicated(df))

cat("Jumlah baris duplikat:", jumlah_duplikat)
## Jumlah baris duplikat: 14
id_duplikat <- df %>%
  count(ID_Mahasiswa, sort = TRUE) %>%
  filter(n > 1)

id_duplikat
## # A tibble: 15 × 2
##    ID_Mahasiswa     n
##           <dbl> <int>
##  1       100032     2
##  2       100096     2
##  3       100213     2
##  4       100425     2
##  5       100435     2
##  6       100443     2
##  7       100557     2
##  8       100761     2
##  9       100769     2
## 10       100844     2
## 11       100866     2
## 12       100947     2
## 13       100994     2
## 14       101011     2
## 15       101086     2

Berdasarkan hasil pemeriksaan, terdapat 14 baris yang teridentifikasi sebagai duplikasi identik atau sama persis. Selain itu, pemeriksaan berdasarkan ID_Mahasiswa menunjukkan terdapat 15 ID mahasiswa yang muncul lebih dari satu kali, dengan masing-masing ID tercatat sebanyak dua kali.

Hasil tersebut menunjukkan bahwa terdapat data yang tercatat berulang dalam dataset. Duplikasi ini perlu diperiksa agar setiap mahasiswa tidak dihitung lebih dari satu kali dalam proses analisis. Data yang terbukti merupakan duplikasi akan ditangani pada tahap Data Wrangling, yaitu dengan menghapus data yang muncul secara berulang.

3.4 Data Noisy

Data noisy merupakan data yang memiliki nilai tidak wajar atau berada di luar rentang yang seharusnya. Nilai seperti ini perlu diperiksa karena dapat memengaruhi hasil analisis nantinya apabila langsung digunakan.

Pemeriksaan dilakukan dengan membandingkan nilai pada beberapa variabel dengan rentang yang seharusnya. Variabel yang diperiksa meliputi Umur, Kehadiran_Persen, Nilai_Tugas, Nilai_Ujian, Nilai_Akhir, Kepuasan_Kuliah, dan Jam_Internet_per_Hari.

3.4.1 Pemeriksaan Data Noisy

noisy_data <- data.frame(
  Variabel = c(
    "Umur",
    "Kehadiran_Persen",
    "Nilai_Tugas",
    "Nilai_Ujian",
    "Nilai_Akhir",
    "Kepuasan_Kuliah",
    "Jam_Internet_per_Hari"
  ),
  
  Nilai_Tidak_Wajar = c(
    sum(df$Umur < 15 | df$Umur > 60, na.rm = TRUE),
    sum(df$Kehadiran_Persen < 0 | df$Kehadiran_Persen > 100, na.rm = TRUE),
    sum(df$Nilai_Tugas < 0 | df$Nilai_Tugas > 100, na.rm = TRUE),
    sum(df$Nilai_Ujian < 0 | df$Nilai_Ujian > 100, na.rm = TRUE),
    sum(df$Nilai_Akhir < 0 | df$Nilai_Akhir > 100, na.rm = TRUE),
    sum(df$Kepuasan_Kuliah < 1 | df$Kepuasan_Kuliah > 5, na.rm = TRUE),
    sum(df$Jam_Internet_per_Hari < 0 | df$Jam_Internet_per_Hari > 24, na.rm = TRUE)
  )
)

knitr::kable(
  noisy_data,
  caption = "Jumlah Data dengan Nilai Tidak Wajar"
)
Jumlah Data dengan Nilai Tidak Wajar
Variabel Nilai_Tidak_Wajar
Umur 2
Kehadiran_Persen 2
Nilai_Tugas 2
Nilai_Ujian 2
Nilai_Akhir 2
Kepuasan_Kuliah 2
Jam_Internet_per_Hari 2
summary(df[, c("Umur", "Kehadiran_Persen", "Nilai_Tugas", "Nilai_Ujian",
               "Nilai_Akhir", "Jam_Internet_per_Hari", "Kepuasan_Kuliah")])
##       Umur        Kehadiran_Persen  Nilai_Tugas      Nilai_Ujian    
##  Min.   : -3.00   Min.   :-10.00   Min.   : -5.00   Min.   : -2.00  
##  1st Qu.: 20.00   1st Qu.: 82.90   1st Qu.: 62.60   1st Qu.: 92.00  
##  Median : 21.00   Median : 87.70   Median : 69.70   Median : 98.00  
##  Mean   : 20.69   Mean   : 87.69   Mean   : 69.62   Mean   : 95.43  
##  3rd Qu.: 22.00   3rd Qu.: 93.00   3rd Qu.: 76.60   3rd Qu.:100.00  
##  Max.   :150.00   Max.   :125.00   Max.   :105.00   Max.   :150.00  
##                   NA's   :10       NA's   :8        NA's   :8       
##   Nilai_Akhir     Jam_Internet_per_Hari Kepuasan_Kuliah
##  Min.   : -8.00   Min.   :-1.000        Min.   :0.00   
##  1st Qu.: 81.80   1st Qu.: 3.400        1st Qu.:3.00   
##  Median : 86.10   Median : 4.500        Median :4.00   
##  Mean   : 85.48   Mean   : 4.552        Mean   :3.62   
##  3rd Qu.: 89.80   3rd Qu.: 5.700        3rd Qu.:4.00   
##  Max.   :120.00   Max.   :30.000        Max.   :8.00   
##                                         NA's   :8

1. Umur
Ditemukan nilai umur yang tidak wajar, yaitu -3 hingga 150 tahun. Umur -3 tahun tidak mungkin secara logis, sedangkan umur 150 tahun tidak wajar untuk karakteristik data mahasiswa.

2. Kehadiran_Persen
Ditemukan nilai kehadiran yang berada di luar rentang yang seharusnya, yaitu -10% hingga 125%. Persentase kehadiran seharusnya berada pada rentang 0% - 100%. Nilai negatif maupun nilai di atas 100% menunjukkan adanya data tidak valid.

3. Nilai (Nilai_Tugas, Nilai_Ujian, Nilai_Akhir)
Ditemukan beberapa nilai akademik yang berada di luar rentang, yaitu -2, -5, -8, 105, 120, dan 150. Karena skala nilai yang digunakan adalah 0–100, nilai-nilai tersebut termasuk data tidak valid.

4. Kepuasan_Kuliah
Variabel ini menggunakan skala 1 sampai 5. Namun, ditemukan nilai 0 dan 8 yang berada di luar rentang skala kepuasan yang telah ditentukan. Hal ini menunjukkan adanya data tidak valid pada variabel tersebut.

5. Jam_Internet_per_Hari
Ditemukan nilai yang tidak logis, yaitu -1 jam dan 30 jam. Dalam satu hari terdapat maksimal 24 jam, sehingga nilai -1 jam tidak mungkin terjadi, dan nilai 30 jam melebihi waktu yang tersedia dalam satu hari.

Berdasarkan hasil pemeriksaan, ditemukan beberapa nilai yang berada di luar rentang yang seharusnya pada beberapa variabel. Nilai tersebut termasuk data noisy dan akan ditangani pada tahap Data Wrangling agar data lebih sesuai untuk digunakan dalam analisis.

4 Data Wrangling

Data wrangling merupakan proses menyiapkan dan memperbaiki data agar memiliki struktur dan juga kualitas data yang lebih baik sebelum digunakan dalam analisis. Pada laporan ini, urutan pembersihan yang dijalankan adalah sebagai berikut

  1. Menghapus data duplikat.
  2. Menyeragamkan penulisan kolom kategorik (Gender, Kota_Asal, Program_Studi).
  3. Mengubah nilai tidak wajar (noisy) menjadi NA.
  4. Mengisi seluruh nilai kosong dengan median.

Duplikat dihapus lebih dulu agar perhitungan median tidak terpengaruh oleh baris ganda. Penulisan kategori diseragamkan sebelum data dikelompokkan dan dianalisis. Nilai tidak wajar diubah menjadi NA sebelum pengisian, sehingga nilai kosong asli dan nilai tidak wajar dapat diisi bersama-sama dalam satu langkah, dan median dihitung hanya dari nilai-nilai yang valid.

4.1 Menghapus Duplikat

Data yang tercatat lebih dari satu kali perlu dihapus agar mahasiswa yang sama tidak terhitung berulang ataupun terhitung lebih dari satu kali dalam analisis. Langkah di Excel: Berikut adalah cara menghapus data yang duplikat di dalam Excel.
1. Tekan CTRL + A untuk memblok seluruh data.
2. Buka tab Data, pilih Remove Duplicates, centang “My data has headers” dan semua kolom, lalu klik OK.
4. Setelah proses ini, tersisa 1.200 baris data.

Duplikasi data perlu dihapus agar data yang sama tidak dihitung lebih dari satu kali dalam analisis.

Langkah di R

df <- df %>%
  distinct(ID_Mahasiswa, .keep_all = TRUE)

cat("Jumlah baris setelah menghapus duplikat:", nrow(df))
## Jumlah baris setelah menghapus duplikat: 1200

Setelah proses penghapusan duplikat berdasarkan ID_Mahasiswa, setiap mahasiswa hanya memiliki satu data. Dengan demikian, data yang berulang tidak ikut digunakan dalam proses analisis selanjutnya.

4.2 Standarisasi Data

Standarisasi data dilakukan untuk menyamakan format penulisan pada data yang memiliki makna yang sama. Tahap ini penting terutama pada variabel kategorik, karena perbedaan penulisan dapat menyebabkan kategori yang seharusnya sama terbaca sebagai kategori yang berbeda.

Langkah standarisasi di R:

df <- df %>%
  mutate(
    Gender = str_trim(Gender),
    Gender = case_when(
      Gender %in% c("L", "Laki-laki", "Male", "Pria") ~ "Laki-laki",
      Gender %in% c("P", "Perempuan", "Female", "Wanita") ~ "Perempuan",
      TRUE ~ NA_character_
    ),
    
    Kota_Asal = str_trim(Kota_Asal),
    Kota_Asal = str_to_title(Kota_Asal),
    
    Program_Studi = str_trim(Program_Studi),
    Program_Studi = str_to_title(Program_Studi)
  )

table(df$Gender)
## 
## Laki-laki Perempuan 
##       539       661
table(df$Kota_Asal)
## 
##     Dumai     Jambi     Medan    Padang Pekanbaru 
##       136       127       177       210       550

Setelah dilakukan standarisasi, penulisan kategori pada Gender, Kota_Asal, dan Program_Studi menjadi lebih seragam. Dengan demikian, kategori yang sama tidak lagi terbaca sebagai kategori yang berbeda akibat perbedaan penulisan.

Langkah standarisasi di Excel:

  1. Pilih kolom Gender.
  2. Gunakan Find and Replace untuk mengganti Male, Pria, dan L menjadi Laki-laki.
  3. Ganti Female, Wanita, dan P menjadi Perempuan.
  4. Untuk Kota_Asal, gunakan format penulisan yang seragam, misalnya Pekanbaru, Padang, Jambi, Dumai, dan Medan.
  5. Lakukan hal yang sama pada Program_Studi.
  6. Periksa kembali kategori setelah proses standarisasi.

4.3 Menghapus Data Noisy

Pada tahap ini, nilai yang tidak sesuai dengan rentang yang telah ditentukan akan diubah menjadi NA, sedangkan data pada baris lainnya tetap dipertahankan. Nilai NA tersebut kemudian akan ditangani pada tahap pengisian missing value. Penghapusan nilai tidak wajar ini bisa dilakukan di R maupun Excel.

Langkah di Excel yaitu sebagai berikut:
1. Tentukan terlebih dahulu rentang valid setiap variabel.
2. Gunakan Filter untuk menemukan nilai di luar rentang.
3. Periksa nilai yang tidak wajar.
4. Kosongkan nilai tersebut sehingga menjadi sel kosong.
5. Jangan menghapus seluruh baris data.
6. Nilai yang sudah dikosongkan kemudian ditangani pada tahap imputasi missing value.

Contohnya, jika Nilai_Ujian = 120, maka nilai 120 dikosongkan karena berada di luar rentang 0–100.

Langkah di R:

df <- df %>%
  mutate(
    Umur = ifelse(Umur < 15 | Umur > 60, NA, Umur),
    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
    ),
    Jam_Internet_per_Hari = ifelse(
      Jam_Internet_per_Hari < 0 | Jam_Internet_per_Hari > 24,
      NA, Jam_Internet_per_Hari
    )
  )

Setelah data noisy ditangani, nilai yang berada di luar batas wajar diubah menjadi NA. Data tersebut selanjutnya akan ditangani pada tahap pengisian missing value.

4.4 Mengisi Missing Value

Missing value yang ditemukan pada tahap pemeriksaan dan nilai NA yang dihasilkan dari penanganan data noisy perlu diisi agar data dapat digunakan secara lebih lengkap dalam analisis. Pada project ini, missing value pada variabel numerik ditangani menggunakan median karena median adalah nilai tengah yang tidak terpengaruh oleh nilai ekstrem. Missing value hasil pemeriksaan dan nilai NA hasil penanganan data noisy perlu diisi agar data lengkap saat dianalisis. Pada variabel numerik, pengisian memakai median, yaitu nilai tengah data. Median dipilih karena tidak mudah terpengaruh nilai ekstrem, sedangkan rata-rata dapat bergeser jauh oleh satu nilai yang sangat besar atau sangat kecil. Hal ini penting karena data masih mungkin mengandung pencilan. Langkah mengisi missing value di Excel:

  1. Tentukan kolom yang memiliki missing value.
  2. Hitung median menggunakan rumus =MEDIAN(range).
  3. Cari sel yang kosong pada kolom tersebut.
  4. Isi sel kosong dengan nilai median yang diperoleh.
  5. Lakukan langkah yang sama pada variabel numerik lainnya.

Langkah mengisi missing value di R:

kolom_numerik <- df %>%
  select(where(is.numeric)) %>%
  names()

for (kolom in kolom_numerik) {
  median_val <- median(df[[kolom]], na.rm = TRUE)
  df[[kolom]][is.na(df[[kolom]])] <- median_val
}

colSums(is.na(df))
##           ID_Mahasiswa                   Nama                 Gender 
##                      0                      0                      0 
##                   Umur               Semester          Program_Studi 
##                      0                      0                      0 
##              Kota_Asal Jam_Belajar_per_Minggu       Kehadiran_Persen 
##                      0                      0                      0 
##            Nilai_Tugas            Nilai_Ujian            Nilai_Akhir 
##                      0                      0                      0 
##  Jam_Internet_per_Hari     Jam_Tidur_per_Hari        Kepuasan_Kuliah 
##                      0                      0                      0

Setelah missing value diisi menggunakan nilai median, pemeriksaan kembali dilakukan untuk memastikan tidak ada lagi nilai kosong pada variabel numerik.

4.5 Hasil Akhir Pembersihan

Setelah proses penghapusan duplikat, standarisasi data, penanganan data noisy, dan pengisian missing value dilakukan, data perlu diperiksa kembali. Pemeriksaan akhir ini bertujuan untuk memastikan bahwa permasalahan yang ditemukan sebelumnya telah ditangani dan dataset siap digunakan untuk tahap analisis.

hasil_akhir <- data.frame(
  Keterangan = c(
    "Jumlah baris",
    "Jumlah variabel",
    "Total missing value",
    "Total duplikasi"
  ),
  Jumlah = c(
    nrow(df),
    ncol(df),
    sum(is.na(df)),
    sum(duplicated(df))
  )
)

knitr::kable(
  hasil_akhir,
  caption = "Hasil Akhir Data Setelah Data Wrangling"
)
Hasil Akhir Data Setelah Data Wrangling
Keterangan Jumlah
Jumlah baris 1200
Jumlah variabel 15
Total missing value 0
Total duplikasi 0

Setelah proses data wrangling selesai, dataset telah dibersihkan dari duplikasi, data noisy, dan missing value sehingga siap digunakan untuk tahap analisis selanjutnya.

5 Tujuan Analisis

Analisis dilakukan untuk mengetahui hubungan antara Jam_Belajar_per_Minggu dan Jam_Internet_per_Hari dengan Jam_Tidur_per_Hari mahasiswa.

Variabel yang digunakan dalam analisis adalah:

  • Variabel dependen atau variabel terikat (Y): Jam_Tidur_per_Hari
  • Variabel prediktor atau variabel independen (X1): Jam_Belajar_per_Minggu
  • Variabel prediktor atau variabel independen(X2): Jam_Internet_per_Hari

Metode yang digunakan adalah regresi linear berganda dengan model:

model <- lm(Jam_Tidur_per_Hari ~ Jam_Belajar_per_Minggu + Jam_Internet_per_Hari, data = df)
residu <- residuals(model)

Analisis ini digunakan untuk melihat apakah jam belajar dan penggunaan internet memiliki hubungan dengan ataupun berpengaruh terhadap jam tidur mahasiswa.

6 Validitas Data

Validitas data dilakukan untuk memastikan data yang digunakan sesuai dengan tujuan analisis dan nilainya masuk akal. Variabel yang dipakai adalah Jam_Tidur_per_Hari sebagai variabel dependen atau variabel terikat, serta Jam_Belajar_per_Minggu dan Jam_Internet_per_Hari sebagai variabel prediktor atau variabel bebas. Ketiganya dipilih karena sesuai dengan tujuan analisis, yaitu melihat hubungan jam belajar dan penggunaan internet terhadap jam tidur mahasiswa.

Pemeriksaan dilakukan dari tiga sisi, yaitu tipe data, kelengkapan data (ada tidaknya nilai kosong), dan kewajaran nilai berdasarkan rentang yang masuk akal.

6.1 Ringkasan Statistik dan Nilai Kosong

variabel_analisis <- c("Jam_Tidur_per_Hari", "Jam_Belajar_per_Minggu", "Jam_Internet_per_Hari")

summary(df[variabel_analisis])
##  Jam_Tidur_per_Hari Jam_Belajar_per_Minggu Jam_Internet_per_Hari
##  Min.   : 1.000     Min.   : 2.00          Min.   : 0.500       
##  1st Qu.: 6.000     1st Qu.:10.50          1st Qu.: 3.400       
##  Median : 6.700     Median :13.90          Median : 4.500       
##  Mean   : 6.724     Mean   :13.83          Mean   : 4.538       
##  3rd Qu.: 7.400     3rd Qu.:17.10          3rd Qu.: 5.700       
##  Max.   :20.000     Max.   :29.60          Max.   :10.000
colSums(is.na(df[variabel_analisis]))
##     Jam_Tidur_per_Hari Jam_Belajar_per_Minggu  Jam_Internet_per_Hari 
##                      0                      0                      0

Output di atas menunjukkan bahwa jam tidur berkisar antara 1,0 sampai 20,0 jam per hari dengan median 6,7 jam. Jam belajar berkisar antara 2,0 sampai 29,6 jam per minggu dengan median 13,9 jam, dan jam internet berkisar antara 0,5 sampai 10,0 jam per hari dengan median 4,5 jam. Selain itu, ketiga variabel tidak memiliki nilai kosong.

6.2 Pemeriksaan Rentang Nilai

Nilai setiap variabel dibandingkan dengan batas yang masuk akal. Jam tidur dan jam internet per hari tidak mungkin melebihi 24 jam, sedangkan jam belajar per minggu tidak mungkin melebihi 168 jam (24 jam × 7 hari).

batas_atas <- c(24, 168, 24)

tabel_validitas <- data.frame(
  Variabel = variabel_analisis,
  Tipe_Data = sapply(df[variabel_analisis], class),
  Batas_Wajar = c("0 - 24", "0 - 168", "0 - 24"),
  Minimum = sapply(df[variabel_analisis], min),
  Maksimum = sapply(df[variabel_analisis], max),
  Missing_Value = colSums(is.na(df[variabel_analisis]))
)

tabel_validitas$Status <- ifelse(
  tabel_validitas$Minimum >= 0 &
    tabel_validitas$Maksimum <= batas_atas &
    tabel_validitas$Missing_Value == 0,
  "Valid", "Perlu diperiksa"
)

knitr::kable(
  tabel_validitas,
  row.names = FALSE,
  caption = "Hasil Pemeriksaan Validitas Variabel Analisis"
)
Hasil Pemeriksaan Validitas Variabel Analisis
Variabel Tipe_Data Batas_Wajar Minimum Maksimum Missing_Value Status
Jam_Tidur_per_Hari numeric 0 - 24 1.0 20.0 0 Valid
Jam_Belajar_per_Minggu numeric 0 - 168 2.0 29.6 0 Valid
Jam_Internet_per_Hari numeric 0 - 24 0.5 10.0 0 Valid

Berdasarkan tabel di atas, ketiga variabel bertipe numerik, tidak memiliki nilai kosong, dan seluruh nilainya berada dalam batas wajar. Nilai tidak wajar pada data awal, misalnya jam internet -1 jam dan 30 jam, sudah tidak ditemukan setelah proses data wrangling.

6.3 Pemeriksaan Nilai Ekstrem pada Jam Tidur

Walaupun masih berada dalam rentang 0 sampai 24 jam, nilai minimum jam tidur (1 jam) dan maksimumnya (20 jam) tampak jauh dari pusat data. Median jam tidur adalah 6,7 jam, dan separuh data berada di antara 6,0 dan 7,4 jam. Untuk memastikannya, sebaran jam tidur dilihat menggunakan boxplot.

boxplot(df$Jam_Tidur_per_Hari, horizontal = TRUE, col = "#AED6F1", main = "Sebaran Jam Tidur per Hari", xlab = "Jam")

boxplot.stats(df$Jam_Tidur_per_Hari)$out
## [1]  1 20

Pada boxplot 2 menandai bahwa nilai jam tidur sebagai nilai ekstrem, termasuk nilai 1 jam dan 20 jam. Nilai tersebut tetap dipertahankan karena masih mungkin terjadi dalam satu hari dan tidak termasuk data yang mustahil.

6.4 Kesimpulan Validitas

Ketiga variabel yang digunakan, yaitu Jam_Tidur_per_Hari, Jam_Belajar_per_Minggu, dan Jam_Internet_per_Hari, dinyatakan valid karena bertipe numerik, tidak memiliki nilai kosong, dan seluruh nilainya berada dalam rentang yang masuk akal. Dengan demikian, data layak digunakan untuk analisis regresi linear berganda pada tahap selanjutnya.

7 Uji Asumsi

7.1 Uji Normalitas

Uji normalitas dilakukan untuk mengetahui apakah residual dari model regresi berdistribusi normal. Pada project ini, normalitas residual diperiksa menggunakan uji Kolmogorov-Smirnov.

Tujuannya yaitu, menguji apakah residual model regresi berdistribusi normal. Asumsi ini penting terutama agar uji t dan uji F pada regresi dapat diandalkan.

Hipotesis.

H0: residual berdistribusi normal H1: residual tidak berdistribusi normal

Kriteria keputusan: H₀ ditolak jika p-value < 0,05.

Hasil Uji Kolmogorov-Smirnov
Statistik p.value
Kolmogorov-Smirnov 0.162

Berdasarkan uji Kolmogorov-Smirnov diperoleh p-value sebesar 0,1845 > 0,05 sehingga H₀ tidak ditolak. Dengan demikian, residual dapat dianggap berdistribusi normal. Hal ini juga didukung oleh Q-Q plot, di mana sebagian besar titik berada di sekitar garis diagonal, meskipun terdapat beberapa penyimpangan pada bagian ujung.

7.2 Uji Heteroskedastisitas

Uji heteroskedastisitas dilakukan untuk mengetahui apakah varians residual pada model regresi bersifat konstan atau tidak. Model regresi yang baik diharapkan memiliki varians residual yang konstan atau disebut homoskedastisitas. Pada project ini, uji heteroskedastisitas dilakukan menggunakan Breusch-Pagan.

Uji ini bertujuan untuk mengetahui apakah terdapat perbedaan varians residual pada model regresi yang digunakan.
H₀: Tidak terdapat heteroskedastisitas pada residual atau varians residual konstan.
H₁: Terdapat heteroskedastisitas pada residual atau varians residual tidak konstan.

Hasil Uji Breusch-Pagan
Statistik Nilai
Breusch-Pagan 0.6724
df 2.0000
p-value 0.7145

Dari hasil pengujian yang didapat, nilai dari p-value 0,7159 > 0,05, maka keputusan yang diambil adalah gagal menolak H₀. Maka, tidak terdapat bukti yang cukup untuk menyatakan bahwa terjadi heteroskedastisitas pada residual model. Dengan demikian, residual model dapat dianggap memiliki varians yang konstan atau homoskedastisitas, sehingga asumsi heteroskedastisitas terpenuhi.

7.3 Hasil Regresi dan Koefisien Determinasi (R²) R

Koefisien determinasi (R²) digunakan untuk menunjukkan seberapa besar variasi pada variabel terikat (Y) yang dapat dijelaskan oleh variabel-variabel prediktor dalam model regresi. Nilai R² berada pada rentang 0 sampai 1. Semakin besar nilai R², semakin besar pula proporsi variasi Y yang dapat dijelaskan oleh model. Namun, nilai R² dapat meningkat ketika variabel prediktor ditambahkan ke dalam model, meskipun variabel tersebut belum tentu memberikan kontribusi yang berarti.

korelasi <- lm(
  df$Jam_Tidur_per_Hari ~
    df$Jam_Belajar_per_Minggu +
    df$Jam_Internet_per_Hari,
  data = df
)

summary(korelasi)
## 
## Call:
## lm(formula = df$Jam_Tidur_per_Hari ~ df$Jam_Belajar_per_Minggu + 
##     df$Jam_Internet_per_Hari, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.7468 -0.6773 -0.0123  0.6585 13.2195 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               6.477673   0.122042  53.078   <2e-16 ***
## df$Jam_Belajar_per_Minggu 0.013990   0.006252   2.238   0.0254 *  
## df$Jam_Internet_per_Hari  0.011610   0.017832   0.651   0.5151    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.078 on 1197 degrees of freedom
## Multiple R-squared:  0.004534,   Adjusted R-squared:  0.002871 
## F-statistic: 2.726 on 2 and 1197 DF,  p-value: 0.06588

Berdasarkan output dapat dilihat bahwa nilai konstanta sebesar 6,48 menunjukkan bahwa ketika jam belajar dan penggunaan internet bernilai nol, perkiraan jam tidur adalah sekitar 6,48 jam per hari.

Variabel Jam_Belajar_per_Minggu memiliki koefisien positif sebesar 0,014 dengan p-value 0,0254 < 0,05. Artinya, jam belajar memiliki hubungan yang signifikan dengan jam tidur, dengan setiap kenaikan 1 jam belajar per minggu diperkirakan meningkatkan jam tidur sekitar 0,014 jam per hari. Sementara itu, Jam_Internet_per_Hari memiliki p-value 0,5151 > 0,05, sehingga belum terdapat hubungan yang signifikan dengan jam tidur.

Hasil uji F menunjukkan p-value sebesar 0,06588 > 0,05. Artinya, kedua variabel tersebut secara bersama-sama belum menunjukkan hubungan yang signifikan dengan jam tidur. Nilai R² sebesar 0,004534 menunjukkan bahwa model hanya mampu menjelaskan sekitar 0,45% variasi jam tidur, sedangkan 99,55% lainnya dijelaskan oleh faktor di luar model.

8 Integrasi Data

8.1 Defenisi Integrasi Data

Pada tahap ini, variabel yang diperlukan untuk analisis dikumpulkan dalam satu tabel menggunakan ID_Mahasiswa sebagai penanda mahasiswa, sehingga informasi jam tidur, jam belajar, jam internet, dan hasil encoding dapat dilihat bersama. Proses ini diperlukan ketika informasi yang dibutuhkan untuk analisis tidak terdapat dalam satu tabel yang sama.

Pada project ini, integrasi dilakukan dengan menggunakan ID_Mahasiswa sebagai kunci penghubung antar data. ID_Mahasiswa digunakan karena setiap mahasiswa memiliki identitas yang dapat digunakan untuk mencocokkan informasi dari tabel yang berbeda.

Integrasi dilakukan agar informasi mengenai mahasiswa dapat digabungkan secara lebih lengkap. Dengan adanya proses ini, variabel dari tabel yang berbeda dapat digunakan secara bersamaan dalam tahap analisis maupun pengolahan data selanjutnya.

8.2 Tujuan Integrasi data

Integrasi data dilakukan untuk menggabungkan informasi dari beberapa tabel yang memiliki keterkaitan berdasarkan ID_Mahasiswa. Dengan adanya integrasi, data yang sebelumnya terpisah dapat digunakan secara bersamaan sehingga informasi yang diperoleh menjadi lebih lengkap.

Secara khusus, tujuan integrasi data pada project ini adalah:

  1. Menggabungkan data berdasarkan ID_Mahasiswa sebagai kunci penghubung.
  2. Melengkapi informasi mahasiswa dengan menggabungkan variabel dari tabel yang berbeda.
  3. Mempermudah proses analisis karena variabel yang diperlukan dapat tersedia dalam satu dataset.
  4. Mengurangi pemisahan informasi antar tabel sehingga data lebih terstruktur dan siap digunakan untuk tahap selanjutnya.

8.3 Encoding Jam_Belajar

Pada tahap ini, variabel Jam_Belajar_per_Minggu diubah menjadi data kategorik berdasarkan jumlah jam belajar mahasiswa dalam satu minggu. Pengelompokan dilakukan menjadi tiga kategori, yaitu Rendah, Sedang, dan Tinggi.

Hasil Encoding Jam Belajar
Kategori Kode
Rendah 1
Sedang 2
Tinggi 3

Proses encoding dilakukan dengan memberikan kode numerik pada setiap kategori. Kode tersebut digunakan sebagai representasi dari kategori jam belajar sehingga variabel dapat digunakan dalam proses pengolahan dan analisis data selanjutnya.

8.4 Visualisasi

Berdasarkan grafik di atas, dapat dilihat jumlah mahasiswa pada masing-masing kategori jam belajarnya. Kategori dengan jumlah mahasiswa paling tinggi menunjukkan kelompok mahasiswa yang paling banyak berdasarkan rentang jam belajar yang telah ditentukan.

8.5 Data Gabungan

Data 1 dan Data 2 digabung menggunakan ID_Mahasiswa sebagai kunci utama (Primary Key), sehingga informasi Kategori_Belajar dapat ditambahkan ke Data 1 tanpa menghilangkan informasi yang sudah ada.

Contoh Data Gabungan
ID_Mahasiswa Jam_Tidur_per_Hari Jam_Belajar_per_Minggu Jam_Internet_per_Hari Jam_Belajar_Factor Jam_Belajar_Code
100740 4.9 3.6 5.8 Rendah 1
100789 7.7 13.0 3.4 Sedang 2
100044 5.6 13.3 4.4 Sedang 2
100156 7.5 11.8 4.6 Sedang 2
100495 6.3 13.8 5.6 Sedang 2
100971 6.3 20.1 5.9 Tinggi 3

Hasil penggabungan menunjukkan bahwa variabel yang diperlukan telah berada dalam satu tabel berdasarkan ID_Mahasiswa. Data gabungan ini selanjutnya dapat digunakan untuk proses analisis dan pengolahan data berikutnya.

9 Integrasi Data II

Integrasi Data II merupakan proses menggabungkan kembali data yang telah dipisahkan menjadi beberapa bagian, dengan tetap menggunakan ID_Mahasiswa sebagai kunci penghubung. Pada tahap ini, data dibagi menjadi Data 1 dan Data 2, kemudian digabungkan kembali untuk menghasilkan data yang lebih lengkap.

Penggabungan ini dilakukan agar informasi dari kedua data dapat digunakan secara bersamaan. Selain itu, proses ini juga memastikan bahwa data hasil encoding tetap terhubung dengan informasi mahasiswa yang sesuai.

9.1 Encoding Faktor

Pada tahap integrasi data kedua, dilakukan pengubahan variabel pada Jam_Belajar_Per_Minggu ke dalam bentuk Faktor berurutan (ordered factor). Penggunaan faktor berurutan dilakukan karena kategori jam belajar memiliki tingkatan, yaitu Rendah. Sedang, dan Tinggi.

Proses encoding ini dilakukan dengan menjadikan kategori jam belajar sebagai faktor yang berurutan. Selanjutnya, setiap kategori diberikan kode numerik sesuai dengan urutannya.

Encoding Faktor Jam Belajar
Kategori Kode
Rendah 1
Sedang 2
Tinggi 3

Hasil encoding menunjukkan bahwa kategori jam belajar memiliki urutan dari Rendah, Sedang, hingga Tinggi. Pemberian kode 1, 2, dan 3 mengikuti urutan tersebut sehingga informasi tingkatan pada variabel tetap dipertahankan.

9.2 Membuat Data 1 dan Data 2

Pada tahap ini, dataset yang tadi sudah dibersihkan dan ei encoding kemudian dipisahkan menjadi dua data dengan cara memilih dua variabel yang akan digunakan pada masing-masing data.
Data 1: berisi ID_Mahasiswa, Jam_Tidur_per_Hari, Jam_Internet_per_Hari, danJam_Belajar_per_Minggu. **Data 2:** berisiID_Mahasiswa,Jam_Belajar_Factor, danJam_Belajar_Code`.

Lima Baris Awal Data 1
ID_Mahasiswa Jam_Tidur_per_Hari Jam_Internet_per_Hari Jam_Belajar_per_Minggu
100740 4.9 5.8 3.6
100789 7.7 3.4 13.0
100044 5.6 4.4 13.3
100156 7.5 4.6 11.8
100495 6.3 5.6 13.8
Lima Baris Awal Data 2
ID_Mahasiswa Jam_Belajar_Factor Jam_Belajar_Code
100740 Rendah 1
100789 Sedang 2
100044 Sedang 2
100156 Sedang 2
100495 Sedang 2

Data 1 berisi variabel utama yang berkaitan dengan jam tidur, penggunaan internet, dan juga jam belajar. Sementara itu, Data 2 berisi kategori jam belajar beserta kode faktor yang telah dibuat sebelumnya. Kedua data ini memiliki ID_Mahasiswa sebagai kunci yang memungkinkan informasi dari kedua data tersebut bisa dihubungkan pada tahap integrasi.

9.3 Data Gabungan

Setelah Data 1 dan Data 2 dibuat, kedua data tersebut digabungkan berdasarkan ID_Mahasiswa sebagai primarry key. Penggabungan ini dilakukan untuk menyatukan informasi dari kedua data ke dalam satu dataset.

Lima Baris Awal Data Gabungan
ID_Mahasiswa Jam_Tidur_per_Hari Jam_Internet_per_Hari Jam_Belajar_per_Minggu Jam_Belajar_Factor Jam_Belajar_Code
100740 4.9 5.8 3.6 Rendah 1
100789 7.7 3.4 13.0 Sedang 2
100044 5.6 4.4 13.3 Sedang 2
100156 7.5 4.6 11.8 Sedang 2
100495 6.3 5.6 13.8 Sedang 2

Hasil penggabungan menunjukkan bahwa informasi dari Data 1 dan Data 2 telah berhasil disatukan berdasarkan ID_Mahasiswa. Data gabungan tersebut memuat informasi jam tidur, jam internet, jam belajar, serta kategori dan kode jam belajar sehingga dapat digunakan untuk proses analisis selanjutnya.

10 Penutup

10.1 Kesimpulan

Berdasarkan proses yang telah dilakukan, dataset mahasiswa yang digunakan terdiri dari 1.215 baris dan 15 variabel. Pada pemeriksaan awal ditemukan beberapa permasalahan data, yaitu missing value, inkonsistensi penulisan, data duplikat, serta nilai yang berada di luar rentang yang seharusnya.

Permasalahan tersebut kemudian ditangani melalui proses data wrangling, meliputi penghapusan duplikasi, standarisasi data, penanganan data noisy, dan pengisian missing value. Setelah proses tersebut dilakukan, data menjadi lebih terstruktur dan dapat digunakan untuk tahap analisis sampai akhir.

Analisis dilakukan untuk melihat hubungan Jam_Belajar_per_Minggu dan Jam_Internet_per_Hari dengan Jam_Tidur_per_Hari menggunakan regresi linear berganda. Uji Kolmogorov-Smirnov menghasilkan p-value 0,1845, sehingga residual dapat dianggap berdistribusi normal. Uji Breusch-Pagan menghasilkan p-value 0,7159, sehingga asumsi homoskedastisitas terpenuhi.

Hasil regresi menunjukkan bahwa jam belajar berhubungan signifikan dengan jam tidur secara parsial (p-value 0,0254), sedangkan jam internet tidak signifikan (p-value 0,5151). Secara simultan, model belum signifikan pada taraf 5% (p-value 0,06588) dengan R² sebesar 0,004534. Artinya, kedua variabel hanya menjelaskan sekitar 0,45% variasi jam tidur, sehingga hubungannya sangat lemah.

Selain itu, dilakukan proses encoding terhadap Jam_Belajar_per_Minggu menjadi kategori Rendah, Sedang, dan Tinggi, kemudian data dipisahkan dan digabungkan kembali berdasarkan ID_Mahasiswa. Dengan demikian, data yang telah melalui proses pembersihan, validasi, analisis, encoding, dan integrasi dapat digunakan untuk tahap pengolahan selanjutnya.

10.2 Saran

  1. Memeriksa kualitas data sejak awal. Pemeriksaan sebaiknya dilakukan sebelum analisis, karena kesalahan yang terlambat ditemukan dapat membuat seluruh hasil harus diulang.
  2. Memakai data dengan dokumentasi yang jelas. Data yang disertai definisi, satuan, dan rentang nilai yang jelas memudahkan penentuan batas wajar tiap variabel.
  3. Mencoba metode pengisian data kosong lain. Pada tugas ini data kosong diisi dengan median. Metode lain dapat dicoba lalu hasilnya dibandingkan.
  4. Mengembangkan model analisis. Karena R² model sangat kecil, penelitian berikutnya dapat menambahkan variabel lain yang mungkin berkaitan dengan jam tidur, misalnya semester atau nilai akademik.
  5. Mendokumentasikan proses pembersihan. Setiap langkah dicatat seperti pada dokumen ini agar dapat diulang dan diperiksa pihak lain.