Inisialisasi Library

devtools::install_github("rasyidstat/indonesia")
## Skipping install of 'indonesia' from a github remote, the SHA1 (5005a6dc) has not changed since last install.
##   Use `force = TRUE` to force installation
library(indonesia)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'stringr' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── 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(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)
library(readxl)
library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.3.3
library("rnaturalearth")
## Warning: package 'rnaturalearth' was built under R version 4.3.3
library("rnaturalearthdata")
## Warning: package 'rnaturalearthdata' was built under R version 4.3.3
## 
## Attaching package: 'rnaturalearthdata'
## 
## The following object is masked from 'package:rnaturalearth':
## 
##     countries110
library(ggspatial)
## Warning: package 'ggspatial' was built under R version 4.3.3
library(reshape2)
## 
## Attaching package: 'reshape2'
## 
## The following object is masked from 'package:tidyr':
## 
##     smiths
library(ggforce)
## Warning: package 'ggforce' was built under R version 4.3.3
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     combine
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.2
## 
## 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(viridisLite)

Import Data

data <- read_excel("C:/Users/Alista/Documents/Semester 4/RANCOB/Data PDRB.xlsx")
head(data)
## # A tibble: 6 × 14
##   Kota        `Laju PDRB`    PDRB `Kepadatan Penduduk`   UMR `Balita Stunting`
##   <chr>             <dbl>   <dbl>                <dbl> <dbl>             <dbl>
## 1 Bogor              5.25 167966.                 1830 4217.             18666
## 2 Sukabumi           5.12  50389.                  663 3125.             10231
## 3 Cianjur            5.04  34556.                  690 2700.              6871
## 4 Bandung            5.35  88438.                 2130 3242.             21018
## 5 Garut              5.08  42013.                  890 1975.             30266
## 6 Tasikmalaya        4.7   26362.                  717 2327.             14122
## # ℹ 8 more variables: `Akses Sanitasi Layak` <dbl>, `Usia Harapan Hidup` <dbl>,
## #   `Rata-rata Lama Sekolah` <dbl>, `Pengeluaran per Kapita` <dbl>,
## #   `Jumlah Angkatan Kerja` <dbl>, `Jumlah Penduduk yang Bekerja` <dbl>,
## #   `Partisipasi Angkatan Kerja` <dbl>, `Tingkat Pengangguran Terbuka` <dbl>
dataGS <- read_excel("C:/Users/Alista/Documents/Semester 4/RANCOB/Data Geospasial Jawa Barat.xlsx")
head(dataGS)
## # A tibble: 6 × 2
##   Kota         Jumlah
##   <chr>         <dbl>
## 1 Bandung     1808799
## 2 Kota Banjar   94831
## 3 Bekasi      2006507
## 4 Bogor       2897332
## 5 Ciamis       664523
## 6 Cianjur     1222589
data1 <- subset(data, select = -c(`Kota`))
data1[] <- lapply(data1, as.numeric)
head(data1)
## # A tibble: 6 × 13
##   `Laju PDRB`    PDRB `Kepadatan Penduduk`   UMR `Balita Stunting`
##         <dbl>   <dbl>                <dbl> <dbl>             <dbl>
## 1        5.25 167966.                 1830 4217.             18666
## 2        5.12  50389.                  663 3125.             10231
## 3        5.04  34556.                  690 2700.              6871
## 4        5.35  88438.                 2130 3242.             21018
## 5        5.08  42013.                  890 1975.             30266
## 6        4.7   26362.                  717 2327.             14122
## # ℹ 8 more variables: `Akses Sanitasi Layak` <dbl>, `Usia Harapan Hidup` <dbl>,
## #   `Rata-rata Lama Sekolah` <dbl>, `Pengeluaran per Kapita` <dbl>,
## #   `Jumlah Angkatan Kerja` <dbl>, `Jumlah Penduduk yang Bekerja` <dbl>,
## #   `Partisipasi Angkatan Kerja` <dbl>, `Tingkat Pengangguran Terbuka` <dbl>
data2 <- data.frame(read.csv("C:/Users/Alista/Downloads/GOOG.csv", header = TRUE, sep =";"))
head(data2)
##         Date    Open    High     Low   Close     Adj  Close.1
## 1 2019-04-17 61.6500 62.0280 61.3910 61.8170 61.8170 24438000
## 2 2019-04-18 61.9590 62.1000 61.7305 61.8185 61.8185 26636000
## 3 2019-04-22 61.7995 62.4545 61.4155 62.4420 62.4420 16146000
## 4 2019-04-23 62.5345 63.4500 62.3190 63.2275 63.2275 26398000
## 5 2019-04-24 63.2060 63.4005 62.7500 62.8000 62.8000 20376000
## 6 2019-04-25 63.2385 63.3704 62.6015 63.1725 63.1725 22146000

Data Peubah Numerik

plot_X1 <- ggplot(data, aes(x = UMR, y = PDRB)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE) + 
  labs(x = "UMR (Ribu Rupiah)", y = "PDRB (Triliyun RUpiah)")

plot_X2 <- ggplot(data, aes(x = `Pengeluaran per Kapita`, y = PDRB)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE) + 
  labs(x = "Pengeluaran per Kapita (Ribu Rupiah)", y = "PDRB (Triliyun RUpiah)")

plot_X3 <- ggplot(data, aes(x = `Jumlah Penduduk yang Bekerja`, y = PDRB)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE) + 
  labs(x = "Jumlah Penduduk yang Bekerja (Jiwa)", y = "PDRB")

plot_X4 <- ggplot(data, aes(x = `Jumlah Angkatan Kerja`, y = PDRB)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE) + 
  labs(x = "Jumlah Angkatan Kerja (Jiwa)", y = "PDRB (Triliyun RUpiah)")

# Menggabungkan scatter plot ke dalam satu layout
grid.arrange(plot_X1, plot_X2, plot_X3, plot_X4, nrow = 2)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

Plot masing-masing nilai PDRB Atas Harga Konstan dengan UMR, Pengeluaran per Kapita, Jumlah Penduduk yang Bekerja, atau Jumlah Angkatan Kerja keempatnya mengindikasikan bahwa data cenderung tidak berdistribusi normal, hal ini ditunjukkan dari sebaran data yang jauh dari garis. Hubungan linier yang ditunjukkan dari plot cenderung mengindikasikan adanya hubungan linier yang positif terhadap nilai PDRB Atas Harga Konstan, hal ini dikarenakan keempat plot menggambarkan garis yang berkorelasi positif. Hubungan linier yang cenderung positif ini dapat diartikan bahwa semakin tinggi nilai UMR, Pengeluaran per Kapita, Jumlah Penduduk yang Bekerja, atau Jumlah Angkatan Kerja maka akan mengakibatkan semakin tingginya nilai PDRB atas Harga Konstan

data$kategori <- ifelse(data$`Kepadatan Penduduk` >= 2500, "Padat Penduduk", "Tidak Padat Penduduk")

ggplot(data, aes(x = `UMR`, y = PDRB, color = kategori)) +
  geom_point() +
  labs(title = "Scatter Plot Nilai PDRB vs. Upah Minimum", x = "UMR", y = "PDRB", color = "Kategori") +
  theme_minimal()

Scatter plot di atas mengindikasikan bahwa daerah dengan kepadatan penduduk yang lebih tinggi cenderung memiliki nilai PDRB yang lebih besar dan memiliki nilai Upah Miminum masyarakatnya yang lebih besar jika dibandingkan dengan daerah dengan tingkat kepadatan yang lebih rendah. Scatter plot di atas juga menggambarkan bahwa nilai Upah Minimum yang lebih tinggi mengakibatkan nilai PDRB yang lebih besar sehingga hubungan yang dimiliki antar keduanya merupakan hubungan linier yang berkorelasi positif.

Plot Matriks

data_numerik <- select_if(data1, is.numeric)
str(data_numerik)
## tibble [27 × 13] (S3: tbl_df/tbl/data.frame)
##  $ Laju PDRB                   : num [1:27] 5.25 5.12 5.04 5.35 5.08 4.7 5.02 5.53 4.09 6.63 ...
##  $ PDRB                        : num [1:27] 167966 50389 34556 88438 42013 ...
##  $ Kepadatan Penduduk          : num [1:27] 1830 663 690 2130 890 ...
##  $ UMR                         : num [1:27] 4217 3125 2700 3242 1975 ...
##  $ Balita Stunting             : num [1:27] 18666 10231 6871 21018 30266 ...
##  $ Akses Sanitasi Layak        : num [1:27] 73.5 63.3 61.8 70.8 51.9 ...
##  $ Usia Harapan Hidup          : num [1:27] 71.7 71.5 70.6 74 71.8 ...
##  $ Rata-rata Lama Sekolah      : num [1:27] 8.34 7.11 7.2 9.08 7.83 7.73 8 7.88 7.4 7.49 ...
##  $ Pengeluaran per Kapita      : num [1:27] 10860 9210 8244 10588 8227 ...
##  $ Jumlah Angkatan Kerja       : num [1:27] 2897332 1313905 1222589 1808799 1330353 ...
##  $ Jumlah Penduduk yang Bekerja: num [1:27] 2589167 1211763 1119786 1682510 1229218 ...
##  $ Partisipasi Angkatan Kerja  : num [1:27] 63.8 69.1 70 63.6 68.8 ...
##  $ Tingkat Pengangguran Terbuka: num [1:27] 10.64 7.77 8.41 6.98 7.6 ...
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() +
  labs(title = "Correlation Heatmap",
       x = "Variabel 1",
       y = "Variabel 2")

data_corrl <- round(cor(data_numerik), 1)

data_corrl <- cor(data_corrl)
ggcorrplot(data_corrl)

Dari plot matriks korelasi yang telah dibangun tidak mengindikasikan adanya multikoliniearitas antar peubah penjelas. Hal ini ditunjukkan dari intensitas warna yang ditunjukkan tidak terdapat peubah dengan warna yang sangat intens dan cenderung masih normal. Semakin gelap atau intens warna yang ditunjukkan antar peubah menggambarkan bahwa korelasi yang dimiliki semakin besar yang dapat berfungsi dalam identifikasi peubah yang tidak saling bebas. Berdasarkan matriks korelasi di atas, nilai PDRB memiliki korelasi yang tinggi dengan Pengeluaran per Kapita dan Jumlah Angkatan Kerja. Sedangkan, korelasi yang rendah pada nilai PDRB ditunjukkan pada hubungan dengan peubah Rata-rata Lama sekolah, Akses Sanitasi Layak, dan Partisipasi Angkatan Kerja yang cenderung memiliki warna lebih terang dan menuju ke spektrum violet.

Data Time Series

ggplot(data2, aes(x =Date, y = Close)) +
  geom_point() +
  scale_x_discrete(guide = guide_axis(check.overlap = TRUE))

  labs(title = "Scatter Plot of Time Series Data (GGOG)",
       x = "Date",
       y = "Value (close)")
## $x
## [1] "Date"
## 
## $y
## [1] "Value (close)"
## 
## $title
## [1] "Scatter Plot of Time Series Data (GGOG)"
## 
## attr(,"class")
## [1] "labels"
ggplot(data2, aes(x = Date, y = Close, group = 1)) +
  geom_line() +
  scale_x_discrete(guide = guide_axis(check.overlap = TRUE)) +
  labs(title = "Scatter Plot of Time Series Data (GGOG)",
       x = "Date",
       y = "Value (close)")

Time series plot saham GOOG di atas menampilkan tren yang terjadi selama 5 tahun terakhir, dimana dapat dilihat bahwa saham cenderung lebih banyak mengalami kenaikan. Adapun penurunan saham yang terjadi terdapat pada awal tahun 2020 serta pada tahun 2022 sampai 2023 kemudian mengalami kenaikan lagi pada tahun berikutnya. Hal ini menunjukkan bahwa selama 5 tahun terakhir, saham GOOG cenderung mengalami tren kenaikan berkelanjutan.

Data Geospasial

Map Sebaran Jumlah Angkatan Kerja (Ribuan) di Jawa Barat tahun 2022

indonesia_kota <- id_map("indonesia","kota")
indonesia_kota_jabar <- indonesia_kota %>% 
  filter(nama_provinsi == "Jawa Barat")
## old-style crs object detected; please recreate object with a recent sf::st_crs()
indonesia_kota_jabar$nama_kota
##  [1] Bandung          Banjar           Bekasi           Bogor           
##  [5] Ciamis           Cianjur          Cimahi           Cirebon         
##  [9] Depok            Garut            Indramayu        Karawang        
## [13] Kota Bandung     Kota Bekasi      Kota Bogor       Kota Cirebon    
## [17] Kota Sukabumi    Kota Tasikmalaya Kuningan         Majalengka      
## [21] Purwakarta       Subang           Sukabumi         Sumedang        
## [25] Tasikmalaya     
## 432 Levels: Aceh Barat Aceh Barat Daya Aceh Besar Aceh Jaya ... Yogyakarta
ggplot() + geom_sf(data = indonesia_kota_jabar, fill = "white", color = "black") +
  geom_sf(data = indonesia_kota_jabar, aes(fill = dataGS$Jumlah), color = "black") +
  scale_fill_viridis_c() + theme_void() + theme(legend.position = "right") + ggtitle("Sebaran Jumlah Angkatan Kerja di Jawa barat 2022") + theme(plot.title = element_text(face = "bold",hjust=1))

Peta geospasial di atas menggambarkan komposisi Jumlah Angkatan Kerja di Jawa Barat pada tahun 2022. Spektrum berada pada rentang biru sampai kuning, semakin gelap atau mendekati biru mencerminkan jumlah angkatan kerja yang semakin sedikit. Sebaliknya, wilayah yang cenderung memiliki warna terang mendekati kuning maka semakin banyak Jumlah Angkatan Kerja yang ada di wilayah tersebut. Wilayah dengan Jumlah Angkatan Kerja paling banyak yaitu Kabupaten Bogor sebanyak 2897332 jiwa yang merupakan angkatan kerja ditandai dengan warna kuning pada peta geospasial. WIlayah dengan jumlah angkatan kerja paling sedikit adalah Kota Banjar ditandai dengan spektrum warna yang dimiliki yaitu biru gelap. Kota Banjar hanya terdapat 94831 jiwa yang termasuk ke dalam angkatan kerja