## Pemanggilan Packages

Menginstal semua library yang dibutuhkan sebelum analisis dimulai. Cukup dijalankan sekali.


``` r
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3

Import Dataset

Membaca file Excel ke dalam R sebagai objek dataframe bernama dataset.

dataset <- read_excel("D:/Documents/student_performance.xlsx")
dataset
## # A tibble: 40 × 5
##    `Hours Studied` `Previous Scores` `Sleep Hours` Sample Question Papers Prac…¹
##              <dbl>             <dbl>         <dbl>                         <dbl>
##  1               7                99             9                             1
##  2               4                82             4                             2
##  3               8                51             7                             2
##  4               5                52             5                             2
##  5               7                75             8                             5
##  6               3                78             9                             6
##  7               7                73             5                             6
##  8               8                45             4                             6
##  9               5                77             8                             2
## 10               4                89             4                             0
## # ℹ 30 more rows
## # ℹ abbreviated name: ¹​`Sample Question Papers Practiced`
## # ℹ 1 more variable: `Performance Index` <dbl>

NOMOR 1 : Eksplorasi Data

Eksplorasi data atau Exploratory Data Analysis (EDA) merupakan proses awal dalam analisis data yang bertujuan untuk memahami karakteristik data sebelum dilakukan pemodelan statistik lebih lanjut. EDA digunakan untuk menemukan pola, mengetahui hubungan antar variabel, mendeteksi data pencilan (outlier), serta memeriksa distribusi data. Menurut John Tukey, eksplorasi data dilakukan untuk membantu peneliti memahami struktur data melalui pendekatan statistik deskriptif dan visualisasi data. Dalam penelitian kuantitatif, eksplorasi data memiliki peran penting karena dapat membantu menentukan metode analisis yang sesuai dan meningkatkan kualitas hasil analisis. Teknik eksplorasi data yang umum digunakan meliputi statistik deskriptif, histogram, boxplot, scatter plot, dan analisis korelasi.

# --- 1a. Ringkasan Statistik Deskriptif ---
 
names(dataset)
## [1] "Hours Studied"                    "Previous Scores"                 
## [3] "Sleep Hours"                      "Sample Question Papers Practiced"
## [5] "Performance Index"
summary(dataset)
##  Hours Studied  Previous Scores  Sleep Hours   Sample Question Papers Practiced
##  Min.   :1.00   Min.   :44.00   Min.   :4.00   Min.   :0.00                    
##  1st Qu.:3.00   1st Qu.:60.50   1st Qu.:4.75   1st Qu.:2.00                    
##  Median :5.00   Median :73.50   Median :7.00   Median :3.00                    
##  Mean   :5.40   Mean   :72.25   Mean   :6.45   Mean   :3.60                    
##  3rd Qu.:7.25   3rd Qu.:83.25   3rd Qu.:8.00   3rd Qu.:5.25                    
##  Max.   :9.00   Max.   :99.00   Max.   :9.00   Max.   :9.00                    
##  Performance Index
##  Min.   :270.0    
##  1st Qu.:427.5    
##  Median :630.0    
##  Mean   :586.0    
##  3rd Qu.:702.5    
##  Max.   :910.0
# --- 1b. Scatter Plot ---
 
# Hours Studied vs Performance Index
plot(dataset$`Hours Studied`,
     dataset$`Performance Index`,
     main = "Hours Studied vs Performance Index",
     xlab = "Hours Studied",
     ylab = "Performance Index",
     pch  = 19)

Scatter plot menunjukkan adanya hubungan positif antara jam belajar dan performance index. Semakin lama waktu belajar, performance index cenderung meningkat, meskipun penyebaran data cukup beragam sehingga hubungan antar variabel tidak terlalu kuat.

plot(dataset$`Previous Scores`,
     dataset$`Performance Index`,
     main = "Previous Scores vs Performance Index",
     xlab = "Previous Scores",
     ylab = "Performance Index",
     pch = 19)

Scatter plot menunjukkan adanya hubungan positif yang cukup kuat antara previous scores dan performance index. Semakin tinggi nilai sebelumnya, maka performance index cenderung semakin tinggi. Titik-titik data juga membentuk pola naik yang relatif jelas, sehingga menunjukkan hubungan linear yang cukup kuat antar variabel.

plot(dataset$`Sleep Hours`,
     dataset$`Performance Index`,
     main = "Sleep Hours vs Performance Index",
     xlab = "Sleep Hours",
     ylab = "Performance Index",
     pch = 19)

Scatter plot menunjukkan bahwa hubungan antara sleep hours dan performance index cenderung lemah. Penyebaran titik cukup acak pada setiap jumlah jam tidur, sehingga jam tidur tidak menunjukkan pola linear yang jelas terhadap performance index. Namun, terdapat beberapa performance index tinggi pada jam tidur 6–9 jam.

plot(dataset$`Sample Question Papers Practiced`,
     dataset$`Performance Index`,
     main = "Question Papers vs Performance Index",
     xlab = "Question Papers Practiced",
     ylab = "Performance Index",
     pch = 19)

Scatter plot menunjukkan bahwa hubungan antara jumlah question papers practiced dan performance index cenderung lemah. Titik-titik data tersebar cukup acak dan tidak membentuk pola linear yang jelas. Meskipun beberapa siswa dengan latihan soal lebih banyak memiliki performance index tinggi, terdapat juga nilai performa rendah pada jumlah latihan yang tinggi.

Nomor 2 : Model Regresi Linier

Model regresi linier merupakan metode statistik yang digunakan untuk mengetahui hubungan antara variabel independen (bebas) dengan variabel dependen (terikat). Regresi linier digunakan untuk melihat pengaruh suatu variabel terhadap variabel lainnya serta membantu dalam proses prediksi berdasarkan data yang tersedia. Dalam analisis regresi linier sederhana, hubungan antar variabel digambarkan dalam bentuk persamaan garis lurus.

model_regresi <- lm(`Performance Index` ~
              `Hours Studied` +
              `Previous Scores` +
              `Sleep Hours` +
              `Sample Question Papers Practiced`,
            data = dataset)

summary(model_regresi)
## 
## Call:
## lm(formula = `Performance Index` ~ `Hours Studied` + `Previous Scores` + 
##     `Sleep Hours` + `Sample Question Papers Practiced`, data = dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.167 -10.165   3.015   8.962  39.906 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                        -352.2339    19.9628 -17.645  < 2e-16 ***
## `Hours Studied`                      30.2616     1.3074  23.147  < 2e-16 ***
## `Previous Scores`                    10.1096     0.1964  51.479  < 2e-16 ***
## `Sleep Hours`                         4.6858     1.7273   2.713  0.01028 *  
## `Sample Question Papers Practiced`    3.9390     1.2691   3.104  0.00377 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 19.43 on 35 degrees of freedom
## Multiple R-squared:  0.9883, Adjusted R-squared:  0.987 
## F-statistic: 742.2 on 4 and 35 DF,  p-value: < 2.2e-16

Model Regresi : \[ Y=-352,23+30,26X1+10,11X2+4,68X3+3,94X4 \] Interpretasi : Konstanta sebesar −352,2339 menunjukkan bahwa jika seluruh variabel independen bernilai 0, maka Performance Index diprediksi sebesar −352,2339. Koefisien Hours Studied sebesar 30,2616 berarti setiap penambahan 1 jam belajar akan meningkatkan Performance Index sebesar 30,2616 poin, dengan variabel lain dianggap tetap. Koefisien Previous Scores sebesar 10,1096 berarti setiap kenaikan 1 poin nilai sebelumnya akan meningkatkan Performance Index sebesar 10,1096 poin. Koefisien Sleep Hours sebesar 4,6858 berarti setiap tambahan 1 jam tidur akan meningkatkan Performance Index sebesar 4,6858 poin. Koefisien Sample Question Papers Practiced sebesar 3,9390 berarti setiap tambahan 1 latihan soal akan meningkatkan Performance Index sebesar 3,9390 poin.

Nomor 3 : Uji Signifikansi Model (ANOVA)

Analysis of Variance (ANOVA) merupakan metode statistik yang digunakan untuk mengetahui apakah terdapat perbedaan rata-rata antar kelompok atau perlakuan. ANOVA digunakan ketika penelitian melibatkan lebih dari dua kelompok sehingga pengujian tidak cukup dilakukan menggunakan uji t. Dalam analisis ANOVA, pengujian dilakukan dengan membandingkan variasi antar kelompok dengan variasi di dalam kelompok melalui nilai F hitung.

model_anova <- aov(`Performance Index` ~
               `Hours Studied` +
               `Previous Scores` +
               `Sleep Hours` +
               `Sample Question Papers Practiced`,
             data = dataset)
summary(model_anova)
##                                    Df  Sum Sq Mean Sq  F value  Pr(>F)    
## `Hours Studied`                     1  101217  101217  268.222 < 2e-16 ***
## `Previous Scores`                   1 1013331 1013331 2685.288 < 2e-16 ***
## `Sleep Hours`                       1    2169    2169    5.748 0.02197 *  
## `Sample Question Papers Practiced`  1    3635    3635    9.633 0.00377 ** 
## Residuals                          35   13208     377                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil uji signifikansi model seluruh variabel independen memiliki nilai p-value<(0,05), sehingga berpengaruh signifikan terhadap Performance Index. Variabel Previous Scores memiliki pengaruh paling besar karena memiliki nilai F terbesar (2685,288). Selain itu, model regresi secara keseluruhan signifikan dan layak digunakan untuk menjelaskan hubungan antara variabel independen dengan Performance Index.

Nomor 4 :Uji Asumsi

Uji asumsi klasik merupakan tahapan penting dalam analisis regresi linear berganda untuk memastikan model regresi memenuhi syarat statistik sehingga hasil analisis dapat digunakan secara valid. Beberapa uji asumsi yang umum digunakan yaitu uji normalitas, uji multikolinearitas, uji heteroskedastisitas, dan uji autokorelasi. Uji normalitas digunakan untuk mengetahui apakah residual berdistribusi normal, uji multikolinearitas untuk melihat hubungan antar variabel independen, uji heteroskedastisitas untuk mengetahui kesamaan varians residual, serta uji autokorelasi untuk melihat hubungan residual antar pengamatan.

Nomor 4a : Uji Linearitas — Ramsey RESET Test

model <- lm (`Performance Index` ~
               `Hours Studied` +
               `Previous Scores` +
               `Sleep Hours` +
               `Sample Question Papers Practiced`, data=dataset)
resettest(model)
## 
##  RESET test
## 
## data:  model
## RESET = 1.0999, df1 = 2, df2 = 33, p-value = 0.3448

p-value(0,3448)>(0,05) sehingga gagal menolak H0​. Artinya, model regresi sudah memenuhi asumsi linearitas dan hubungan antara variabel independen dengan variabel dependen dapat dianggap linear.

Nomor 4b : Uji Normalitas Residual

residual <- residuals(model)
residual
##           1           2           3           4           5           6 
##   3.4425741  25.5805346   3.8734964   3.9204750 -14.9975636  17.0953938 
##           7           8           9          10          11          12 
## -14.6598648  32.8325908 -12.8765434   2.6914233  -8.2691232   5.4910887 
##          13          14          15          16          17          18 
##   6.2482802  -1.1074139  17.9562837 -36.7393830 -11.1010558  -9.1098145 
##          19          20          21          22          23          24 
##  -8.4007898  39.9064049   0.5635794   7.9719175   5.3356239 -14.4050609 
##          25          26          27          28          29          30 
## -45.1673042 -44.9482082  19.5930986   8.9256598   3.3385992   0.5032903 
##          31          32          33          34          35          36 
##  -9.8531420   9.4694849   9.6893683 -17.2445743   9.0711903  -6.8470521 
##          37          38          39          40 
##   5.4185528 -13.3751533  33.0014304  -2.8182941
# Jarque Bera
jarque.bera.test(residual)
## 
##  Jarque Bera Test
## 
## data:  residual
## X-squared = 1.5622, df = 2, p-value = 0.4579
# Shapiro Wilk
shapiro.test(residual)
## 
##  Shapiro-Wilk normality test
## 
## data:  residual
## W = 0.95434, p-value = 0.107
# Kolmogorov-Smirnov
ks.test(residual, "pnorm", mean(residual), sd(residual))
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  residual
## D = 0.12426, p-value = 0.5267
## alternative hypothesis: two-sided

Berdasarkan ketiga uji normalitas tersebut, seluruh p-value>(0,05) sehingga gagal menolak H0. Artinya dapat disimpulkan bahwa residual memenuhi asumsi normalitas atau berdistribusi normal.

Nomor 4c : Uji Homoskedastisitas

# Breusch Pagan
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 4.325, df = 4, p-value = 0.3638

p-value(0,33638)>(0,05) sehingga gagal menolak H0. Artinya dapat disimpulkan bahwa model memenuhi asumsi homoskedastisitas.

# Levene Test
library(car)
ncvTest(model)
## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 4.705841, Df = 1, p = 0.03006

p-value(0,03006)<(0,05) sehingga menolak H0. Artinya dapat disimpulkan bahwa terdapat heteroskedastisitas dalam model. Berdasarkan uji Breusch-Pagan tidak terdeteksi heteroskedastisitas. Namun pada uji Non-Constant Variance Test mengindikasikan adanya heteroskedastisitas. Oleh karena itu, model diduga masih memiliki gejala heteroskedastisitas ringan.

# Residual Plot
plot(model$fitted.values, residual)
abline(h = 0)

Berdasarkan grafik scatterplot antara nilai fitted values dan residual, terlihat bahwa titik-titik residual menyebar secara acak di sekitar garis horizontal nol serta tidak membentuk pola tertentu, seperti pola mengerucut atau melebar. Hal tersebut menunjukkan bahwa varians residual cenderung konstan pada setiap nilai prediksi, sehingga dapat disimpulkan bahwa model memenuhi asumsi homoskedastisitas atau tidak terjadi heteroskedastisitas.

Nomor 4d : Uji Non Autokorelasi

#Durbin Watson Test
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.121, p-value = 0.6543
## alternative hypothesis: true autocorrelation is greater than 0
#Breusch Godfrey Test
bgtest(model)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model
## LM test = 0.16825, df = 1, p-value = 0.6817
bgtest(model, order = 2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  model
## LM test = 0.37988, df = 2, p-value = 0.827
#Ljung Box
Box.test(residuals(model), lag = 10, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  residuals(model)
## X-squared = 7.9274, df = 10, p-value = 0.6359

Berdasarkan ketiga uji non autokorelasi tersebut, seluruh p-value>(0,05) sehingga gagal menolak H0. Artinya dapat disimpulkan bahwa tidak terdapat autokorelasi pada residual model. Dengan demikian, asumsi non autokorelasi telah terpenuhi.

Nomor 4e : Uji Non Multikolinieritas

vif(model)
##                    `Hours Studied`                  `Previous Scores` 
##                           1.076189                           1.027456 
##                      `Sleep Hours` `Sample Question Papers Practiced` 
##                           1.058646                           1.022652

Seluruh nilai VIF < 10 (bahkan mendekati 1), maka dapat disimpulkan bahwa tidak terjadi multikolinieritas antar variabel independen. Dengan demikian, asumsi non multikolinieritas pada model telah terpenuhi.

Nomor 5 : Kesimpulan

Berdasarkan hasil analisis regresi linear berganda yang telah dilakukan, diperoleh kesimpulan bahwa model regresi yang digunakan sudah baik dan layak digunakan. Hal ini ditunjukkan oleh seluruh uji asumsi regresi yang telah terpenuhi, seperti asumsi linearitas, sehingga model dapat menggambarkan hubungan antar variabel dengan baik.

Hasil uji signifikansi juga menunjukkan bahwa seluruh variabel independen, yaitu Hours Studied, Previous Scores, Sleep Hours, dan Sample Question Papers Practiced, berpengaruh signifikan terhadap Performance Index. Dengan demikian, dapat disimpulkan bahwa semakin lama waktu belajar, semakin tinggi nilai sebelumnya, semakin baik jam tidur, dan semakin banyak latihan soal yang dikerjakan, maka Performance Index siswa cenderung meningkat.