Nomor 1

Bangkitkan bilangan acak yang berdistribusi \(exponential (λ)\) dengan metode Inverse Transform Method, yang amatannya berjumlah 10000, dengan pdf

\(f(x,λ)=λ.e^{-λx}\) ; \(x\leq0\)

\(0\) ; lainnya

Buatlah histogram dan hitunglah nilai kurtosis dan skewness

1. Menentukan CDF

PDF dari \(exponential (λ)\) \(f(x)=λ.e^{-λx}\), \(x\geq0\)

CDF dari \(exponential (λ)\) \(F(x)=1-e^{-λx}\), \(x\geq0\)

2. Mencari invers CDF \(F(x)\)

Invers CDF dari \(exponential(λ)\) \(F^{-1}(u)=-\frac{ln(1-u)}{λ}\), \(x\geq0\)

3. Memunculkan \(u∼U(0,1)\)

# Jumlah Amatan
n <- 10000

4. Mencari bilangan acak \(x\) dengan menghitung \(F^{-1}(u)\)

# Membangkitkan U(0,1), Fungsi Inverse CDF
set.seed(10)
eks<- function(n, lambda) {
  u <- runif(n)
  x <- -(log(1-u)/lambda)
  return(x) }
#Invers Transform Method
x1 = eks(1000,3)
#Fungsi Bawaan R
x2 = rexp(1000,rate=3)

5. Membuat Histogram

par(mfrow=c(1,2))
hist(x1,main="Exp dari Inverse Transform", col="aquamarine", xlab="Sumbu X")
hist(x2,main="Exp dari Fungsi Rexp",col="burlywood3",xlab="Sumbu X")

6. Menentukan Kurtosis dan Skewness

library(moments)
kurtosis(x1)
## [1] 11.1458
kurtosis(x2)
## [1] 7.629947
skewness(x1)
## [1] 2.348012
skewness(x2)
## [1] 1.904943

Nomor 2

#Menampilkan data Student Performance
kelas<-read.csv("C:/Users/Rizqa Aprillia P/Downloads/StudentsPerformance.csv",header=TRUE)
head(kelas)
##   gender race.ethnicity parental.level.of.education        lunch
## 1 female        group B           bachelor's degree     standard
## 2 female        group C                some college     standard
## 3 female        group B             master's degree     standard
## 4   male        group A          associate's degree free/reduced
## 5   male        group C                some college     standard
## 6 female        group B          associate's degree     standard
##   test.preparation.course math.score reading.score writing.score
## 1                    none         72            72            74
## 2               completed         69            90            88
## 3                    none         90            95            93
## 4                    none         47            57            44
## 5                    none         76            78            75
## 6                    none         71            83            78

A) Buatlah Digram Frame dengan menambahkan kolom baru nilai total skor dan rata-rata skor

#Menambahkan Kolom total Skor
kelas$nilai.total.skor <- rowSums(kelas[6:8])
#Menambahkan Kolom Rata-Rata Skor
kelas$rata.rata.skor <- rowMeans(kelas[6:8])
head(kelas)
##   gender race.ethnicity parental.level.of.education        lunch
## 1 female        group B           bachelor's degree     standard
## 2 female        group C                some college     standard
## 3 female        group B             master's degree     standard
## 4   male        group A          associate's degree free/reduced
## 5   male        group C                some college     standard
## 6 female        group B          associate's degree     standard
##   test.preparation.course math.score reading.score writing.score
## 1                    none         72            72            74
## 2               completed         69            90            88
## 3                    none         90            95            93
## 4                    none         47            57            44
## 5                    none         76            78            75
## 6                    none         71            83            78
##   nilai.total.skor rata.rata.skor
## 1              218       72.66667
## 2              247       82.33333
## 3              278       92.66667
## 4              148       49.33333
## 5              229       76.33333
## 6              232       77.33333

B) Hitung nilai summary, skewness, kurtosis pada data

Summary

summary(kelas)
##     gender          race.ethnicity     parental.level.of.education
##  Length:1000        Length:1000        Length:1000                
##  Class :character   Class :character   Class :character           
##  Mode  :character   Mode  :character   Mode  :character           
##                                                                   
##                                                                   
##                                                                   
##     lunch           test.preparation.course   math.score     reading.score   
##  Length:1000        Length:1000             Min.   :  0.00   Min.   : 17.00  
##  Class :character   Class :character        1st Qu.: 57.00   1st Qu.: 59.00  
##  Mode  :character   Mode  :character        Median : 66.00   Median : 70.00  
##                                             Mean   : 66.09   Mean   : 69.17  
##                                             3rd Qu.: 77.00   3rd Qu.: 79.00  
##                                             Max.   :100.00   Max.   :100.00  
##  writing.score    nilai.total.skor rata.rata.skor  
##  Min.   : 10.00   Min.   : 27.0    Min.   :  9.00  
##  1st Qu.: 57.75   1st Qu.:175.0    1st Qu.: 58.33  
##  Median : 69.00   Median :205.0    Median : 68.33  
##  Mean   : 68.05   Mean   :203.3    Mean   : 67.77  
##  3rd Qu.: 79.00   3rd Qu.:233.0    3rd Qu.: 77.67  
##  Max.   :100.00   Max.   :300.0    Max.   :100.00

Skewness

library(e1071)
## 
## Attaching package: 'e1071'
## The following objects are masked from 'package:moments':
## 
##     kurtosis, moment, skewness
skewness(kelas$math.score)
## [1] -0.2780989
skewness(kelas$reading.score)
## [1] -0.2583277
skewness(kelas$ writing.score)
## [1] -0.2885762
skewness(kelas$nilai.total.skor)
## [1] -0.2981605
skewness(kelas$rata.rata.skor)
## [1] -0.2981605

Kurtosis

kurtosis(kelas$math.score )
## [1] 0.2610652
kurtosis(kelas$reading.score)
## [1] -0.07976785
kurtosis(kelas$ writing.score)
## [1] -0.04511069
kurtosis(kelas$nilai.total.skor)
## [1] 0.1129852
kurtosis(kelas$rata.rata.skor)
## [1] 0.1129852

C) Buatlah Dagram Pie Chart pada (i) gender, (ii) race.ethnicity, (iii) parental.level.of.education, (iv) lunch dan (v) test.preparation.course dengan menampilkan label persentase (%)

(i) gender

data <- table(kelas$gender)
a <- c("Female","Male")

percent <- round(data/1000*100)

pie(data, labels = paste(percent,"%"), col = cm.colors(length(data)),main ="PERSENTASE PIE CHART GENDER")
legend ("topright", c("Female","Male"), cex = 0.8,
        fill = cm.colors(length(data)))

(ii) race.ethnicity

data <- table(kelas$race.ethnicity)
a <- c("Group A", "Group B", "Group C", "Group D", "Group E")

percent <- round(data/1000*100)

pie(data, labels = paste(percent,"%"), col = cm.colors(length(data)),main ="PERSENTASE PIE CHART RACE ETHNICITY")
legend ("topright", c("Group A", "Group B", "Group C", "Group D", "Group E"), cex = 0.8,
        fill = cm.colors(length(data)))

(iii) parental.level.of.education

data <- table(kelas$parental.level.of.education)
a <- c("Associate's Degree","Bachelor's Degree","High School","Master's Degree","Some College","Some High School ")

percent <- round(data/1000*100)

pie(data, labels = paste(percent,"%"), col = cm.colors(length(data)),main ="PERSENTASE PIE CHART PARENTAL LEVEL OF EDUCATION")
legend ("topright", c("Associate's Degree","Bachelor's Degree","High School","Master's Degree","Some College","Some High School "), cex = 0.7,
        fill = cm.colors(length(data)))

(iv) lunch

data <- table(kelas$lunch)
a <- c("Free/Reduced","Standard")

percent <- round(data/1000*100)

pie(data, labels = paste(percent,"%"), col = cm.colors(length(data)),main ="PERSENTASE PIE CHART LUNCH")
legend ("topright", c("Free/Reduced","Standard"), cex = 0.8,
        fill = cm.colors(length(data)))

(v) test.preparation.course

data <- table(kelas$test.preparation.course)
a <- c("Completed","None")

percent <- round(data/1000*100)

pie(data, labels = paste(percent,"%"), col = cm.colors(length(data)),main ="PERSENTASE PIE CHART TEST PREPARATION COURSE")
legend ("topright", c("Completed","None"), cex = 0.8,
        fill = cm.colors(length(data)))

D) Buatlah diagram batang yang telah diurutkan pada data rata-rata skor terhadap (i) parental.level.of.education dan (ii) race.ethnicity menggunakan ggplot

(i) parental.level.of.education

library(ggplot2) 
rataan = aggregate(rata.rata.skor~parental.level.of.education, data=kelas, FUN = mean) 
rata_rata = rataan[ , -1] 
a = rataan[ , -2] 
ggplot(rataan, aes(x = a, y = rata_rata , fill = parental.level.of.education ))+
  geom_bar(stat = "identity")+
  labs(title="Diagram Rata-Rata Nilai Skor Terhadap Parental Level Of Education")+
  labs(y = "Rata-Rata Skor Siswa",
       fill = "Parental Level Of Education",
       x = "Parental Level Of Education")+ 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

(ii) race.ethnicity

library(ggplot2) 
rataan = aggregate(rata.rata.skor~race.ethnicity, data=kelas, FUN = mean) 
rata_rata = rataan[ , -1] 
a = rataan[ , -2] 
ggplot(rataan, aes(x = a, y = rata_rata , fill = race.ethnicity ))+
  geom_bar(stat = "identity")+
  labs(title="Diagram Rata-Rata Nilai Skor Terhadap Race Ethnicity")+
  labs(y = "Rata-Rata Skor Siswa",
       fill = "Race Ethnicity",
       x = "Race Ethnicity")

E) Buatlah diagram batang cluster/stacked pada, gunakan ggplot (i) parental level of education dan gender terhadap total score dan (ii) race.ethnicity dan gender terhadap total score

(i) Diagram batang cluster/stacked parental level of education dan gender terhadap total score

library(ggplot2)
ggplot(kelas, aes(x=parental.level.of.education,y=nilai.total.skor , fill=gender))+
geom_bar(stat = "identity")+ scale_fill_manual(values=c("darkgoldenrod1","darkorange2")) +
  labs(y = "Nilai Total Skor",
       fill = "Gender",
       x = "Parental Level Of Education",
       title = "Diagram Batang/Cluster Parental Level Dan Gender Terhadap Total Skor") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

(ii) Diagram batang cluster/stacked race.ethnicity dan gender terhadap total score

library(ggplot2)
ggplot(kelas, aes(x= race.ethnicity, y = nilai.total.skor , fill= gender))+
geom_bar(stat = "identity")+ scale_fill_manual(values=c("darkolivegreen1","darkseagreen4"))+
  labs(y = "Nilai Total Skor",
       fill = "Gender",
       x = "Race Ethnicity",
       title = "Diagram Batang/Cluster Race Ethnicity Dan Gender Terhadap Total Skor")

F) Buatlah Visualisasi Sebaran Data Skor Matematika, Skor Writing Dan Skor Reading Pada Masing-Masing Jenis Kelamin Dengan Menggunakan Histogram

Histogram Sebaran Data Skor Matematika Pada Masing-Masing Jenis Kelamin

library(ggplot2) 
ggplot(kelas, mapping=aes(x=math.score,fill=gender))+
  geom_histogram(color="black",binwidth=5)+ 
  xlab('Mathematic Score')+
  ggtitle(label="Histogram Sebaran Data Skor Matematika pada Masing-Masing Jenis Kelamin")+
  scale_fill_manual(values=c("lavenderblush1","hotpink"))+
  theme_dark()

Histogram Sebaran Data Skor Writing Pada Masing-Masing Jenis Kelamin

library(ggplot2) 
ggplot(kelas, mapping=aes(x = writing.score,fill=gender))+
  geom_histogram(color="black",binwidth=5)+ 
  xlab('Writing Score')+
  ggtitle(label="Histogram Sebaran Data Skor Writing pada Masing-Masing Jenis Kelamin")+
  scale_fill_manual(values=c("darkolivegreen1","cyan2"))+
  theme_dark()

Histogram Sebaran Data Skor Reading Pada Masing-Masing Jenis Kelamin

library(ggplot2) 
ggplot(kelas, mapping=aes(x = reading.score,fill=gender))+
  geom_histogram(color="black",binwidth=5)+ 
  xlab('Reading Score')+
  ggtitle(label="Histogram Sebaran Data Skor Reading pada Masing-Masing Jenis Kelamin")+
  scale_fill_manual(values=c("pink","plum"))+
  theme_dark()

G) Buatlah visualisasi boxplot pada masing-masing skor kemampuan (metamatika,writing, reading) terhadap parental education level di masing-masing gender

Boxplot Sebaran Skor Matematika Siswa Terhadap Parental Level Of Education Di Masing-Masing Gender

Tampilan Boxplot Biasa

library(ggplot2)
ggplot(kelas, aes(x=parental.level.of.education, y=math.score, fill=gender))+
  xlab('Parental Level Of Education')+ylab('Matematika Score') +
 ggtitle("Boxplot Math Score Terhadap Parental Education Di Masing'' Gender") +
  scale_fill_manual(values=c("indianred1","burlywood")) +
  theme(plot.title = element_text(hjust = 1.)) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  geom_boxplot()

Tampilan Boxplot Menggunakan Geometri Violin

ggplot(kelas, mapping=aes(x=parental.level.of.education, y= math.score, fill=gender))+
  geom_violin(fill="#2D2D2D", alpha=0.3, trim=F,width=1.02)+
  xlab('Parental Level Of Education')+ylab('Matematika Score')+
  geom_boxplot()+ 
  labs(title="Boxplot Math Score Terhadap Parental Education Di Masing'' Gender")+
  coord_flip()+
  scale_fill_manual(values=c("indianred1","burlywood"))
## Warning: position_dodge requires non-overlapping x intervals

Boxplot Sebaran Skor Membaca Siswa Terhadap Parental Level Of Education Di Masing-Masing Gender

Tampilan Boxplot Biasa

library(ggplot2)
ggplot(kelas, aes(x=parental.level.of.education, y=reading.score, fill=gender))+
  xlab('Parental Level Of Education')+ylab('Reading Score') +
 ggtitle("Boxplot Reading Score Terhadap Parental Education Di Masing'' Gender") +
  scale_fill_manual(values=c("lightsalmon","navajowhite")) +
  theme(plot.title = element_text(hjust = 1.)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  geom_boxplot()

Tampilan Boxplot Menggunakan Geometri Violin

ggplot(kelas, mapping=aes(x=parental.level.of.education, y=reading.score , fill=gender))+
  geom_violin(fill="#2D2D2D", alpha=0.3, trim=F,width=1.02)+
  xlab('Parental Level Of Education')+ylab('Reading Score') +
  geom_boxplot()+ 
  labs(title="Boxplot Reading Skor Terhadap Parental Education Di Masing''Gender")+
  coord_flip()+ scale_fill_manual(values=c("lightsalmon","navajowhite"))
## Warning: position_dodge requires non-overlapping x intervals

Boxplot Sebaran Skor Menulis Siswa Terhadap Parental Level Of Education Di Masing-Masing Gender

Tampilan Boxplot Biasa

library(ggplot2)
ggplot(kelas, aes(x=parental.level.of.education, y=writing.score, fill=gender))+
  xlab('Parental Level Of Education')+ylab('Writing Score') +
 ggtitle("Boxplot Writing Score Terhadap Parental Education Di Masing'' Gender") +
  scale_fill_manual(values=c("palegreen","orange")) +
  theme(plot.title = element_text(hjust = 1.5)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  geom_boxplot()

Tampilan Boxplot Menggunakan Geometri Violin

ggplot(kelas, mapping=aes(x=parental.level.of.education, y= writing.score , fill=gender))+
  geom_violin(fill="#2D2D2D", alpha=0.3, trim=F,width=1.02)+
  xlab('Parental Level Of Education')+ylab('Writing Score') +
  geom_boxplot()+ 
  labs(title="Boxplot Writing Score Terhadap Parental Education Di Masing''Gender")+
  coord_flip()+ 
  scale_fill_manual(values=c("palegreen","orange"))
## Warning: position_dodge requires non-overlapping x intervals

H) Buatlah scatter plot antara skor matematika, writing dan reading

Scatter Plot antara Mathematic Score dengan Writing Score

plot(kelas$math.score,kelas$writing.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Writing Score" ,xlab = "Math Score",col = "tomato1", main="Scatter Plot Mathematic Score Dengan Writing Score")

Scatter Plot antara Mathematic Score dengan Reading Score

plot(kelas$math.score,kelas$reading.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Reading Score" ,xlab = "Math Score",col = "royalblue1", main="Scatter Plot Mathematic Score Dengan Reading Score")

Scatter Plot Antara Writing Score Dengan Mathematic Score

plot(kelas$writing.score,kelas$math.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Math Score" ,xlab = "Writing Score",col = "hotpink3", main="Scatter Plot Writing Score Dengan Mathematic Score")

Scatter Plot Antara Writing Score Dengan Reading Score

plot(kelas$writing.score,kelas$reading.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Reading Score" ,xlab = "Writing Score",col = "deeppink", main="Scatter Plot Writing Score Dengan Reading Score")

Scatter Plot Antara Reading Score Dengan Mathematic Score

plot(kelas$reading.score,kelas$math.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Math Score" ,xlab = "Reading Score",col = "darkorchid3", main="Scatter Plot Reading Score Dengan Mathematic Score")

Scatter Plot Antara Reading Score Dengan Writing Score

plot(kelas$reading.score,kelas$writing.score,pch = 19, cex = 0.8, frame = FALSE, ylab="Writing Score" ,xlab = "Reading Score",col = "darkolivegreen3", main="Scatter Plot Reading Score Dengan Writing Score")