AI Impact on Students

Academic Performance & Well-being Analysis

Project Overview

This project analyzes the relationship between generative AI usage, academic performance, learning behavior, and student well-being.

The analysis covers:

  • Pemahaman Bisnis
  • Data understanding and profiling (Pemahaman dan Profiling Data)
  • Data cleaning and validation (Validasi dan Pembersihan Data)
  • Exploratory data analysis (Exploratory Data Analysis (EDA))
  • Statistical analysis
  • Student segmentation (Analisis dan Segmentasi)
  • Data-driven insights (Temuan dan Kesimpulan)

============================================================

1. PEMAHAMAN BISNIS

============================================================

Tujuan analisis:

  • Memahami pola penggunaan AI generatif pada mahasiswa.
  • Menganalisis hubungan penggunaan AI dengan performa akademik.
  • Menganalisis hubungan ketergantungan AI dengan retensi pengetahuan.
  • Mengidentifikasi pola risiko burnout dan kesejahteraan mahasiswa.
  • Mengelompokkan mahasiswa berdasarkan intensitas penggunaan AI.

============================================================

2. PEMAHAMAN DAN PROFILING DATA

============================================================

Dataset berisi informasi mahasiswa yang mencakup profil akademik, penggunaan AI generatif, kebiasaan belajar, kebijakan institusi, dan indikator kesejahteraan.Tahap ini dilakukan untuk memahami struktur dataset,tipe data, kelengkapan data, dan kondisi awal data.

# Memanggil package yang digunakan
library(readxl)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(corrplot)
## corrplot 0.95 loaded
library(skimr)
## Warning: package 'skimr' was built under R version 4.5.3
library(naniar)
## Warning: package 'naniar' was built under R version 4.5.3
## 
## Attaching package: 'naniar'
## The following object is masked from 'package:skimr':
## 
##     n_complete
# Import dataset
data <- read_excel("Ai_student_impact_dataset .xlsx")
# Melihat dimensi dataset
dim(data)
## [1] 50000    16
# Melihat nama variabel
names(data)
##  [1] "Student_ID"                 "Major_Category"            
##  [3] "Year_of_Study"              "Pre_Semester_GPA"          
##  [5] "Weekly_GenAI_Hours"         "Primary_Use_Case"          
##  [7] "Prompt_Engineering_Skill"   "Tool_Diversity"            
##  [9] "Paid_Subscription"          "Traditional_Study_Hours"   
## [11] "Perceived_AI_Dependency"    "Institutional_Policy"      
## [13] "Anxiety_Level_During_Exams" "Post_Semester_GPA"         
## [15] "Skill_Retention_Score"      "Burnout_Risk_Level"
# Melihat struktur data
str(data)
## tibble [50,000 × 16] (S3: tbl_df/tbl/data.frame)
##  $ Student_ID                : num [1:50000] 1e+05 1e+05 1e+05 1e+05 1e+05 ...
##  $ Major_Category            : chr [1:50000] "Humanities" "Medical" "Business" "Business" ...
##  $ Year_of_Study             : chr [1:50000] "Senior" "Junior" "Freshman" "Senior" ...
##  $ Pre_Semester_GPA          : num [1:50000] 2.42 3.82 3.4 3.79 3.63 ...
##  $ Weekly_GenAI_Hours        : num [1:50000] 23.31 1.12 21.26 1.82 9.29 ...
##  $ Primary_Use_Case          : chr [1:50000] "Copywriting/Drafting" "Ideation" "Summarizing_Reading" "Copywriting/Drafting" ...
##  $ Prompt_Engineering_Skill  : chr [1:50000] "Beginner" "Advanced" "Beginner" "Intermediate" ...
##  $ Tool_Diversity            : num [1:50000] 1 5 2 4 4 1 5 3 2 2 ...
##  $ Paid_Subscription         : logi [1:50000] TRUE FALSE FALSE FALSE FALSE FALSE ...
##  $ Traditional_Study_Hours   : num [1:50000] 8.13 16.65 10.35 15.23 12.55 ...
##  $ Perceived_AI_Dependency   : num [1:50000] 5 3 5 2 4 4 8 2 1 3 ...
##  $ Institutional_Policy      : chr [1:50000] "Allowed_With_Citation" "Allowed_With_Citation" "Strict_Ban" "Allowed_With_Citation" ...
##  $ Anxiety_Level_During_Exams: num [1:50000] 6 9 9 2 4 5 7 1 5 8 ...
##  $ Post_Semester_GPA         : num [1:50000] 2.39 3.7 3.5 4 3.8 ...
##  $ Skill_Retention_Score     : num [1:50000] 86.4 69.4 73.9 63.6 100 ...
##  $ Burnout_Risk_Level        : chr [1:50000] "High" "Low" "Medium" "Medium" ...
# Statistik deskriptif awal
summary(data)
##    Student_ID     Major_Category     Year_of_Study      Pre_Semester_GPA
##  Min.   :100001   Length:50000       Length:50000       Min.   : 1.183  
##  1st Qu.:112501   Class :character   Class :character   1st Qu.: 2.834  
##  Median :125001   Mode  :character   Mode  :character   Median : 3.210  
##  Mean   :125001                                         Mean   : 3.146  
##  3rd Qu.:137500                                         3rd Qu.: 3.521  
##  Max.   :150000                                         Max.   :12.249  
##                                                                         
##  Weekly_GenAI_Hours Primary_Use_Case   Prompt_Engineering_Skill
##  Min.   : 0.000     Length:50000       Length:50000            
##  1st Qu.: 2.390     Class :character   Class :character        
##  Median : 5.800     Mode  :character   Mode  :character        
##  Mean   : 8.428                                                
##  3rd Qu.:11.720                                                
##  Max.   :40.000                                                
##                                                                
##  Tool_Diversity   Paid_Subscription Traditional_Study_Hours
##  Min.   : 1.000   Mode :logical     Min.   : 1.00          
##  1st Qu.: 2.000   FALSE:28846       1st Qu.: 7.56          
##  Median : 3.000   TRUE :21154       Median :11.18          
##  Mean   : 2.801                     Mean   :11.21          
##  3rd Qu.: 4.000                     3rd Qu.:14.71          
##  Max.   :18.000                     Max.   :35.86          
##                                                            
##  Perceived_AI_Dependency Institutional_Policy Anxiety_Level_During_Exams
##  Min.   : 1.000          Length:50000         Min.   : 1.000            
##  1st Qu.: 2.000          Class :character     1st Qu.: 3.000            
##  Median : 3.000          Mode  :character     Median : 4.000            
##  Mean   : 3.505                               Mean   : 4.271            
##  3rd Qu.: 5.000                               3rd Qu.: 6.000            
##  Max.   :10.000                               Max.   :10.000            
##                                                                         
##  Post_Semester_GPA Skill_Retention_Score Burnout_Risk_Level
##  Min.   : 1.000    Min.   : 10.78        Length:50000      
##  1st Qu.: 3.023    1st Qu.: 66.82        Class :character  
##  Median : 3.421    Median : 76.00        Mode  :character  
##  Mean   : 3.349    Mean   : 75.80                          
##  3rd Qu.: 3.749    3rd Qu.: 85.19                          
##  Max.   :10.389    Max.   :100.00                          
##  NA's   :1
# Profiling dataset
skim(data)
Data summary
Name data
Number of rows 50000
Number of columns 16
_______________________
Column type frequency:
character 6
logical 1
numeric 9
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
Major_Category 0 1 4 10 0 5 0
Year_of_Study 0 1 3 9 0 6 0
Primary_Use_Case 1 1 8 25 0 5 0
Prompt_Engineering_Skill 0 1 8 12 0 3 0
Institutional_Policy 0 1 10 21 0 3 0
Burnout_Risk_Level 0 1 3 6 0 3 0

Variable type: logical

skim_variable n_missing complete_rate mean count
Paid_Subscription 0 1 0.42 FAL: 28846, TRU: 21154

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Student_ID 0 1 125000.50 14433.90 100001.00 112500.75 125000.50 137500.25 150000.00 ▇▇▇▇▇
Pre_Semester_GPA 0 1 3.15 0.48 1.18 2.83 3.21 3.52 12.25 ▇▅▁▁▁
Weekly_GenAI_Hours 0 1 8.43 8.27 0.00 2.39 5.80 11.72 40.00 ▇▃▁▁▁
Tool_Diversity 0 1 2.80 1.19 1.00 2.00 3.00 4.00 18.00 ▇▁▁▁▁
Traditional_Study_Hours 0 1 11.21 5.16 1.00 7.56 11.18 14.71 35.86 ▅▇▃▁▁
Perceived_AI_Dependency 0 1 3.51 1.82 1.00 2.00 3.00 5.00 10.00 ▆▇▅▁▁
Anxiety_Level_During_Exams 0 1 4.27 2.14 1.00 3.00 4.00 6.00 10.00 ▆▇▇▃▁
Post_Semester_GPA 1 1 3.35 0.50 1.00 3.02 3.42 3.75 10.39 ▂▇▁▁▁
Skill_Retention_Score 0 1 75.80 13.28 10.78 66.82 76.00 85.19 100.00 ▁▁▃▇▆
# Mengecek missing value
colSums(is.na(data))
##                 Student_ID             Major_Category 
##                          0                          0 
##              Year_of_Study           Pre_Semester_GPA 
##                          0                          0 
##         Weekly_GenAI_Hours           Primary_Use_Case 
##                          0                          1 
##   Prompt_Engineering_Skill             Tool_Diversity 
##                          0                          0 
##          Paid_Subscription    Traditional_Study_Hours 
##                          0                          0 
##    Perceived_AI_Dependency       Institutional_Policy 
##                          0                          0 
## Anxiety_Level_During_Exams          Post_Semester_GPA 
##                          0                          1 
##      Skill_Retention_Score         Burnout_Risk_Level 
##                          0                          0
# Mengecek data duplikat
sum(duplicated(data))
## [1] 0

Interpretasi

  • Dataset terdiri dari 50.000 observasi dan 16 variabel.
  • Terdapat 2 missing value, yaitu pada Primary_Use_Case dan Post_Semester_GPA.
  • Ditemukan beberapa nilai yang perlu divalidasi, yaitu GPA dan Tool_Diversity yang berada di luar rentang yang ditentukan.
  • Tidak ditemukan data duplikat.

============================================================

3. VALIDASI DAN PEMBERSIHAN DATA

============================================================

Tahap ini dilakukan untuk memastikan data sesuai dengan rentang, kategori, dan tipe data yang seharusnya sebelum digunakan dalam analisis. ## ———————————————————— ## 3.1 Validasi Missing Value ## ————————————————————

# Mengecek kembali missing value
colSums(is.na(data))
##                 Student_ID             Major_Category 
##                          0                          0 
##              Year_of_Study           Pre_Semester_GPA 
##                          0                          0 
##         Weekly_GenAI_Hours           Primary_Use_Case 
##                          0                          1 
##   Prompt_Engineering_Skill             Tool_Diversity 
##                          0                          0 
##          Paid_Subscription    Traditional_Study_Hours 
##                          0                          0 
##    Perceived_AI_Dependency       Institutional_Policy 
##                          0                          0 
## Anxiety_Level_During_Exams          Post_Semester_GPA 
##                          0                          1 
##      Skill_Retention_Score         Burnout_Risk_Level 
##                          0                          0
# Melihat baris yang memiliki missing value
data[!complete.cases(data), ]
## # A tibble: 2 × 16
##   Student_ID Major_Category Year_of_Study Pre_Semester_GPA Weekly_GenAI_Hours
##        <dbl> <chr>          <chr>                    <dbl>              <dbl>
## 1     100465 Medical        Junior                    2.39               7.65
## 2     145825 Business       Junior                    3.59               1.98
## # ℹ 11 more variables: Primary_Use_Case <chr>, Prompt_Engineering_Skill <chr>,
## #   Tool_Diversity <dbl>, Paid_Subscription <lgl>,
## #   Traditional_Study_Hours <dbl>, Perceived_AI_Dependency <dbl>,
## #   Institutional_Policy <chr>, Anxiety_Level_During_Exams <dbl>,
## #   Post_Semester_GPA <dbl>, Skill_Retention_Score <dbl>,
## #   Burnout_Risk_Level <chr>
# Menghapus baris dengan missing value
data_clean <- data %>%
  filter(complete.cases(.))

# Mengecek kembali missing value
colSums(is.na(data_clean))
##                 Student_ID             Major_Category 
##                          0                          0 
##              Year_of_Study           Pre_Semester_GPA 
##                          0                          0 
##         Weekly_GenAI_Hours           Primary_Use_Case 
##                          0                          0 
##   Prompt_Engineering_Skill             Tool_Diversity 
##                          0                          0 
##          Paid_Subscription    Traditional_Study_Hours 
##                          0                          0 
##    Perceived_AI_Dependency       Institutional_Policy 
##                          0                          0 
## Anxiety_Level_During_Exams          Post_Semester_GPA 
##                          0                          0 
##      Skill_Retention_Score         Burnout_Risk_Level 
##                          0                          0

Interpretasi:

Ditemukan 2 missing value, yaitu 1 pada Primary_Use_Case dan 1 pada Post_Semester_GPA. Kedua baris dihapus karena jumlahnya sangat kecil dibandingkan keseluruhan dataset. Setelah pembersihan, tidak terdapat missing value.

————————————————————

3.2 Validasi Year of Study

————————————————————

# Melihat kategori Year_of_Study
unique(data_clean$Year_of_Study)
## [1] "Senior"    "Junior"    "Freshman"  "Sophomore" "Graduate"  "123"
# Melihat jumlah setiap kategori
table(data_clean$Year_of_Study)
## 
##       123  Freshman  Graduate    Junior    Senior Sophomore 
##         1     11030      7430     11043     10634      9860
# Menghapus kategori Year_of_Study yang tidak valid
data_clean <- data_clean %>%
  filter(
    Year_of_Study %in%
      c("Freshman", "Sophomore", "Junior", "Senior", "Graduate")
  )

# Mengecek kembali kategori
table(data_clean$Year_of_Study)
## 
##  Freshman  Graduate    Junior    Senior Sophomore 
##     11030      7430     11043     10634      9860

Hasil:

Ditemukan 1 nilai Year_of_Study yang tidak valid, yaitu “123”. Nilai tersebut dihapus dari dataset.

————————————————————

3.3 Validasi GPA

————————————————————

# Mengecek Pre-Semester GPA di luar rentang valid
data_clean %>%
  filter(
    Pre_Semester_GPA < 1.18 |
      Pre_Semester_GPA > 4
  )
## # A tibble: 1 × 16
##   Student_ID Major_Category Year_of_Study Pre_Semester_GPA Weekly_GenAI_Hours
##        <dbl> <chr>          <chr>                    <dbl>              <dbl>
## 1     145219 Humanities     Graduate                  12.2               14.5
## # ℹ 11 more variables: Primary_Use_Case <chr>, Prompt_Engineering_Skill <chr>,
## #   Tool_Diversity <dbl>, Paid_Subscription <lgl>,
## #   Traditional_Study_Hours <dbl>, Perceived_AI_Dependency <dbl>,
## #   Institutional_Policy <chr>, Anxiety_Level_During_Exams <dbl>,
## #   Post_Semester_GPA <dbl>, Skill_Retention_Score <dbl>,
## #   Burnout_Risk_Level <chr>
# Mengecek Post-Semester GPA di luar rentang valid
data_clean %>%
  filter(
    Post_Semester_GPA < 1 |
      Post_Semester_GPA > 4
  )
## # A tibble: 1 × 16
##   Student_ID Major_Category Year_of_Study Pre_Semester_GPA Weekly_GenAI_Hours
##        <dbl> <chr>          <chr>                    <dbl>              <dbl>
## 1     100089 Medical        Graduate                  3.37               6.51
## # ℹ 11 more variables: Primary_Use_Case <chr>, Prompt_Engineering_Skill <chr>,
## #   Tool_Diversity <dbl>, Paid_Subscription <lgl>,
## #   Traditional_Study_Hours <dbl>, Perceived_AI_Dependency <dbl>,
## #   Institutional_Policy <chr>, Anxiety_Level_During_Exams <dbl>,
## #   Post_Semester_GPA <dbl>, Skill_Retention_Score <dbl>,
## #   Burnout_Risk_Level <chr>
# Menghapus nilai GPA yang tidak valid
data_clean <- data_clean %>%
  filter(
    Pre_Semester_GPA >= 1.18,
    Pre_Semester_GPA <= 4,
    Post_Semester_GPA >= 1,
    Post_Semester_GPA <= 4
  )

Hasil:

Ditemukan 1 nilai Pre-Semester GPA dan 1 nilai Post-Semester GPA di luar rentang yang ditentukan. Kedua data tersebut dihapus.

# Menghapus nilai GPA yang tidak valid
data_clean <- data_clean %>%
  filter(
    Pre_Semester_GPA >= 1.18,
    Pre_Semester_GPA <= 4,
    Post_Semester_GPA >= 1,
    Post_Semester_GPA <= 4
  )

# Mengecek kembali nilai maksimum GPA
max(data_clean$Pre_Semester_GPA)
## [1] 3.998
max(data_clean$Post_Semester_GPA)
## [1] 4
# Mengecek ukuran dataset
dim(data_clean)
## [1] 49995    16

————————————————————

3.4 Validasi Tool Diversity

————————————————————

# Mengecek nilai Tool_Diversity di luar rentang valid
data_clean %>%
  filter(
    Tool_Diversity < 1 |
      Tool_Diversity > 5
  )
## # A tibble: 1 × 16
##   Student_ID Major_Category Year_of_Study Pre_Semester_GPA Weekly_GenAI_Hours
##        <dbl> <chr>          <chr>                    <dbl>              <dbl>
## 1     100297 Arts           Junior                    3.39               10.7
## # ℹ 11 more variables: Primary_Use_Case <chr>, Prompt_Engineering_Skill <chr>,
## #   Tool_Diversity <dbl>, Paid_Subscription <lgl>,
## #   Traditional_Study_Hours <dbl>, Perceived_AI_Dependency <dbl>,
## #   Institutional_Policy <chr>, Anxiety_Level_During_Exams <dbl>,
## #   Post_Semester_GPA <dbl>, Skill_Retention_Score <dbl>,
## #   Burnout_Risk_Level <chr>
# Menghapus nilai Tool_Diversity yang tidak valid
data_clean <- data_clean %>%
  filter(
    Tool_Diversity >= 1,
    Tool_Diversity <= 5
  )

Hasil:

Ditemukan 1 nilai Tool_Diversity di luar rentang 1–5. Nilai tersebut dihapus dari dataset.

————————————————————

3.5 Validasi Variabel Numerik

————————————————————

summary(data_clean %>%
          select(
            Weekly_GenAI_Hours,
            Traditional_Study_Hours,
            Perceived_AI_Dependency,
            Anxiety_Level_During_Exams,
            Skill_Retention_Score
          ))
##  Weekly_GenAI_Hours Traditional_Study_Hours Perceived_AI_Dependency
##  Min.   : 0.000     Min.   : 1.00           Min.   : 1.000         
##  1st Qu.: 2.390     1st Qu.: 7.56           1st Qu.: 2.000         
##  Median : 5.800     Median :11.18           Median : 3.000         
##  Mean   : 8.427     Mean   :11.21           Mean   : 3.505         
##  3rd Qu.:11.720     3rd Qu.:14.71           3rd Qu.: 5.000         
##  Max.   :40.000     Max.   :35.86           Max.   :10.000         
##  Anxiety_Level_During_Exams Skill_Retention_Score
##  Min.   : 1.000             Min.   : 10.78       
##  1st Qu.: 3.000             1st Qu.: 66.82       
##  Median : 4.000             Median : 76.00       
##  Mean   : 4.271             Mean   : 75.80       
##  3rd Qu.: 6.000             3rd Qu.: 85.19       
##  Max.   :10.000             Max.   :100.00

Hasil:

Seluruh variabel numerik berada dalam rentang yang ditentukan. Tidak ditemukan nilai yang perlu dihapus.

————————————————————

3.6 Validasi Variabel Kategorik

————————————————————

table(data_clean$Major_Category)
## 
##       Arts   Business Humanities    Medical       STEM 
##       5932      12536       9993       6474      15059
table(data_clean$Primary_Use_Case)
## 
##      Copywriting/Drafting Debugging/Troubleshooting  Direct_Answer_Generation 
##                     12011                     12295                      6339 
##                  Ideation       Summarizing_Reading 
##                     10719                      8630
table(data_clean$Prompt_Engineering_Skill)
## 
##     Advanced     Beginner Intermediate 
##        13807        18491        17696
table(data_clean$Institutional_Policy)
## 
##   Actively_Encouraged Allowed_With_Citation            Strict_Ban 
##                 14985                 25222                  9787
table(data_clean$Burnout_Risk_Level)
## 
##   High    Low Medium 
##  12484  16369  21141

Hasil:

Seluruh kategori pada variabel kategorik sesuai dengan kategori yang ditentukan dan tidak ditemukan nilai tidak valid.

————————————————————

3.7 Penyesuaian Tipe Data

————————————————————

data_clean$Student_ID <- as.character(data_clean$Student_ID)
data_clean$Major_Category <- as.factor(data_clean$Major_Category)
data_clean$Year_of_Study <- as.factor(data_clean$Year_of_Study)
data_clean$Primary_Use_Case <- as.factor(data_clean$Primary_Use_Case)
data_clean$Prompt_Engineering_Skill <- as.factor(data_clean$Prompt_Engineering_Skill)
data_clean$Paid_Subscription <- as.factor(data_clean$Paid_Subscription)
data_clean$Institutional_Policy <- as.factor(data_clean$Institutional_Policy)
data_clean$Burnout_Risk_Level <- as.factor(data_clean$Burnout_Risk_Level)
# Mengecek kembali struktur data
str(data_clean)
## tibble [49,994 × 16] (S3: tbl_df/tbl/data.frame)
##  $ Student_ID                : chr [1:49994] "100001" "100002" "100003" "100004" ...
##  $ Major_Category            : Factor w/ 5 levels "Arts","Business",..: 3 4 2 2 5 5 5 1 2 2 ...
##  $ Year_of_Study             : Factor w/ 5 levels "Freshman","Graduate",..: 4 3 1 4 5 3 1 3 5 5 ...
##  $ Pre_Semester_GPA          : num [1:49994] 2.42 3.82 3.4 3.79 3.63 ...
##  $ Weekly_GenAI_Hours        : num [1:49994] 23.31 1.12 21.26 1.82 9.29 ...
##  $ Primary_Use_Case          : Factor w/ 5 levels "Copywriting/Drafting",..: 1 4 5 1 2 2 5 1 2 2 ...
##  $ Prompt_Engineering_Skill  : Factor w/ 3 levels "Advanced","Beginner",..: 2 1 2 3 1 2 1 3 2 3 ...
##  $ Tool_Diversity            : num [1:49994] 1 5 2 4 4 1 5 3 2 2 ...
##  $ Paid_Subscription         : Factor w/ 2 levels "FALSE","TRUE": 2 1 1 1 1 1 2 1 2 2 ...
##  $ Traditional_Study_Hours   : num [1:49994] 8.13 16.65 10.35 15.23 12.55 ...
##  $ Perceived_AI_Dependency   : num [1:49994] 5 3 5 2 4 4 8 2 1 3 ...
##  $ Institutional_Policy      : Factor w/ 3 levels "Actively_Encouraged",..: 2 2 3 2 2 2 2 1 3 3 ...
##  $ Anxiety_Level_During_Exams: num [1:49994] 6 9 9 2 4 5 7 1 5 8 ...
##  $ Post_Semester_GPA         : num [1:49994] 2.39 3.7 3.5 4 3.8 ...
##  $ Skill_Retention_Score     : num [1:49994] 86.4 69.4 73.9 63.6 100 ...
##  $ Burnout_Risk_Level        : Factor w/ 3 levels "High","Low","Medium": 1 2 3 3 3 1 3 3 3 1 ...

Hasil:

Tipe data telah disesuaikan untuk kebutuhan analisis. Dataset bersih terdiri dari 49.996 observasi dan 16 variabel.

————————————————————

3.8 Pemeriksaan Akhir Dataset

————————————————————

# Mengecek missing value
colSums(is.na(data_clean))
##                 Student_ID             Major_Category 
##                          0                          0 
##              Year_of_Study           Pre_Semester_GPA 
##                          0                          0 
##         Weekly_GenAI_Hours           Primary_Use_Case 
##                          0                          0 
##   Prompt_Engineering_Skill             Tool_Diversity 
##                          0                          0 
##          Paid_Subscription    Traditional_Study_Hours 
##                          0                          0 
##    Perceived_AI_Dependency       Institutional_Policy 
##                          0                          0 
## Anxiety_Level_During_Exams          Post_Semester_GPA 
##                          0                          0 
##      Skill_Retention_Score         Burnout_Risk_Level 
##                          0                          0
# Mengecek duplikat
sum(duplicated(data_clean))
## [1] 0
# Melihat ukuran dataset
dim(data_clean)
## [1] 49994    16

Hasil:

Dataset telah melalui proses validasi dan pembersihan. Tidak terdapat missing value maupun data duplikat. Dataset siap digunakan untuk tahap analisis berikutnya.

============================================================

4. EXPLORATORY DATA ANALYSIS

============================================================

EDA dilakukan untuk melihat pola, distribusi, dan hubungan antarvariabel yang berkaitan dengan penggunaan AI, performa akademik, serta kesejahteraan mahasiswa.

library(tidyr)

gpa_long <- data_clean %>%
  select(Pre_Semester_GPA, Post_Semester_GPA) %>%
  pivot_longer(
    cols = everything(),
    names_to = "Semester",
    values_to = "GPA"
  )

ggplot(gpa_long, aes(x = Semester, y = GPA)) +
  geom_boxplot() +
  labs(
    title = "Perbandingan GPA Sebelum dan Sesudah Semester",
    x = "",
    y = "GPA"
  ) +
  theme_minimal()

## ———————————————————— ## 4.2 Hubungan Penggunaan AI dengan Post-Semester GPA ## ————————————————————

ggplot(
  data_clean,
  aes(x = Weekly_GenAI_Hours, y = Post_Semester_GPA)
) +
  geom_point(alpha = 0.2) +
  geom_smooth(method = "lm", se = TRUE) +
  labs(
    title = "Hubungan Intensitas Penggunaan AI dengan Post-Semester GPA",
    x = "Jam Penggunaan GenAI per Minggu",
    y = "Post-Semester GPA"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

# Hasil: Terdapat kecenderungan hubungan negatif yang lemah antara intensitas penggunaan GenAI dan Post-Semester GPA.Hubungan ini belum menunjukkan bahwa penggunaan AI secara langsung menyebabkan penurunan GPA.

————————————————————

4.3 Hubungan Intensitas Penggunaan AI dengan Skill Retention

##————————————————————

ggplot(
  data_clean,
  aes(
    x = Weekly_GenAI_Hours,
    y = Skill_Retention_Score
  )
) +
  geom_point(alpha = 0.2) +
  geom_smooth(
    method = "lm",
    se = TRUE
  ) +
  labs(
    title = "Hubungan Intensitas Penggunaan AI dengan Skill Retention",
    x = "Jam Penggunaan GenAI per Minggu",
    y = "Skill Retention Score"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

## Hasil: Terdapat kecenderungan negatif antara intensitas penggunaan GenAI dengan Skill Retention Score. Semakin tinggi jam penggunaan GenAI, skor retensi pengetahuan cenderung menurun.Namun, sebaran data cukup luas sehingga hubungan ini tidak dapat diartikan sebagai hubungan sebab-akibat.

————————————————————

4.4 Burnout Risk berdasarkan Kebijakan Institusi

————————————————————

ggplot(data_clean, aes(x = Institutional_Policy, fill = Burnout_Risk_Level)) +
  geom_bar(position = "fill") +
  labs(
    title = "Distribusi Risiko Burnout berdasarkan Kebijakan Institusi",
    x = "Kebijakan Institusi",
    y = "Proporsi Mahasiswa",
    fill = "Risiko Burnout"
  ) +
  theme_minimal()

## Hasil: Kebijakan Strict_Ban menunjukkan proporsi High Burnout yang lebih tinggi dibandingkan kebijakan lainnya, sedangkan proporsi Low Burnout lebih rendah. Pola ini menunjukkan adanya perbedaan profil risiko burnout berdasarkan kebijakan institusi.

————————————————————

4.5 Pola Penggunaan AI berdasarkan Jenjang Studi

————————————————————

ggplot(data_clean, aes(x = Year_of_Study, y = Weekly_GenAI_Hours)) +
  geom_boxplot() +
  labs(
    title = "Distribusi Intensitas Penggunaan AI berdasarkan Jenjang Studi",
    x = "Jenjang Studi",
    y = "Jam Penggunaan GenAI per Minggu"
  ) +
  theme_minimal()

## Hasil: Intensitas penggunaan AI antarjenjang studi memiliki pola yang relatif mirip. Median penggunaan berada di sekitar 6 jam per minggu, dengan variasi penggunaan yang cukup lebar pada setiap jenjang.

————————————————————

4.6 Korelasi antar Variabel Numerik

————————————————————

library(corrplot)

data_numeric <- data_clean %>%
  select(
    Pre_Semester_GPA,
    Weekly_GenAI_Hours,
    Tool_Diversity,
    Traditional_Study_Hours,
    Perceived_AI_Dependency,
    Anxiety_Level_During_Exams,
    Post_Semester_GPA,
    Skill_Retention_Score)
cor_matrix <- cor(data_numeric, use = "complete.obs")
corrplot(
  cor_matrix,
  method = "color",
  type = "upper",
  tl.col = "black",
  tl.srt = 45)

## Hasil: Heatmap menunjukkan adanya hubungan antar beberapa variabel numerik. Pre-Semester GPA memiliki hubungan positif yang kuat dengan Post-Semester GPA. Intensitas penggunaan AI cenderung berkaitan positif dengan ketergantungan AI dan negatif dengan retensi pengetahuan.

————————————————————

4.7 Segmentasi Intensitas Penggunaan AI

————————————————————

data_clean <- data_clean %>%
  mutate(
    AI_Usage_Segment = case_when(
      Weekly_GenAI_Hours <= 5 ~ "Light User",
      Weekly_GenAI_Hours <= 15 ~ "Moderate User",
      Weekly_GenAI_Hours > 15 ~ "Heavy User"
    )
  )# Melihat jumlah mahasiswa setiap segmen
table(data_clean$AI_Usage_Segment)
## 
##    Heavy User    Light User Moderate User 
##          8533         22591         18870
ggplot(data_clean, aes(x = AI_Usage_Segment)) +
  geom_bar() +
  labs(
    title = "Segmentasi Mahasiswa berdasarkan Intensitas Penggunaan AI",
    x = "Segmen Penggunaan AI",
    y = "Jumlah Mahasiswa"
  ) +
  theme_minimal()

## Hasil: Mayoritas mahasiswa termasuk dalam kategori Light User, diikuti Moderate User dan Heavy User. Segmentasi ini digunakan untuk membandingkan performa akademik, retensi pengetahuan, dan risiko burnout berdasarkan intensitas penggunaan AI.

============================================================

5. Statistical Analysis

============================================================

## Korelasi penggunaan AI dengan Post-Semester GPA
cor.test(
  data_clean$Weekly_GenAI_Hours,
  data_clean$Post_Semester_GPA,
  method = "pearson"
)
## 
##  Pearson's product-moment correlation
## 
## data:  data_clean$Weekly_GenAI_Hours and data_clean$Post_Semester_GPA
## t = -4.1643, df = 49992, p-value = 3.129e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.027382712 -0.009857211
## sample estimates:
##         cor 
## -0.01862139
# Korelasi penggunaan AI dengan Skill Retention
cor.test(
  data_clean$Weekly_GenAI_Hours,
  data_clean$Skill_Retention_Score,
  method = "pearson"
)
## 
##  Pearson's product-moment correlation
## 
## data:  data_clean$Weekly_GenAI_Hours and data_clean$Skill_Retention_Score
## t = -26.588, df = 49992, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1267173 -0.1094302
## sample estimates:
##        cor 
## -0.1180827
# Korelasi ketergantungan AI dengan Skill Retention
cor.test(
  data_clean$Perceived_AI_Dependency,
  data_clean$Skill_Retention_Score,
  method = "pearson"
)
## 
##  Pearson's product-moment correlation
## 
## data:  data_clean$Perceived_AI_Dependency and data_clean$Skill_Retention_Score
## t = -18.922, df = 49992, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.09302373 -0.07561681
## sample estimates:
##         cor 
## -0.08432671

Hasil analisis korelasi:

  1. Weekly_GenAI_Hours dengan Post_Semester_GPA: terdapat korelasi negatif yang sangat lemah (r = -0.019; p < 0.001). Artinya, peningkatan penggunaan AI berhubungan dengan sedikit penurunan GPA, tetapi hubungan tersebut sangat lemah.

  2. Weekly_GenAI_Hours dengan Skill_Retention_Score: terdapat korelasi negatif lemah (r = -0.118; p < 0.001). Artinya, semakin tinggi penggunaan AI, skor retensi keterampilan cenderung menurun.

  3. Perceived_AI_Dependency dengan Skill_Retention_Score: terdapat korelasi negatif lemah (r = -0.084; p < 0.001). Artinya, semakin tinggi ketergantungan terhadap AI, retensi keterampilan cenderung menurun.

Kesimpulan:

Penggunaan dan ketergantungan AI memiliki hubungan negatif dengan retensi keterampilan. Namun, korelasi tidak menunjukkan hubungan sebab-akibat.

============================================================

6. Student Segmentation

============================================================

segment_summary <- data_clean %>%
  group_by(AI_Usage_Segment) %>%
  summarise(
    Jumlah_Mahasiswa = n(),
    Rata_rata_GPA = mean(Post_Semester_GPA, na.rm = TRUE),
    Rata_rata_Retention = mean(Skill_Retention_Score, na.rm = TRUE),
    Persentase_High_Burnout = mean(Burnout_Risk_Level == "High") * 100
  )

segment_summary
## # A tibble: 3 × 5
##   AI_Usage_Segment Jumlah_Mahasiswa Rata_rata_GPA Rata_rata_Retention
##   <chr>                       <int>         <dbl>               <dbl>
## 1 Heavy User                   8533          3.32                72.7
## 2 Light User                  22591          3.34                76.0
## 3 Moderate User               18870          3.37                77.0
## # ℹ 1 more variable: Persentase_High_Burnout <dbl>
ggplot(
  data_clean,
  aes(x = AI_Usage_Segment, y = Post_Semester_GPA)
) +
  geom_boxplot() +
  labs(
    title = "Post-Semester GPA berdasarkan Segmen Penggunaan AI",
    x = "Segmen Penggunaan AI",
    y = "Post-Semester GPA"
  ) +
  theme_minimal()

ggplot(
  data_clean,
  aes(x = AI_Usage_Segment, fill = Burnout_Risk_Level)
) +
  geom_bar(position = "fill") +
  labs(
    title = "Risiko Burnout berdasarkan Segmen Penggunaan AI",
    x = "Segmen Penggunaan AI",
    y = "Proporsi Mahasiswa",
    fill = "Burnout Risk"
  ) +
  theme_minimal()

## Hasil segmentasi: - Heavy User memiliki distribusi High Burnout paling tinggi dibandingkan Light User dan Moderate User. - Light User memiliki proporsi High Burnout paling rendah. - Distribusi Post-Semester GPA antar segmen relatif mirip, sehingga perbedaan intensitas penggunaan AI tidak menunjukkan perbedaan GPA yang besar.

————————————————————

7. Data-Driven Insights

————————————————————

##Temuan: - Penggunaan AI berkorelasi negatif dengan GPA dan Skill Retention. - Ketergantungan AI berkorelasi negatif dengan Skill Retention. - Heavy User memiliki risiko High Burnout paling tinggi. - Perbedaan GPA antar segmen penggunaan AI relatif kecil.

Kesimpulan:

Penggunaan AI yang tinggi lebih terlihat berkaitan dengan risiko burnout dan penurunan retensi keterampilan dibandingkan dengan perbedaan GPA.Hasil ini dapat menjadi dasar untuk mendorong penggunaan AI yang lebih terkontrol dan mendukung kebiasaan belajar yang tetap mempertahankan keterampilan mahasiswa.