datasiswa = read.csv("C:/Users/mhdha/Downloads/StudentPerformanceFactors.csv")
head(datasiswa)
## Hours_Studied Attendance Parental_Involvement Access_to_Resources
## 1 23 84 Low High
## 2 19 64 Low Medium
## 3 24 98 Medium Medium
## 4 29 89 Low Medium
## 5 19 92 Medium Medium
## 6 19 88 Medium Medium
## Extracurricular_Activities Sleep_Hours Previous_Scores Motivation_Level
## 1 No 7 73 Low
## 2 No 8 59 Low
## 3 Yes 7 91 Medium
## 4 Yes 8 98 Medium
## 5 Yes 6 65 Medium
## 6 Yes 8 89 Medium
## Internet_Access Tutoring_Sessions Family_Income Teacher_Quality School_Type
## 1 Yes 0 Low Medium Public
## 2 Yes 2 Medium Medium Public
## 3 Yes 2 Medium Medium Public
## 4 Yes 1 Medium Medium Public
## 5 Yes 3 Medium High Public
## 6 Yes 3 Medium Medium Public
## Peer_Influence Physical_Activity Learning_Disabilities
## 1 Positive 3 No
## 2 Negative 4 No
## 3 Neutral 4 No
## 4 Negative 4 No
## 5 Neutral 4 No
## 6 Positive 3 No
## Parental_Education_Level Distance_from_Home Gender Exam_Score
## 1 High School Near Male 67
## 2 College Moderate Female 61
## 3 Postgraduate Near Male 74
## 4 High School Moderate Male 71
## 5 College Near Female 70
## 6 Postgraduate Near Male 71
library(ggplot2)
ggplot(datasiswa, aes(x = Hours_Studied, y = Exam_Score)) +
geom_point()
Pada visualisasi pertama, dapat kita liat bagaimana sebaran dari nilai ujian yang diperoleh oleh mahasiswa berdasarkan lamanya belajar mahasiswa. Dapat kita lihat, semakin lama mahasiswa belajar, semakin tinggi juga nilai yang diperoleh oleh mahasiswa
ggplot(datasiswa, aes(x = Hours_Studied, y = Exam_Score, color = factor(Gender))) +
geom_point()
Pada visualisasi kedua, tidak jauh berbeda dengan yang visualisasi pertama tetapi pada visualisasi kedua kita mengelompokkannya berdasarkan jenis kelamin. Dapat kita lihat jenis kelamin laki-laki lebih banyak yang memiliki scor yang lebih tinggi pada rentang waktu belajar 20-30 jam. Sedangkan perempuan lebih banyak memiliki scor yang lebih tinggi pada rentang waktu belajar 16-20 jam.
ggplot(data = datasiswa, aes(x = Attendance, y = Exam_Score, col = Teacher_Quality)) +
geom_point()
Pada visualisasi ketiga, kita dapat melihat bagaimana kehadiran dan kualitas pengajar dapat memengaruhi nilai score dari mahasiswa. Semakin sering seorang mahasiswa hadir nilai yang dia peroleh juga semakin bagus. Dan juga semakin bagus pengajar yang dimiliki, kehadiran mahasiswa juga semakin sering yang dapat menyebabkan nilai mahasiswa juga meningkat.
p <- ggplot(data = datasiswa, aes(x = Hours_Studied, y = Exam_Score, shape = factor(Motivation_Level))) + geom_point()
p + facet_grid(. ~ Motivation_Level) +
labs(title = "Exam_Score VS Hours_Studied",
x = "Hours_Studied",
y = "Exam_Score")
Pada Visualisasi Keempat, kita dapat melihat bagaimana sebaran nilai ujian dan berapa lama mereka belajar dan dikelompokkan berdasarkan motivasi. Disini dapat dilihat bahwa, motivasi tidak terlalu berpengaruh terhadap nilai ujian mereka, karena dari ketiga motivasi, sebaran motivasi mereka sama tidak jauh berbeda satu sama lain.
ggplot(data = datasiswa, aes(x = Exam_Score)) +
geom_histogram(binwidth = 5)
Pada visualisasi kelima, kita dapat melihat sebaran nilai ujian siswa. Seberan nilai mahasiswa berada di antara 52,5-102,5. Nilai kebanyakan yang diperoleh siswa berada di rentang 62,5-67,5. tetapi ada juga data pencilan, yaitu nilainya yang sampai 100.
setClass("Mahasiswa",
representation(
Nama = "character",
NIM = "character",
Domisili = "character"
))
Mahasiswa1 = new("Mahasiswa", Nama="Mhd Haekal Hakim", NIM="G1401231012", Domisili="Pariaman")
Mahasiswa2 = new("Mahasiswa", Nama="Rafi Adabhi Sunarya", NIM="G1401231106", Domisili="Subang")
Mahasiswa3 = new("Mahasiswa", Nama="Muhammad Fauzan Nur Rasendriya", NIM="G1401231108", Domisili="Klaten")
Mahasiswa4 = new("Mahasiswa", Nama="M. Taqy Abiyu Dzakwan", NIM="G1401231043", Domisili="Lampung")
Mahasiswa5 = new("Mahasiswa", Nama="Fahmi Maulana Ardiansyah", NIM="G1401231040", Domisili="Kediri")
Mahasiswa1
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Mhd Haekal Hakim"
##
## Slot "NIM":
## [1] "G1401231012"
##
## Slot "Domisili":
## [1] "Pariaman"
Mahasiswa2
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Rafi Adabhi Sunarya"
##
## Slot "NIM":
## [1] "G1401231106"
##
## Slot "Domisili":
## [1] "Subang"
Mahasiswa3
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Muhammad Fauzan Nur Rasendriya"
##
## Slot "NIM":
## [1] "G1401231108"
##
## Slot "Domisili":
## [1] "Klaten"
Mahasiswa4
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "M. Taqy Abiyu Dzakwan"
##
## Slot "NIM":
## [1] "G1401231043"
##
## Slot "Domisili":
## [1] "Lampung"
Mahasiswa5
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Fahmi Maulana Ardiansyah"
##
## Slot "NIM":
## [1] "G1401231040"
##
## Slot "Domisili":
## [1] "Kediri"
Mahasiswa <- function(Nama, NIM, Domisili) {
# Validasi sederhana
if (NIM < "G1401231001") {
warning("Bukan Mahasiswa Statistika")
}
# Buat objek S4
new("Mahasiswa",
Nama = as.character(Nama),
NIM = as.character(NIM),
Domisili = as.character(Domisili))
}
# Cara penggunaan
mhs1 <- Mahasiswa("Mhd Haekal Hakim", "G1401231012", "Pariaman")
mhs1
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Mhd Haekal Hakim"
##
## Slot "NIM":
## [1] "G1401231012"
##
## Slot "Domisili":
## [1] "Pariaman"
mhs2 <- Mahasiswa("Rafi Adabhi Sunarya", "G1401231106", "Subang")
mhs2
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Rafi Adabhi Sunarya"
##
## Slot "NIM":
## [1] "G1401231106"
##
## Slot "Domisili":
## [1] "Subang"
mhs3 <- Mahasiswa("Muhammad Fauzan Nur Rasendriya", "G1401231108", "Klaten")
mhs3
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Muhammad Fauzan Nur Rasendriya"
##
## Slot "NIM":
## [1] "G1401231108"
##
## Slot "Domisili":
## [1] "Klaten"
mhs4 <- Mahasiswa("M. Taqy Abiyu Dzakwan", "G1401231043", "Lampung")
mhs4
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "M. Taqy Abiyu Dzakwan"
##
## Slot "NIM":
## [1] "G1401231043"
##
## Slot "Domisili":
## [1] "Lampung"
mhs5 <- Mahasiswa("Fahmi Maulana Ardiansyah", "G1401231040", "Kediri")
mhs5
## An object of class "Mahasiswa"
## Slot "Nama":
## [1] "Fahmi Maulana Ardiansyah"
##
## Slot "NIM":
## [1] "G1401231040"
##
## Slot "Domisili":
## [1] "Kediri"
setClass("Mahasiswa",
representation(
Nama = "character",
NIM = "character",
Domisili = "character"
))
Mahasiswa <- function(Nama, NIM, Domisili) {
new("Mahasiswa", Nama = Nama, NIM = NIM, Domisili = Domisili)
}
Nama1 <- function(object) object@Nama
NIM1 <- function(object) object@NIM
Domisili1 <- function(object) object@Domisili
Mahasiswa1 = new("Mahasiswa", Nama="Mhd Haekal Hakim", NIM="G1401231012", Domisili="Pariaman")
Mahasiswa2 = new("Mahasiswa", Nama="Rafi Adabhi Sunarya", NIM="G1401231106", Domisili="Subang")
Mahasiswa3 = new("Mahasiswa", Nama="Muhammad Fauzan Nur Rasendriya", NIM="G1401231108", Domisili="Klaten")
Mahasiswa4 = new("Mahasiswa", Nama="M. Taqy Abiyu Dzakwan", NIM="G1401231043", Domisili="Lampung")
Mahasiswa5 = new("Mahasiswa", Nama="Fahmi Maulana Ardiansyah", NIM="G1401231040", Domisili="Kediri")
## Ubah Ke Method Show
setMethod("show", "Mahasiswa", function(object) {
cat("Nama : ", Nama1(object), "\n",
"NIM : ", NIM1(object), "\n",
"Domisili : ", Domisili1(object), "\n", sep = "")
})
Mahasiswa1
## Nama : Mhd Haekal Hakim
## NIM : G1401231012
## Domisili : Pariaman
f <- function(x) {
10 * (x[1] + x[2])^2 + (2 * x[1] + x[3])^2 + (1 + x[2])^2
}
hasil <- optim(par = c(0, 0, 0), fn = f)
round(hasil$par)
## [1] 1 -1 -2
round(hasil$value)
## [1] 0
Optimasi <- function(nama_metode, fungsi) {
obj <- list(
nama_metode = nama_metode,
fungsi = fungsi
)
class(obj) <- "Optimasi"
return(obj)
}
execute.Optimasi <- function(object, ...) {
if (!inherits(object, "Optimasi")) stop("Object bukan bertipe Optimasi")
cat("Metode yang digunakan:", object$nama_metode, "\n")
if (object$nama_metode == "optim") {
hasil <- optim(par = c(0, 0, 0), fn = object$fungsi)
return(hasil)
} else if (object$nama_metode == "golden") {
if (!requireNamespace("pracma", quietly = TRUE)) {
stop("Package 'pracma' diperlukan untuk metode golden.")
}
return(pracma::golden(object$fungsi, a = -10, b = 10))
} else {
stop("Metode tidak dikenali.")
}
}
# Contoh Penggunaan
f <- function(x) {
10 * (x[1] + x[2])^2 + (2 * x[1] + x[3])^2 + (1 + x[2])^2
}
obj1 <- Optimasi("optim", f)
hasil1 <- execute.Optimasi(obj1)
## Metode yang digunakan: optim
round(hasil1$par)
## [1] 1 -1 -2
round(hasil1$value)
## [1] 0