library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(reshape2)
##
## Attaching package: 'reshape2'
##
## The following object is masked from 'package:tidyr':
##
## smiths
library(ggforce)
library(ggplot2)
library(tidyverse)
library(reshape2)
library(ggcorrplot)
library(readxl)
data1 <- read.csv("C:/Users/ASUS/Documents/Nita/SEMESTER 4/Visdat/PRAKTIKUM 8, 9, 10/university_admission.csv", header = TRUE, sep=",")
str(data1)
## 'data.frame': 1000 obs. of 8 variables:
## $ GRE_Score : int 337 324 316 322 314 330 321 308 302 323 ...
## $ TOEFL_Score : int 118 107 104 110 103 115 109 101 102 108 ...
## $ University_Rating : int 4 4 3 3 2 5 3 2 1 3 ...
## $ SOP : num 4.5 4 3 3.5 2 4.5 3 3 2 3.5 ...
## $ LOR : num 4.5 4.5 3.5 2.5 3 3 4 4 1.5 3 ...
## $ CGPA : num 9.65 8.87 8 8.67 8.21 9.34 8.2 7.9 8 8.6 ...
## $ Research : int 1 1 1 1 0 1 1 0 0 0 ...
## $ Chance_of_Admission: num 0.92 0.76 0.72 0.8 0.65 0.9 0.75 0.68 0.5 0.45 ...
data_numerik <- select_if(data1, is.numeric)
str(data_numerik)
## 'data.frame': 1000 obs. of 8 variables:
## $ GRE_Score : int 337 324 316 322 314 330 321 308 302 323 ...
## $ TOEFL_Score : int 118 107 104 110 103 115 109 101 102 108 ...
## $ University_Rating : int 4 4 3 3 2 5 3 2 1 3 ...
## $ SOP : num 4.5 4 3 3.5 2 4.5 3 3 2 3.5 ...
## $ LOR : num 4.5 4.5 3.5 2.5 3 3 4 4 1.5 3 ...
## $ CGPA : num 9.65 8.87 8 8.67 8.21 9.34 8.2 7.9 8 8.6 ...
## $ Research : int 1 1 1 1 0 1 1 0 0 0 ...
## $ Chance_of_Admission: num 0.92 0.76 0.72 0.8 0.65 0.9 0.75 0.68 0.5 0.45 ...
data_melt <- cor(data_numerik[sapply(data_numerik,is.numeric)])
data_melt <- melt(data_melt)
ggplot(data_melt, aes(x = Var1, y = Var2, fill = value)) +
geom_tile() +
scale_fill_gradientn(colors = c("#BCCC8A", "darkgreen")) +
labs(title = "Correlation Heatmap")
Heatmap correlation ini menampilkan korelasi antar peubah numerik pada data1. Warna pada heatmap menunjukan nilai atau value dari korelasi tersebut, yang mana semakin pekat atau gelap warna petak heatmap maka menandakan korelasi yang semakin kuat, serta semakin terang warna petak heatmap maka menandakan korelasi yang semakin lemah.
data_corrl <- round(cor(data1), 1)
data_corrl <- cor (data_corrl)
ggcorrplot(data_corrl, lab = TRUE, lab_size = 2) +
ggtitle("Corellogram") +
theme(axis.text.x = element_text(size = 8),
axis.text.y = element_text(size = 8))
Hampir sama dengan heatmap correlation, Correlogram matrix juga menampilkan korelasi antar peubah numerik pada data1. Correlogram matrix menampilkan warna dari terang ke gelap yang menunjukkan kekuatan dari hubungan atau korelasi antar peubah, selain itu correlation matrix juga menampilkan nilai dari korelasinya pada setiap petak. Pada correlation matrix ini juga diatur ukuran huruf di sumbu x dan sumbu y sebesar 8 dan ukuran huruf pada korelasi peubah sebesar 2.
ggcorrplot(data_corrl, method = "circle", lab = TRUE, lab_size = 2) +
ggtitle("Corellogram")+
theme(axis.text.x = element_text(size = 8), axis.text.y = element_text(size = 8))
Correlogram matrix ini merupakan modifikasi dari correlogram matrix sebelumnya. Insight tambahan dari correlogram ini adalah setiap korelasi antar peubah diwakili bentuk lingkaran dengan ukuran lingkaran mewakili besar kecilnya korelasi, atau semakin besar ukuran lingkaran maka semakin besar korelasi peubah tersebut.
data1$University_Rating <- factor(ifelse(data1$University_Rating >= 3, "Lebih dari 3", "Kurang dari sama dengan 3"), levels = c("Lebih dari 3", "Kurang dari sama dengan 3"))
ggplot(data1, aes(x = GRE_Score, y = TOEFL_Score, color = University_Rating)) +
geom_point() +
labs(title = "Skor TOEFL dan Skor GRE berdasarkan Nilai Universitas", x = "Skor GRE", y = "Skor TOEFL", color = "Nilai Univ") +
scale_color_manual(values = c("blue", "green")) +
theme_minimal()
ggplot(data1, aes(x = GRE_Score, y = TOEFL_Score, color = University_Rating)) +
geom_point() +
labs(title = "Skor TOEFL dan Skor GRE berdasarkan Nilai Universitas", x = "Skor GRE", y = "Skor TOEFL", color = "Nilai Univ") +
facet_wrap(~ University_Rating) +
scale_color_manual(values = c("blue", "green")) +
theme_minimal()
Scatter plot menampilkan hubungan antar dua peubah, yaitu Skor GRE sebagai peubah bebas dan Skor TOEFL sebagai peubah tak bebas atau peubah respon. Dari data1 dibuat kolom baru dengan mengelompokkan data tersebut berdasarkan nilai universitas, untuk nilai universitas 1 sampai 3 diwakili oleh warna hijau dan untuk nilai 4 dan 5 diwakili dengan warna biru. Pada scatter plot kedua, dilakukan pemisahan visualisasi sehingga lebih mudah untuk melihat bentuk hubungannya. Insight yang dapat diambil yaitu, skor GRE memiliki pengaruh atau hubungan positif terhadap skor TOEFL, serta universitas dengan nilai yang lebih tinggi menghasilkan skor TOEFL yang lebih tinggi dibandingkan dengan nilai universitas di bawahnya.
dataset <- read_excel("C:/Users/ASUS/Documents/Nita/SEMESTER 4/Visdat/PRAKTIKUM 8, 9, 10/time series suhu.xlsx", sheet = 1)
str(dataset)
## tibble [36 × 1] (S3: tbl_df/tbl/data.frame)
## $ suhu: num [1:36] 21.6 22.5 22.4 21.9 22.4 20.3 22 22 22.2 22.5 ...
data2 <- dataset$suhu
data.ts <- ts(data2)
plot(data.ts, xlab = "Bulan", ylab ="Rata-rata suhu (celcius)", col="red", main = "Rata-rata Suhu Minimum")
points(data.ts, col = "blue")
Visualisasi deret waktu atau time series ini menampilkan trend rata-rata suhu minimum dalam kurun waktu 36 bulan. Data yang digunakan merupakan data rata-rata suhu minimun di Indonesia selama 36 bulan atau 3 tahun, terhitung dari Bulan Januari tahun 2021 sampai dengan Bulan Desember tahun 2023. Points atau titik lingkaran yang diberi warna biru menunjukkan titik suatu nilai suhu, serta garis yang diberi warna merah menjadi penanda bahwa itu adalah data time series dengan menghubungkan titik-titik pada plot tersebut. Dapat dilihat bahwa rata-rata suhu minimum relatif naik turun dan tidak konstan dengan suhu terendah berada pada rentang waktu bulan kelima sampai dengan bulan kesepuluh atau lebih tepatnya pada bulan keenam (Juni 2021), serta rata-rata suhu minimum tertinggi terdapat pada titik 35 atau Bulan November 2023.
data.train <- ts(data2[1:12])
data.test <- ts(data2[13:24], start = 13)
data.valid <- ts(data2[25:36], start = 25)
#Time Series Data
training.ts<-ts(data.train)
testing.ts<-ts(data.test)
valid.ts<-ts(data.valid)
ts.plot(data.ts, xlab = "Bulan", ylab ="Rata-rata suhu (celcius)",
main = "Rata-Rata Suhu Minimum dalam Rentang 36 Bulan")
lines(data.train, col = "red")
lines(data.test, col="yellow")
lines(data.valid, col="green")
points(data.ts, col = "blue")
abline(v=13, col=c("black"), lty=2, lwd=0.1)
abline(v=25, col=c("black"), lty=2, lwd=0.1)
Visualisasi deret waktu atau time series ini merupakan modifikasi dari visualisasi time series sebelumnya. Visualisasi ini juga menampilkan trend rata-rata suhu minimum di Indonesia dalam kurun waktu 36 bulan, dengan data yang digunakan merupakan data rata-rata suhu minimun selama 36 bulan atau 3 tahun terhitung dari Bulan Januari tahun 2021 sampai dengan Bulan Desember tahun 2023. Points atau titik lingkaran yang diberi warna biru menunjukkan titik nilai suhu. Pada Visualisasi ini, terdapat tiga warna garis yang mana masing-masing warna mewakili masing-masih tahun, seperti merah untuk tahun 2021, kuning untuk tahun 2022, serta hijau untuk tahun 2023. Pada garis atau line tiga warna berwarna, terdapat garis pembatas atau abline. Fungsi dari abline ini adalah untuk membatasi data setiap tahunnya agar lebih mudah untuk dibaca oleh audiens. Abline ini diberi warna hitam (black), dengan lty=2 atau garis putus-putus, dan lwd=0.1 atau ukuran garis diatur sebesar 0.1. Pada visualisasi time series tersebut, dapat dilihat bahwa rata-rata suhu minimum relatif naik turun dan tidak konstan pada rentang waktu 36 bulan. Pada visualisasi sebelumnya diketahui terdapat suhu terendah dan tertinggi, kemudian pada visualisasi ini kita dapat dengan mudah melihat suhu terendah terjadi pada tahun 2021 yang diwakili oleh warna merah dengan suhu di bawah 20.5 °C, serta suhu tertinggi terjadi pada tahun 2023 yang diwakili oleh warna hijau dengan suhu di atas 22.5 °C. Terdapat kenaikan rata-rata suhu secara berkelanjutan (kurun waktu 2 bulan) yaitu pada Bulan Agustus sampai Bulan Oktober 2021, serta pada Bulan September sampai Bulan November 2023.
dataworld <- map_data("world")
data3 <- read.csv("C:/Users/ASUS/Documents/Nita/SEMESTER 4/Visdat/PRAKTIKUM 8, 9, 10/world_population.csv",header = TRUE, sep=",")
data3 <- data3 %>% rename(region = CountryOrTerritory)
data4 <- left_join(dataworld, data3, by = "region")
data4_vac <- data4 %>% filter(!is.na(population))
head (data4_vac)
## long lat group order region subregion Rank CCA3 Capital
## 1 -69.89912 12.45200 1 1 Aruba <NA> 198 ABW Oranjestad
## 2 -69.89571 12.42300 1 2 Aruba <NA> 198 ABW Oranjestad
## 3 -69.94219 12.43853 1 3 Aruba <NA> 198 ABW Oranjestad
## 4 -70.00415 12.50049 1 4 Aruba <NA> 198 ABW Oranjestad
## 5 -70.06612 12.54697 1 5 Aruba <NA> 198 ABW Oranjestad
## 6 -70.05088 12.59707 1 6 Aruba <NA> 198 ABW Oranjestad
## Continent population X2020.Population X2015.Population X2010.Population
## 1 North America 106445 106585 104257 100341
## 2 North America 106445 106585 104257 100341
## 3 North America 106445 106585 104257 100341
## 4 North America 106445 106585 104257 100341
## 5 North America 106445 106585 104257 100341
## 6 North America 106445 106585 104257 100341
## X2000.Population X1990.Population X1980.Population X1970.Population
## 1 89101 65712 62267 59106
## 2 89101 65712 62267 59106
## 3 89101 65712 62267 59106
## 4 89101 65712 62267 59106
## 5 89101 65712 62267 59106
## 6 89101 65712 62267 59106
## Area..km.. Density..per.km.. Growth.Rate World.Population.Percentage
## 1 180 591.3611 0.9991 0
## 2 180 591.3611 0.9991 0
## 3 180 591.3611 0.9991 0
## 4 180 591.3611 0.9991 0
## 5 180 591.3611 0.9991 0
## 6 180 591.3611 0.9991 0
ggplot(data4_vac, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = population), color = "black") +
scale_fill_gradient(name = "population", low = "lightgreen", high = "darkgreen", na.value = "yellow") +
labs(title = "Population Distribution") +
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())
Visualisasi geospasial ini menampilkan visualisasi sebaran populasi penduduk di dunia pada tahun 2022. Warna pada plot tersebut menunjukkan banyaknya populasi dari wilayah tersebut. Warna yang digunakan adalah warna hijau dengan semakin pekat warna hijaunya menunjukkan populasi yang semakin banyak, begitu pula sebaliknya.