Data ini tentang prestasi siswa dalam pendidikan menengah atas (SMA) sekolah Gabriel Pereira dan Mousinho da Silveira di Portugis. Atribut data yang digunakan adalah nilai siswa, fitur terkait berupa demografis, sosial dan sekolah. Data ini dikumpulkan dengan menggunakan laporan sekolah dan kuesioner. Data yang disediakan mengenai kinerja dalam mata pelajaran Matematika. Data dimodelkan dengan regresi linear berganda dengan tujuan untuk memprediksi nilai siswa di masa yang akan datang.
Data diambil dari https://www.kaggle.com/dipam7/student-grade-prediction
Berikut ini beberapa packages di r yang digunakan :
library(devtools)
#devtools::install_github('EdwinTh/paletti')
library(paletti)
library(GGally)
library(ggplot2)
library(plotly)
library(gridExtra)
library(grid)
library(knitr)
library(kableExtra)
library(cowplot)
library(formattable)
library(e1071)
library(tidyverse)
library(ggplot2)
library(gridExtra)
library(RColorBrewer)
library(scales)
options(warn=-1)
library(rpart)
library(rpart.plot)
library(party)
library(dplyr)
library(caret)
library(ggcorrplot)
library(ggplot2)Data ini terdiri dari 395 data dengan 33 variabel
## school sex age address famsize Pstatus Medu Fedu Mjob Fjob reason
## 1 GP F 18 U GT3 A 4 4 at_home teacher course
## 2 GP F 17 U GT3 T 1 1 at_home other course
## 3 GP F 15 U LE3 T 1 1 at_home other other
## 4 GP F 15 U GT3 T 4 2 health services home
## 5 GP F 16 U GT3 T 3 3 other other home
## 6 GP M 16 U LE3 T 4 3 services other reputation
## guardian traveltime studytime failures schoolsup famsup paid activities
## 1 mother 2 2 0 yes no no no
## 2 father 1 2 0 no yes no no
## 3 mother 1 2 3 yes no yes no
## 4 mother 1 3 0 no yes yes yes
## 5 father 1 2 0 no yes yes no
## 6 mother 1 2 0 no yes yes yes
## nursery higher internet romantic famrel freetime goout Dalc Walc health
## 1 yes yes no no 4 3 4 1 1 3
## 2 no yes yes no 5 3 3 1 1 3
## 3 yes yes yes no 4 3 2 2 3 3
## 4 yes yes yes yes 3 2 2 1 1 5
## 5 yes yes no no 4 3 2 1 2 5
## 6 yes yes yes no 5 4 2 1 2 5
## absences G1 G2 G3
## 1 6 5 6 6
## 2 4 5 5 6
## 3 10 7 8 10
## 4 2 15 14 15
## 5 4 6 10 10
## 6 10 15 15 15
## total.data total.variabel
## 1 395 33
Berikut ini deskripsi masing-masing variabel dari dataset ini:
\(sex\) : Jenis kelamin pelajar (binary: female or male)
\(age\) : Umur pelajar (numeric: from 15 to 22)
\(school\) : Sekolah (binary: Gabriel Pereira or Mousinho da Silveira)
\(address\) : Alamat rumah pelajar (binary: urban or rural)
\(Pstatus\) : Tempat tinggal keluarga (binary: living together or apart)
\(Medu\) : Pendidikan Ibu (numeric: from 0 to 4)
\(Mjob\) : Pekerjaan Ibu
\(Fedu\) : Pendidikan Ayah (numeric: from 0 to 4)
\(Fjob\) : Pekerjaan Ayah
\(guardian\) : Wali murid (nominal: mother, father or other)
\(famsize\) : Banyak anggota keluarga (binary: ≤ 3 or > 3)
\(famrel\) : Hubungan siswa dengan keluarga (numeric: from 1 – very bad to 5 – excellent)
\(reason\) : Alasan memilih sekolah (nominal: close to home, school reputation, course preference or other)
\(traveltime\) : Waktu perjalanan ke sekolah (numeric: 1 – < 15 min., 2 – 15 to 30 min., 3 – 30 min. to 1 hour or 4 – > 1 hour)
\(studytime\) : Waktu belajar mingguan (numeric: 1 – < 2 hours, 2 – 2 to 5 hours, 3 – 5 to 10 hours or 4 – > 10 hours)
\(failures\) : Jumlah kegagalan kelas sebelumnya (numeric: n if 1 ≤ n < 3, else 4)
\(schoolsup\) : Dukungan sekolah terhadap extra pendidikan (binary: yes or no)
\(famsup\) : Dukungan keluarga terhadap extra pendidikan (binary: yes or no)
\(activities\) : Aktifitas ekstrakulikuler (binary: yes or no)
\(paidclass\) : Kelas berbayar tambahan (binary: yes or no)
\(internet\) : Akses internet di rumah (binary: yes or no)
\(nursery\) : Bersekolah di sekolah pembibitan (binary: yes or no)
\(higher\) : Ingin mengambil pendidikan tinggi (binary: yes or no)
\(romantic\) : Dengan hubungan yang baik (binary: yes or no)
\(freetime\) : Waktu bebas setelah sekolah (numeric: from 1 – very low to 5 – very high)
\(goout\) : Pergi bermain bersama teman (numeric: from 1 – very low to 5 – very high)
\(Walc\) : Konsumsi alkohol di akhir pekan (numeric: from 1 – very low to 5 – very high)
\(Dalc\) : Konsumsi alkohol di hari kerja (numeric: from 1 – very low to 5 – very high)
\(health\) : Status kesehatan saat ini (numeric: from 1 – very bad to 5 – very good)
\(absences\) : Jumlah absen di sekolah (numeric: from 0 to 93)
\(G1\) : Nilai periode pertama (numeric: from 0 to 20)
\(G2\) : Nilai periode kedua (numeric: from 0 to 20)
\(G3\) : Nilai akhir (numeric: from 0 to 20)
## Rows: 395
## Columns: 33
## $ school <chr> "GP", "GP", "GP", "GP", "GP", "GP", "GP", "GP", "GP", "G...
## $ sex <chr> "F", "F", "F", "F", "F", "M", "M", "F", "M", "M", "F", "...
## $ age <int> 18, 17, 15, 15, 16, 16, 16, 17, 15, 15, 15, 15, 15, 15, ...
## $ address <chr> "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "...
## $ famsize <chr> "GT3", "GT3", "LE3", "GT3", "GT3", "LE3", "LE3", "GT3", ...
## $ Pstatus <chr> "A", "T", "T", "T", "T", "T", "T", "A", "A", "T", "T", "...
## $ Medu <int> 4, 1, 1, 4, 3, 4, 2, 4, 3, 3, 4, 2, 4, 4, 2, 4, 4, 3, 3,...
## $ Fedu <int> 4, 1, 1, 2, 3, 3, 2, 4, 2, 4, 4, 1, 4, 3, 2, 4, 4, 3, 2,...
## $ Mjob <chr> "at_home", "at_home", "at_home", "health", "other", "ser...
## $ Fjob <chr> "teacher", "other", "other", "services", "other", "other...
## $ reason <chr> "course", "course", "other", "home", "home", "reputation...
## $ guardian <chr> "mother", "father", "mother", "mother", "father", "mothe...
## $ traveltime <int> 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 2, 1, 1, 1, 3, 1,...
## $ studytime <int> 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 2, 3, 1, 3, 2, 1,...
## $ failures <int> 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,...
## $ schoolsup <chr> "yes", "no", "yes", "no", "no", "no", "no", "yes", "no",...
## $ famsup <chr> "no", "yes", "no", "yes", "yes", "yes", "no", "yes", "ye...
## $ paid <chr> "no", "no", "yes", "yes", "yes", "yes", "no", "no", "yes...
## $ activities <chr> "no", "no", "no", "yes", "no", "yes", "no", "no", "no", ...
## $ nursery <chr> "yes", "no", "yes", "yes", "yes", "yes", "yes", "yes", "...
## $ higher <chr> "yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes", ...
## $ internet <chr> "no", "yes", "yes", "yes", "no", "yes", "yes", "no", "ye...
## $ romantic <chr> "no", "no", "no", "yes", "no", "no", "no", "no", "no", "...
## $ famrel <int> 4, 5, 4, 3, 4, 5, 4, 4, 4, 5, 3, 5, 4, 5, 4, 4, 3, 5, 5,...
## $ freetime <int> 3, 3, 3, 2, 3, 4, 4, 1, 2, 5, 3, 2, 3, 4, 5, 4, 2, 3, 5,...
## $ goout <int> 4, 3, 2, 2, 2, 2, 4, 4, 2, 1, 3, 2, 3, 3, 2, 4, 3, 2, 5,...
## $ Dalc <int> 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,...
## $ Walc <int> 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 1, 4,...
## $ health <int> 3, 3, 3, 5, 5, 5, 3, 1, 1, 5, 2, 4, 5, 3, 3, 2, 2, 4, 5,...
## $ absences <int> 6, 4, 10, 2, 4, 10, 0, 6, 0, 0, 0, 4, 2, 2, 0, 4, 6, 4, ...
## $ G1 <int> 5, 5, 7, 15, 6, 15, 12, 6, 16, 14, 10, 10, 14, 10, 14, 1...
## $ G2 <int> 6, 5, 8, 14, 10, 15, 12, 5, 18, 15, 8, 12, 14, 10, 16, 1...
## $ G3 <int> 6, 6, 10, 15, 10, 15, 11, 6, 19, 15, 9, 12, 14, 11, 16, ...
## school sex age address famsize Pstatus Medu
## 0 0 0 0 0 0 0
## Fedu Mjob Fjob reason guardian traveltime studytime
## 0 0 0 0 0 0 0
## failures schoolsup famsup paid activities nursery higher
## 0 0 0 0 0 0 0
## internet romantic famrel freetime goout Dalc Walc
## 0 0 0 0 0 0 0
## health absences G1 G2 G3
## 0 0 0 0 0
Tidak terdapat missing value pada dataset ini.
ggcorr(student,label = T, size=2, label_size = 3, hjust=0.95)+
labs(
title="Matriks Korelasi Data set"
)+
theme_minimal()+
theme(
plot.title = element_text(hjust = 0.5),
axis.title=element_text(size=8,face="bold"),
axis.text.y=element_blank()) Berdasarkan matriks korelasi dari data diatas, setiap variabel mempunyai pengaruh terhadap Nilai akhir(G3), variabel yang memiliki korelasi palinng tinggi yaitu Medu (pendidikan ibu),Dalc (konsumsi alkohol di hari kerja), G1 (nilai periode pertama), dan G2 (nilai periode kedua).
##
## 15 16 17 18 19 20 21 22
## 82 104 98 82 24 3 1 1
## [1] 1.628285
##
## F M
## 208 187
##
## 1 2 3 4 5
## 47 45 91 66 146
age= ggplot(aes(x=age), data=student)+
geom_histogram(binwidth = 0.50, fill='darkred', color='black')+
ggtitle("Age of students")
agehealth= ggplot(data=student,aes(x=health,fill=sex))+geom_histogram(binwidth=0.5, fill='darkgreen')
health Dari histogram pertama, tampak bahwa sebagian besar siswa berusia antara 15 dan 18, karena sebagian besar siswa mulai Sekolah Menengah Atas (SMA) pada usia 15 dan lulus usia 18, mengingat fakta bahwa umumnya, Sekolah Menengah Atas (SMA) di seluruh dunia hanya 3 tahun terakhir. Namun ada 29 siswa yang berusia lebih dari 18 tahun.
Terlihat dari histogram kedua bahwa ada lebih banyak siswa perempuan (208) daripada siswa laki-laki (187).
Berdasarkan histogram ketiga terlihat bahwa mayoritas siswa dalam kondisi sehat.
seperti yang terlihat pada histogram keempat sebagian besar siswa tinggal di daerah perkotaan (urban).
Apakah kemampuan siswa perempuan lebih baik dari siswa laki-laki? saya akan mengeksplorasi perbedaan jenis kelamin di kelas sehubungan dengan G1 (peringkat periode pertama).
Langkah-langkah yang akan dilakukan antara lain :
periksa jumlah siswa perempuan dan laki-laki di sekolah.
Periksa kinerja di kelas berdasarkan jenis kelamin dan usia dengan menjawab pertanyaan-pertanyaan berikut:
Siapa yang lebih baik di sekolah? Apakah anak perempuan berkinerja lebih baik atau apakah anak laki-laki mendapatkan hasil yang lebih baik daripada anak perempuan?
Apakah kinerja siswa menjadi lebih baik seiring bertambahnya usia?
## [1] 11.01705
Seperti yang ditunjukkan dengan jelas pada grafik di atas, sebagian besar siswa yang berumur lebih dari 18 adalah siswa laki-laki dan tidak ada siswa perempuan yang berumur lebih dari 20 tahun.
G1=ggplot(data=student,aes(x=age, y=G1, col=sex, shape=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)
G1## `geom_smooth()` using formula 'y ~ x'
kinerja anak perempuan menjadi lebih baik seiring bertambahnya usia, namun, penurunan kinerja anak laki-laki dapat dideteksi dalam grafik di atas. Meta-analisis yang diterbitkan oleh American Psychological Association memeriksa perbedaan jenis sekolah di 300 negara dan selama hampir seratus tahun. Dan ternyata anak perempuan telah mendapatkan nilai yang lebih baik daripada anak laki-laki selama beberapa dekade.
Mengapa kinerja siswa laki-laki menurun seiring bertambahnya usia?
Dalam bagian ini, saya akan menentukan berbagai faktor yang mempengaruhi kinerja siswa dengan menjawab pertanyaan-pertanyaan berikut:
Apakah kehadiran penting? Apakah kelas yang kosong berdampak negatif pada kinerja akademik siswa?
Apakah waktu perjalanan berdampak pada kinerja siswa? Apakah siswa yang tinggal di dekat sekolah memiliki hasil yang lebih baik daripada mereka yang tinggal jauh dari sekolah?
absences= ggplot(data=student,aes(x=absences, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)
absences## `geom_smooth()` using formula 'y ~ x'
##
## 1 2 3 4
## 257 107 23 8
travel=ggplot(data=student,aes(x=traveltime, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)
travel## `geom_smooth()` using formula 'y ~ x'
Dari grafik di atas, dapat terlihat bagaimana ketidakhadiran mempengaruhi kinerja anak laki-laki secara negatif, namun kelas yang hilang tidak memiliki dampak negatif pada prestasi anak perempuan di kelas.
Seperti yang ditunjukkan di atas, dampak negatif dari waktu perjalanan dapat mempengaruhi kinerja siswa laki-laki, semakin jauh jarak rumah siswa laki-laki dengan sekolah, semakin sedikit hasil yang dia dapatkan.
Dari hasil yang di dapat disimpulkan bahwa waktu perjalanan dan kehadiran merupakan faktor utama yang mempengaruhi nilai siswa laki-laki. Namun, selain waktu perjalanan apa saja faktor lain yang be mempengaruhi kinerja siswa?
fakta yang diketahui bahwa perilaku pengasuhan dan dukungan pendidikan dari orang tua untuk anak-anak dapat menumbuhkan kebiasaan belajar anak-anak dan mempengaruhi kinerja akademik. Maka:
Apakah tingkat pendidikan orang tua dan pekerjaan mempengaruhi prestasi anak di sekolah?
Bagaimana ukuran keluarga berkontribusi pada kinerja akademik siswa?
Apakah ada pengaruh antara keberadaan keluarga dengan kinerja siswa?
Bagaimana hubungan keluarga mempengaruhi kinerja akademik mahasiswa?
Bagaimana konsumsi alkohol di hari kerja mempengaruhi prestasi siswa?
Apakah tingkat pendidikan orang tua dan pekerjaan mempengaruhi prestasi anak di sekolah?
## `geom_smooth()` using formula 'y ~ x'
## `geom_smooth()` using formula 'y ~ x'
my_graph <- ggplot(student, aes(x = Fedu, y = Medu)) +
geom_point(aes(color = G1)) +
stat_smooth(method = "lm",
col = "#C42126",
se = FALSE,
size = 1)
my_graph## `geom_smooth()` using formula 'y ~ x'
Dari grafik di atas, kita tidak dapat melihat perbedaan yang jelas dalam kinerja siswa sesuai dengan pekerjaan orang tua.
Seperti yang diharapkan, semakin tingkat pendidikan orang tua mempengaruhi skor anak di sekolah. siswa yang orang tuanya memiliki tingkat pendidikan yang lebih tinggi menerapkan disiplin dalam belajar, keyakinan kemampuan yang lebih positif, orientasi kerja yang lebih kuat, dan mereka dapat menggunakan strategi pembelajaran yang lebih efektif daripada anak-anak dari orang tua dengan tingkat pendidikan yang lebih rendah.
Selanjutnya bagaimana ukuran keluarga berkontribusi pada kinerja akademik siswa?
##
## GT3 LE3
## 281 114
Seperti yang ditunjukkan di atas, ada lebih banyak siswa dengan jumlah keluarga lebih besar dari 3 dibandingkan dengan siswa dengan jumlah keluarga kurang dari 3.
ggplot(data=student,aes(x=famsize, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)## `geom_smooth()` using formula 'y ~ x'
ggplot(data=student,aes(x=famsize, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex) -> g1Menurut banyak artikel, jumlah anggota keluarga berkontribusi pada kegagalan atau keberhasilan seorang siswa di sekolah, dalam arti bahwa ketika keluarga besar, tidak akan ada konsentrasi yang memadai pada anak oleh orang tua mereka berdasarkan kinerja akademik anak. Namun, menurut grafik di atas, ada sedikit peningkatan dalam kinerja anak perempuan.
Apakah ada pengaruh antara keberadaan keluarga dengan kinerja siswa?
##
## A T
## 41 354
ggplot(data=student,aes(x=Pstatus, y=G1, fill=sex))+geom_boxplot()-> obj1
obj1+labs(title="G1 with respect to Pstatus", x="G1", fill="sex")obj1+labs(title="G1 with respect to Pstatus", x="G1", fill="sex")->obj2
obj2+theme(panel.background = element_rect(fill="grey"))-> obj3
obj3+theme(plot.title= element_text(hjust=0.5,face="bold", colour="cadetblue"))Melihat boxplot di atas, kita dapat menyimpulkan bahwa median Siswa perempuan G1 berada di sekitar 10 dan untuk anak laki-laki sekitar 12-13 dan jelas bagaimana anak laki-laki dan perempuan yang orang tuanya T ( Bersama) skor lebih tinggi daripada rekan-rekan mereka yang tidak bersama orang tua.
Bagaimana hubungan keluarga mempengaruhi kinerja akademik siswa?
ggplot(data=student,aes(x=famrel, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex)## `geom_smooth()` using formula 'y ~ x'
ggplot(data=student,aes(x=famrel, y=G1, col=sex))+geom_point()+geom_smooth(method="lm",se=F)+facet_grid(~sex) -> g1Tidak ada keraguan bahwa siswa yang memiliki komunikasi yang baik dan hubungan yang baik dengan keluarga memiliki kinerja yang lebih baik di sekolah, dan bahwa apa yang dijelaskan grafik di atas, prestasi siswa meningkat dengan hubungan keluarga yang baik.
Bagaimana konsumsi alkohol di hari kerja mempengaruhi prestasi siswa?
my_graph <- ggplot(student, aes(x = Dalc, y = G1)) +
geom_point(aes(color = sex)) +
stat_smooth(method = "lm",
col = "#C42126",
se = FALSE,
size = 1)
my_graph## `geom_smooth()` using formula 'y ~ x'
Dari grafik di atas, kinerja Siswa menurun dengan bertambahnya konsumsi alkohol. Penyalahgunaan alkohol menyebabkan sering kebingungan dan gangguan memori. Konsumsi alkohol yang berlebihan menyebabkan ketidakmampuan untuk mengingat dengan baik. Dan siswa yang menyalahgunakan alkohol juga cenderung kehilangan konsentrasi di kelas.
#Scatterplot G1 and G3
my_graph +
theme_dark() +
labs(
x = "Dalc",
y = "goout",
color = "G3",
title = "G3 with respect to goout and Dalc",
subtitle = " goout and Dalc",
caption = "Dalc and goout")## `geom_smooth()` using formula 'y ~ x'
Dari scatterplot di atas, kita dapat melihat G3 (nilai akhir) menurun dengan Goout(Pergi bermain bersama teman) dan (Dalc) Konsumsi alkohol harian.
selanjutnya akan memprediksi Nilai akhir (G3) menggunakan regresi. Ini akan melalui 4 langkah:
Partisi Data
Membentuk Model Regresi
Memprediksi data pengujian
Mengevaluasi model
Kami memulai dengan membagi data kami menjadi data training dan test.
set.seed(1234)
partition = createDataPartition(student[,'G3'], times=1, p=0.70, list=FALSE)
training=student[partition,]
head(training,10)## school sex age address famsize Pstatus Medu Fedu Mjob Fjob
## 2 GP F 17 U GT3 T 1 1 at_home other
## 5 GP F 16 U GT3 T 3 3 other other
## 6 GP M 16 U LE3 T 4 3 services other
## 7 GP M 16 U LE3 T 2 2 other other
## 8 GP F 17 U GT3 A 4 4 other teacher
## 11 GP F 15 U GT3 T 4 4 teacher health
## 12 GP F 15 U GT3 T 2 1 services other
## 15 GP M 15 U GT3 A 2 2 other other
## 16 GP F 16 U GT3 T 4 4 health other
## 17 GP F 16 U GT3 T 4 4 services services
## reason guardian traveltime studytime failures schoolsup famsup paid
## 2 course father 1 2 0 no yes no
## 5 home father 1 2 0 no yes yes
## 6 reputation mother 1 2 0 no yes yes
## 7 home mother 1 2 0 no no no
## 8 home mother 2 2 0 yes yes no
## 11 reputation mother 1 2 0 no yes yes
## 12 reputation father 3 3 0 no yes no
## 15 home other 1 3 0 no yes no
## 16 home mother 1 1 0 no yes no
## 17 reputation mother 1 3 0 no yes yes
## activities nursery higher internet romantic famrel freetime goout Dalc Walc
## 2 no no yes yes no 5 3 3 1 1
## 5 no yes yes no no 4 3 2 1 2
## 6 yes yes yes yes no 5 4 2 1 2
## 7 no yes yes yes no 4 4 4 1 1
## 8 no yes yes no no 4 1 4 1 1
## 11 no yes yes yes no 3 3 3 1 2
## 12 yes yes yes yes no 5 2 2 1 1
## 15 no yes yes yes yes 4 5 2 1 1
## 16 no yes yes yes no 4 4 4 1 2
## 17 yes yes yes yes no 3 2 3 1 2
## health absences G1 G2 G3
## 2 3 4 5 5 6
## 5 5 4 6 10 10
## 6 5 10 15 15 15
## 7 3 0 12 12 11
## 8 1 6 6 5 6
## 11 2 0 10 8 9
## 12 4 4 10 12 12
## 15 3 0 14 16 16
## 16 2 4 14 14 14
## 17 2 6 13 14 14
## [1] 279 33
## [1] 116 33
Saya memiliki 279 data training dan 116 untuk data test.
Saya membentuk model regresi menggunakan data training dengan target untuk memprediksi variabel G3 (nilai akhir) menggunakan variabel independen yang berkorelasi dengan variabel G3.
lin_mod=lm(G3~G1+G2+age+sex+school+famsize+address+Pstatus+Medu+Fedu+traveltime+studytime+famrel+freetime+goout+Dalc+Walc+health+absences ,data=training)
summary(lin_mod)##
## Call:
## lm(formula = G3 ~ G1 + G2 + age + sex + school + famsize + address +
## Pstatus + Medu + Fedu + traveltime + studytime + famrel +
## freetime + goout + Dalc + Walc + health + absences, data = training)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.8652 -0.4058 0.2475 0.9779 3.0232
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.89160 1.96387 0.454 0.6502
## G1 0.12223 0.06662 1.835 0.0677 .
## G2 0.98334 0.06019 16.338 <2e-16 ***
## age -0.21340 0.10214 -2.089 0.0377 *
## sexM 0.08149 0.25221 0.323 0.7469
## schoolMS 0.53430 0.39081 1.367 0.1728
## famsizeLE3 -0.17682 0.25812 -0.685 0.4939
## addressU 0.24214 0.29246 0.828 0.4085
## PstatusT -0.55765 0.40799 -1.367 0.1729
## Medu 0.17905 0.13576 1.319 0.1884
## Fedu -0.13064 0.13541 -0.965 0.3355
## traveltime 0.12612 0.17294 0.729 0.4665
## studytime -0.10045 0.14555 -0.690 0.4907
## famrel 0.21991 0.13209 1.665 0.0972 .
## freetime -0.03474 0.12376 -0.281 0.7792
## goout -0.04547 0.11840 -0.384 0.7013
## Dalc -0.16633 0.16621 -1.001 0.3179
## Walc 0.14975 0.12702 1.179 0.2395
## health 0.13426 0.08163 1.645 0.1013
## absences 0.03656 0.01684 2.170 0.0309 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.859 on 259 degrees of freedom
## Multiple R-squared: 0.8338, Adjusted R-squared: 0.8216
## F-statistic: 68.37 on 19 and 259 DF, p-value: < 2.2e-16
Model yang dibuat menggunakan multiple predictor sehingga nilai yang baik diinterpretasikan adalah nilai Adjusted R-squared. Dari hasi diatas, model ini memiliki nilai Adjusted R-squared : 0.833 atau 83,3% yang artinya hubungan antara variabel independen dan variabel dependen sangat kuat.
linearity <- data.frame(residual = lin_mod$residuals, fitted = training$G3)
linearity %>%
ggplot(aes(fitted, residual)) +
geom_point() +
geom_smooth(method = lm) +
geom_hline(aes(yintercept = 0)) +
theme_minimal()+
theme(
plot.title = element_text(hjust = 0.5),
axis.title=element_text(size=9,face="bold"),
axis.text.y=element_text(margin = margin(l=5)),
axis.text.x.bottom = element_text(margin = margin(b=5)))## `geom_smooth()` using formula 'y ~ x'
Berdasarkan pengujian Linearity terlihat bahwa model yang dibuat berhasil menangkap variansi data dengan baik, terlihat error atau jarak data dari mean tidak terlalu jauh.
Hipotesis : H0 = Residual berdistribusi normal H1 = Residual tidak berdistribusi normal Kesimpulan : karena nilai p-value : 0,001308 < 0,05 maka keputusannya adalah terima H1 dengan kesimpulann residual dari model tidak berdistribusi normal.
##
## studentized Breusch-Pagan test
##
## data: lin_mod
## BP = 42.971, df = 19, p-value = 0.001308
linearity <- data.frame(residual = lin_mod$residuals, fitted = training$G3)
linearity %>%
ggplot(aes(fitted, residual)) +
geom_point() +
geom_smooth(method = "h") +
geom_hline(aes(yintercept = 0)) +
theme_minimal()+
theme(
plot.title = element_text(hjust = 0.5),
axis.title=element_text(size=9,face="bold"),
axis.text.y=element_text(margin = margin(l=5)),
axis.text.x.bottom = element_text(margin = margin(b=5)))## `geom_smooth()` using formula 'y ~ x'
Hipotesis : H0 = Data Residual Homogen (tidak membentuk sebuah pola) H1 = Data Residual Heteros (membentuk sebuah pola) Kesimpulan : Karena nilai p-value: 0.001308 < 0.05 maka keputusannya adalah terima H1, dengan kesimpulan residual dari model bersifat heteros, dapat dilihat membentuk sebuah pola.
selanjutnya, saya memprediksi data test dengan model linear dari data training.
pred_test <- predict(lin_mod, test)
dt_prediction = (data.frame((pred_test), (test$G3)))
colnames(dt_prediction) <- c("Predicted G3","Real G3")
head(dt_prediction,10)## Predicted G3 Real G3
## 1 5.247709 6
## 3 7.463612 10
## 4 14.482094 15
## 9 18.531185 19
## 10 15.392759 15
## 13 14.643349 14
## 14 10.321083 11
## 23 15.717813 16
## 24 13.303226 12
## 37 16.413416 18
Analisa ini dapat digunakan untuk Membandingkan nilai G3 yang diprediksi dengan nilai G3 nyata, sehingga dapat dilihat seberapa dekat prediksi dengan persentase kesalahan yang sangat kecil.