Package Installation

library(tidyverse) 
library(dplyr)
library(reshape2)
library(ggforce)
library(readxl)
library(ggcorrplot)

Praktikum 8

Visualisasi Korelasi

Data

datastudy <- read_excel("D:/AED/study performance.xlsx")
str(datastudy)
## tibble [1,000 Ă— 8] (S3: tbl_df/tbl/data.frame)
##  $ gender                     : chr [1:1000] "female" "female" "female" "male" ...
##  $ race_ethnicity             : chr [1:1000] "group B" "group C" "group B" "group A" ...
##  $ parental_level_of_education: chr [1:1000] "bachelor's degree" "some college" "master's degree" "associate's degree" ...
##  $ lunch                      : chr [1:1000] "standard" "standard" "standard" "free/reduced" ...
##  $ test_preparation_course    : chr [1:1000] "none" "completed" "none" "none" ...
##  $ math_score                 : num [1:1000] 72 69 90 47 76 71 88 40 64 38 ...
##  $ reading_score              : num [1:1000] 72 90 95 57 78 83 95 43 64 60 ...
##  $ writing_score              : num [1:1000] 74 88 93 44 75 78 92 39 67 50 ...
ggplot(datastudy, aes(x = math_score, y = reading_score, color = gender)) +
  geom_point() +  
  labs(title = "Scatter Plot", x = "Math Score", y = "Reading Score") +
  scale_color_manual(values = c("male" = "steelblue", "female" = "indianred")) +  
  theme_classic()

Scatterplot tersebut dikelompokkan berdasarkan gender, di mana warna merah menunjukkan gender female (perempuan), sedangkan warna biru menunjukkan gender male (laki-laki). Berdasarkan scatterplot di atas terlihat bahwa hubungan antara math score dengan reading score berhubungan positif. Hal ini menunjukkan apabila math scorenya naik maka reading scorenya juga akan naik, begitu pula sebaliknya. Math score dan reading score dari perempuan lebih tinggi dari laki-laki.

Visualisasi Corellogram

Data

data <- read.csv("D:/visdat/Sleep_health_and_lifestyle_dataset.csv", header = TRUE, sep=";")
str(data)
## 'data.frame':    374 obs. of  13 variables:
##  $ Person.ID              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Gender                 : chr  "Male" "Male" "Male" "Male" ...
##  $ Age                    : int  27 28 28 28 28 28 29 29 29 29 ...
##  $ Occupation             : chr  "Software Engineer" "Doctor" "Doctor" "Sales Representative" ...
##  $ Sleep.Duration         : num  6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
##  $ Quality.of.Sleep       : int  6 6 6 4 4 4 6 7 7 7 ...
##  $ Physical.Activity.Level: int  42 60 60 30 30 30 40 75 75 75 ...
##  $ Stress.Level           : int  6 8 8 8 8 8 7 6 6 6 ...
##  $ BMI.Category           : chr  "Overweight" "Normal" "Normal" "Obese" ...
##  $ Blood.Pressure         : chr  "126/83" "125/80" "125/80" "140/90" ...
##  $ Heart.Rate             : int  77 75 75 85 85 85 82 70 70 70 ...
##  $ Daily.Steps            : int  4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
##  $ Sleep.Disorder         : chr  "None" "None" "None" "Sleep Apnea" ...
data_numerik <- select_if(data, is.numeric) %>% select(-Person.ID)  
str(data_numerik)
## 'data.frame':    374 obs. of  7 variables:
##  $ Age                    : int  27 28 28 28 28 28 29 29 29 29 ...
##  $ Sleep.Duration         : num  6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
##  $ Quality.of.Sleep       : int  6 6 6 4 4 4 6 7 7 7 ...
##  $ Physical.Activity.Level: int  42 60 60 30 30 30 40 75 75 75 ...
##  $ Stress.Level           : int  6 8 8 8 8 8 7 6 6 6 ...
##  $ Heart.Rate             : int  77 75 75 85 85 85 82 70 70 70 ...
##  $ Daily.Steps            : int  4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
data_melt <- cor(data_numerik[sapply(data_numerik,is.numeric)])
data_melt <- melt(data_melt) 

ggplot(data_melt, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "white") +
  scale_fill_gradient2(low = "darkblue", mid = "white", high = "maroon", midpoint = 0, limits = c(-1,1), name="Korelasi") +
  labs(title = "Corellogram") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Berdasarkan matriks korelasi (Corellogram) di atas dapat dilihat bahwa semakin gelap warnanya maka korelasi antar peubah semakin kuat. Apabila warnanya semakin maroon maka korelasi antar peubah memiliki hubungan positif yang kuat, sedangkan semakin darkblue maka korelasi antar peubah memiliki hubungan negatif yang kuat. Peubah Sleep duration memiliki hubungan positif yang kuat dengan peubah Quality of Sleep. Sedangkan, peubah Quality of Sleep dan sleep duration memiliki hubungan negatif yang kuat dengan peubah stress level.

Praktikum 9

Data

datasales <- read.csv("D:/visdat/sales.csv", header = TRUE, sep=",")
str(datasales)
## 'data.frame':    365 obs. of  3 variables:
##  $ X    : int  0 1 2 3 4 5 6 7 8 9 ...
##  $ Date : chr  "2021-10-01" "2021-10-02" "2021-10-03" "2021-10-04" ...
##  $ Sales: num  29.1 30.7 30.3 27.4 22.8 ...
sales <- datasales[, c("Date", "Sales")]
str(sales)
## 'data.frame':    365 obs. of  2 variables:
##  $ Date : chr  "2021-10-01" "2021-10-02" "2021-10-03" "2021-10-04" ...
##  $ Sales: num  29.1 30.7 30.3 27.4 22.8 ...

Plot Time Series

sales$Date <- as.Date(sales$Date)
monthly_sales <- aggregate(Sales ~ format(Date, "%Y-%m"), data = sales, FUN = sum)
names(monthly_sales) <- c("Date", "Sales")
monthly_sales$Date <- as.Date(paste(monthly_sales$Date, "01", sep = "-"))
data.ts <- ts(monthly_sales$Sales)
plot(data.ts, xlab ="Waktu", ylab = "Penjualan", col="firebrick", main = "Plot Data Penjualan")
points(data.ts)

Plot di atas merupakan plot dari data penjualan suatu produk setiap bulan dari Jumat, 1 Oktober 2021 sampai Jumat, 1 September 2022. Berdasarkan plot di atas dapat dilihat bahwa penjualan suatu produk mengalami peningkatan dari waktu ke waktu. Peningkatan ini dapat terjadi karena beberapa faktor, seperti harga produk, permintaan terhadap produk, dan juga ketersediaan produk.

Praktikum 10

Data

dataworld <- map_data("world") 
data2 <- read.csv("D:/visdat/World Happiness.csv", header = TRUE, sep=",")
data2 <- data2 %>% rename(region = Country.or.region)
data3 <- left_join(dataworld, data2, by = "region")
data3_vac <- data3 %>% filter(!is.na(Score))
str(data3_vac)
## 'data.frame':    77516 obs. of  14 variables:
##  $ long                        : num  74.9 74.8 74.8 74.7 74.7 ...
##  $ lat                         : num  37.2 37.2 37.2 37.3 37.3 ...
##  $ group                       : num  2 2 2 2 2 2 2 2 2 2 ...
##  $ order                       : int  12 13 14 15 16 17 18 19 20 21 ...
##  $ region                      : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ subregion                   : chr  NA NA NA NA ...
##  $ Overall.rank                : int  154 154 154 154 154 154 154 154 154 154 ...
##  $ Score                       : num  3.2 3.2 3.2 3.2 3.2 ...
##  $ GDP.per.capita              : num  0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 ...
##  $ Social.support              : num  0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 ...
##  $ Healthy.life.expectancy     : num  0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 ...
##  $ Freedom.to.make.life.choices: num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Generosity                  : num  0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 ...
##  $ Perceptions.of.corruption   : num  0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 ...

Visualisasi Map Chart

top_country <- data3_vac %>%
  arrange(desc(Score)) %>%
  slice(1:10)

bottom_country <- data3_vac %>%
  arrange(Score) %>%
  slice(1:10)

ggplot(data3_vac, aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = Score), color = "black") + 
  scale_fill_gradient(name = "Score", low = "lightsalmon", high =  "darkred", na.value = "yellow") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks = element_blank(),
        axis.title.y = element_blank(),
        axis.title.x = element_blank(),
        rect = element_blank()) +
  geom_text(data = rbind(top_country, bottom_country), aes(label = region), size = 3, color = "white")

Berdasarkan map chart di atas dapat dilihat bahwa semakin merah warna negaranya maka tingkat kebahagiaan negara tersebut semakin tinggi. Sedangkan semakin muda warnanya maka tingkat kebahagiaan negara tersebut semakin rendah. Tingkat kebahagiaan suatu negara dipengaruhi oleh banyak faktor, seperti GDP per capita, Social support, Healthy life expectancy,Freedom to make life choices, Generosity, Perceptions of corruption. Finlandia merupakan negara dengan tingkat kebahagiaan tertinggi di dunia. Sedangkan negara dengan tingkat kebahagiaan terendah adalah South Sudan.