Visualisasi Antar 2 Peubah Numerik
Plot Korelasi Antar 2 Peubah Visualisasi 1
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.3.3
library(GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
data_pdrb <- read_xlsx("D:/Kuliah/SEMESTER 4/Analisis Regresi/Tugas/Kuliah/Data ANREG Kelompok 7 UAS.xlsx")
Y <- data_pdrb$PDRB
X0 <- rep(1,27)
X1 <- data_pdrb$`Balita Stunting (Orang)`
X2 <- data_pdrb$`Akses Sanitasi Layak`
X3 <- data_pdrb$`Usia Harapan Hidup`
X4 <- data_pdrb$`Rata-rata Lama Sekolah`
X5 <- data_pdrb$`Pengeluaran per Kapita`
X6 <- data_pdrb$`Jumlah Angkatan Kerja`
X7 <- data_pdrb$`Partisipasi Angkatan Kerja (Persen)`
X8 <- data_pdrb$`Tingkat Pengangguran Terbuka (Persen)`
dt<-data.frame(Y,X1,X2,X3,X4,X5,X6,X7,X8)
library(ggcorrplot)
reduced_data <- dt[, !names(dt) %in% c("Y")]
# Compute correlation at 2 decimal places
corr_matrix = round(cor(reduced_data), 2)
# Compute and show the result
ggcorrplot(corr_matrix, hc.order = TRUE, type = "lower",
lab = TRUE)
Visualisasi 2
library(RColorBrewer)
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.92 loaded
M <-cor(dt)
corrplot(M, type="upper", order="hclust",
col=brewer.pal(n=8, name="RdYlBu"))
Peubah-peubah yang memiliki korelasi yang relatif tinggi adalah antara peubah “Pengeluaran Per Kapita” (X5) dengan “Usia Harapan Hidup” (X3), peubah “Rata-rata Lama Sekolah” (X4) dengan “Usia Harapan Hidup” (X3), serta “Pengeluaran Per Kapita” (X5) dengan “Rata-rata Lama Sekolah” (X4) hal ini ditandai dengan semakin pekatnya warna maka korelasinya akan mendekati satu, yang artinya ada hubungan yang sangat erat antara kedua peubah tersebut. Yang membedakan pada Visualisasi 2 yaitu tinggi rendahnya korelasi dapat diukur dari ukuran gambar lingkaran yang terisi pada masing-masing korelasi antar peubah
Visualisasi 3
y.bar <- mean(Y)
interactive.plot <- ggplot(dt) +
geom_point(aes(x = X6,y = Y),color="coral",shape=8, size=1) +
geom_smooth(aes(x = X6, y = Y), method = "lm", se = FALSE, color = "cornsilk3") +
ggtitle("Y vs X6") +
ylab("Y") +
xlab("X6") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5))
ggplotly(interactive.plot)
## `geom_smooth()` using formula = 'y ~ x'
Dari visualisasi 3, terlihat bahwa antara nilai PDRB atas harga konstan dengan jumlah angkatan kerja cenderung tidak berdistribusi normal, dan belum menunjukkan hubungan yang cukup linear. Ini terlihat dari sebarannya yang tidak terkumpul pada satu garis. Sebaran data respon tersebut menggambarkan bahwa semakin tinggi jumlah angkatan kerja, semakin tinggi PDRB atas harga konstannya. Plot antara nilai PDRB atas harga konstan dengan partisipasi angkatan kerja memiliki korelasi yang positif.
Bubble Scatter Plot/Bubble Chart
library(plotly)
databubble <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
databubble
## School Women Men Gap
## 1 MIT 94 152 58
## 2 Stanford 96 151 55
## 3 Harvard 112 165 53
## 4 U.Penn 92 141 49
## 5 Princeton 90 137 47
## 6 Chicago 78 118 40
## 7 Georgetown 94 131 37
## 8 Tufts 76 112 36
## 9 Yale 79 114 35
## 10 Columbia 86 119 33
## 11 Duke 93 124 31
## 12 Dartmouth 84 114 30
## 13 NYU 67 94 27
## 14 Notre Dame 73 100 27
## 15 Cornell 80 107 27
## 16 Michigan 62 84 22
## 17 Brown 72 92 20
## 18 Berkeley 71 88 17
## 19 Emory 68 82 14
## 20 UCLA 64 78 14
## 21 SoCal 72 81 9
fig <- plot_ly(databubble, x = ~Women, y = ~Men, text = ~School, type = 'scatter', mode = 'markers',
marker = list(size = ~Gap, opacity = 0.5))
fig <- fig %>% layout(title = 'Perbedaan Penghasilan Berdasarkan Jenis Kelamin di Universitas',
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
fig
Visualisasi diatas menggambarkan perbandingan dua peubah numerik yaitu pendapatan (US Dollar) mahasiswa perempuan dan laki-laki dari universitas-universitas di Amerika.Adapun besar kecilnya ukuran lingkaran/bubble pada chart tersebut menggambarkan besar kecilnya selisih antara pendapatan mahasiswa perempuan dengan laki-laki, semakin besar ukuran bubblenya maka semakin besar pula selisih pendapatannya. Didapatkan universitas dengan selisih besar pendapatan antara mahasiswa perempuan dan laki-laki adalah MIT, dimana pendapatan mahasiswa perempuannya sebesar 94 US Dollar sedangkan mahasiswa laki-lakinya sebesar 152 US Dollar, dengan selisih nya sebesar 58 US Dollar.
Visualisasi Time Series
library(readxl)
Penumpang_Kereta <- read_excel("D:/Kuliah/Lomba/jumlah penumpang krl 2015-2024.xlsx")
Data<-as.numeric(Penumpang_Kereta$Jumlah)
data_arima<-ts(Data, start=c(2015,1), frequency = 12)
data1 <- as.data.frame(Penumpang_Kereta)
ggplot(data1, aes(x =data1$Waktu, y = data1$Jumlah)) + # Menentukan variabel x dan y
geom_point() + # Menambahkan layer scatterplot
labs(title = "Scatterplot", # Judul plot
x = "Tahun", # Label sumbu x
y = "Penumpang")
## Warning: Use of `data1$Waktu` is discouraged.
## ℹ Use `Waktu` instead.
## Warning: Use of `data1$Jumlah` is discouraged.
## ℹ Use `Jumlah` instead.
ggplot(data1, aes(x = data1$Waktu, y = data1$Jumlah)) +
geom_point() +
geom_line() +
labs(title = "Jumlah Penumpang KRL",
x = "Tahun",
y = "Penumpang")
## Warning: Use of `data1$Waktu` is discouraged.
## ℹ Use `Waktu` instead.
## Use of `data1$Jumlah` is discouraged.
## ℹ Use `Jumlah` instead.
## Warning: Use of `data1$Waktu` is discouraged.
## ℹ Use `Waktu` instead.
## Warning: Use of `data1$Jumlah` is discouraged.
## ℹ Use `Jumlah` instead.
ggplot(data1, aes(x = data1$Waktu, y = data1$Jumlah)) +
geom_line() +
labs(title = "Jumlah Penumpang KRL",
x = "Tahun",
y = "Penumpang")
## Warning: Use of `data1$Waktu` is discouraged.
## ℹ Use `Waktu` instead.
## Use of `data1$Jumlah` is discouraged.
## ℹ Use `Jumlah` instead.
Dapat diketahui dari visualisasi time series tersebut bahwasannya jumlah penumpang KRL Jabodetabek pada tahun 2016 hingga 2020 mengalami kenaikan, namun grafik langsung menurun selama tahun 2020 yang diakibatkan oleh pandemi COVID-19, lalu naik kembali saat New Normal pada tahun 2021 hingga sekarang.
Visualisasi Geospasial
dataBogor <- rio::import("https://raw.githubusercontent.com/farhanabdillahh/Regresi-Spasial/main/Data/Data_KabBogor.csv")
head(dataBogor)
## Kabupaten Kecamatan Jumlah Penduduk Kepadatan Penduduk
## 1 Kabupaten Bogor Nanggung 99812 627
## 2 Kabupaten Bogor Leuwiliang 125552 1379
## 3 Kabupaten Bogor Leuwisadeng 77871 2200
## 4 Kabupaten Bogor Pamijahan 159236 1275
## 5 Kabupaten Bogor Cibungbulang 147554 3838
## 6 Kabupaten Bogor Ciampea 170206 5152
## Jumlah Desa dan Kelurahan Kode BPS Kode Kemendagri
## 1 11 ID3201010 32.01.21
## 2 11 ID3201020 32.01.14
## 3 8 ID3201021 32.01.39
## 4 15 ID3201030 32.01.17
## 5 15 ID3201040 32.01.16
## 6 13 ID3201050 32.01.15
library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
map_indonesia <- st_read("D:/Kuliah/SEMESTER 4/Visualisasi Data/idn_admbnda_adm3_bps_20200401.shp", quiet = TRUE)
glimpse(map_indonesia)
## Rows: 7,069
## Columns: 17
## $ Shape_Leng <dbl> 0.2798656, 0.7514001, 0.6900061, 0.6483629, 0.2437073, 1.35…
## $ Shape_Area <dbl> 0.003107633, 0.016925540, 0.024636382, 0.010761277, 0.00116…
## $ ADM3_EN <chr> "2 X 11 Enam Lingkung", "2 X 11 Kayu Tanam", "Abab", "Abang…
## $ ADM3_PCODE <chr> "ID1306050", "ID1306052", "ID1612030", "ID5107050", "ID7471…
## $ ADM3_REF <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM3ALT1EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM3ALT2EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ADM2_EN <chr> "Padang Pariaman", "Padang Pariaman", "Penukal Abab Lematan…
## $ ADM2_PCODE <chr> "ID1306", "ID1306", "ID1612", "ID5107", "ID7471", "ID9432",…
## $ ADM1_EN <chr> "Sumatera Barat", "Sumatera Barat", "Sumatera Selatan", "Ba…
## $ ADM1_PCODE <chr> "ID13", "ID13", "ID16", "ID51", "ID74", "ID94", "ID94", "ID…
## $ ADM0_EN <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia", "Indone…
## $ ADM0_PCODE <chr> "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID", "ID",…
## $ date <date> 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20…
## $ validOn <date> 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01…
## $ validTo <date> -001-11-30, -001-11-30, -001-11-30, -001-11-30, -001-11-30…
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((100.2811 -0..., MULTIPOLYGON (…
mapBogor<- map_indonesia %>%
inner_join(dataBogor, by = c("ADM3_PCODE" = "Kode BPS"))
mapBogor
## Simple feature collection with 40 features and 22 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 106.4011 ymin: -6.788518 xmax: 107.2271 ymax: -6.302208
## Geodetic CRS: WGS 84
## First 10 features:
## Shape_Leng Shape_Area ADM3_EN ADM3_PCODE ADM3_REF ADM3ALT1EN
## 1 0.6791951 0.007535315 Babakan Madang ID3201140 <NA> <NA>
## 2 0.4109147 0.002394834 Bojong Gede ID3201220 <NA> <NA>
## 3 0.4390580 0.006390267 Caringin ID3201090 <NA> <NA>
## 4 0.5102952 0.006965585 Cariu ID3201160 <NA> <NA>
## 5 0.3901340 0.002740696 Ciampea ID3201050 <NA> <NA>
## 6 0.5133915 0.003848443 Ciawi ID3201100 <NA> <NA>
## 7 0.4949861 0.003834621 Cibinong ID3201210 <NA> <NA>
## 8 0.4685690 0.003125296 Cibungbulang ID3201040 <NA> <NA>
## 9 0.5020473 0.003757531 Cigombong ID3201081 <NA> <NA>
## 10 0.6194730 0.014518762 Cigudeg ID3201270 <NA> <NA>
## ADM3ALT2EN ADM2_EN ADM2_PCODE ADM1_EN ADM1_PCODE ADM0_EN ADM0_PCODE
## 1 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 2 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 3 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 4 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 5 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 6 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 7 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 8 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 9 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## 10 <NA> Bogor ID3201 Jawa Barat ID32 Indonesia ID
## date validOn validTo Kabupaten Kecamatan
## 1 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Babakan Madang
## 2 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Bojong Gede
## 3 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Caringin
## 4 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Cariu
## 5 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Ciampea
## 6 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Ciawi
## 7 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Cibinong
## 8 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Cibungbulang
## 9 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Cigombong
## 10 2019-12-20 2020-04-01 -001-11-30 Kabupaten Bogor Cigudeg
## Jumlah Penduduk Kepadatan Penduduk Jumlah Desa dan Kelurahan Kode Kemendagri
## 1 115575 2641 9 32.01.05
## 2 292465 10320 9 32.01.13
## 3 132480 2809 12 32.01.27
## 4 52063 306 10 32.01.08
## 5 170206 5152 13 32.01.15
## 6 115816 1493 13 32.01.24
## 7 366403 7859 13 32.01.01
## 8 147554 3838 15 32.01.16
## 9 98388 1024 9 32.01.38
## 10 135373 762 15 32.01.22
## geometry
## 1 MULTIPOLYGON (((106.8504 -6...
## 2 MULTIPOLYGON (((106.7707 -6...
## 3 MULTIPOLYGON (((106.8212 -6...
## 4 MULTIPOLYGON (((107.132 -6....
## 5 MULTIPOLYGON (((106.696 -6....
## 6 MULTIPOLYGON (((106.8468 -6...
## 7 MULTIPOLYGON (((106.8519 -6...
## 8 MULTIPOLYGON (((106.6935 -6...
## 9 MULTIPOLYGON (((106.8161 -6...
## 10 MULTIPOLYGON (((106.5647 -6...
library(ggplot2)
DesaKelurahan <- ggplot() +
geom_sf(data=mapBogor, aes(fill=`Jumlah Desa dan Kelurahan`))
DesaKelurahan
colorPalette = RColorBrewer::brewer.pal(5,"RdYlBu")
DesaKelurahan + scale_fill_gradientn(colors = colorPalette,
name = "Jumlah Desa/Kelurahan") +
labs(title = "Jumlah Desa/Kelurahan di Kabupaten Bogor") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold'))
Visualisasi Geospasial tersebut menyakian sebaran jumlah desa/kelurahan yang ada di Kota Bogor. Pada visualisasi pertama dapat diketahui bahwa Semakin pekat atau semakin gelap warna yang ada skala jumlah menandakan semakin sedikit jumlah desa/kelurahan yang terdapat pada daerah tersebut. Hal ini mungkin membuat rancu bagi para pembaca karena pemilihan warna dan garis/outline yang kurang kontras atau tidak signifikan berbeda, sehingga disajikan lagi visualisasi kedua dengan warna yang lebih kontrans yaitu perpaduan antara warna merah, kuning, hingga ke biru. Dari visualisasi geospasial tersebut dapat diketahui daerah dengan jumlah desa/kelurahan paling sedikit ada pada Kecamatan Tajurhalang, Kecamatan Ranca Bungur, dan Kecamatan Tenjolaya dengan warna yang paling gelap.