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.