Data1 <- read.csv(file.choose(), header=TRUE)
head(Data1)
##     EXPEND KALORI_KAP R301
## 1  4964433   2365.173    4
## 2  1633881   2611.639    2
## 3  3812219   2526.510    3
## 4 12083333   3655.855    7
## 5 51152307   2330.988    3
## 6 14672860   2330.760    2
Data2 <- read.csv(file.choose(), header = TRUE)
head(Data2)
##    X   EXPEND KALORI_KAP PROTE_KAP LEMAK_KAP KARBO_KAP       WERT      WEIND
## 1 NA  4964433   2365.173  67.13024  43.22239  352.9857 454.889101 1819.55641
## 2 NA  1633881   2611.639  69.09189  30.11824  471.9977 172.376821  344.75364
## 3 NA  3812219   2526.510  68.74262  58.51762  360.4562 241.578661  724.73598
## 4 NA 12083333   3655.855 141.50262 119.46043  454.9395  93.673563  655.71494
## 5 NA 51152307   2330.988  78.53335  53.14161  254.8461 122.217556  366.65267
## 6 NA 14672860   2330.760  68.15351  60.91893  317.6763   7.638085   15.27617
Data3 <- read.csv(file.choose(), header  = TRUE)
head(Data3)
##   Tahun Produksi_GKG Produksi_Beras Konsumsi_Beras_Perkapita Jumlah_Penduduk
## 1  1993     48129321       30812391                   111.58       190851184
## 2  1994     46598380       29832283                   111.58       193917458
## 3  1995     49697444       31816304                   111.58       196934257
## 4  1996     51048899       32681505                   111.58       199901231
## 5  1997     49339086       31586883                   111.58       202826444
## 6  1998     49236692       31521330                   111.58       205724597
##   Total_Konsumsi_Beras
## 1             21295175
## 2             21637310
## 3             21973924
## 4             22304979
## 5             22631375
## 6             22954751
Data4 <- read.csv(file.choose(), header  = TRUE)
head(Data4)
##       Country         Region Happiness.Rank Happiness.Score Standard.Error
## 1 Switzerland Western Europe              1           7.587        0.03411
## 2     Iceland Western Europe              2           7.561        0.04884
## 3     Denmark Western Europe              3           7.527        0.03328
## 4      Norway Western Europe              4           7.522        0.03880
## 5      Canada  North America              5           7.427        0.03553
## 6     Finland Western Europe              6           7.406        0.03140
##   Economy..GDP.per.Capita.  Family Health..Life.Expectancy. Freedom
## 1                  1.39651 1.34951                  0.94143 0.66557
## 2                  1.30232 1.40223                  0.94784 0.62877
## 3                  1.32548 1.36058                  0.87464 0.64938
## 4                  1.45900 1.33095                  0.88521 0.66973
## 5                  1.32629 1.32261                  0.90563 0.63297
## 6                  1.29025 1.31826                  0.88911 0.64169
##   Trust..Government.Corruption. Generosity Dystopia.Residual
## 1                       0.41978    0.29678           2.51738
## 2                       0.14145    0.43630           2.70201
## 3                       0.48357    0.34139           2.49204
## 4                       0.36503    0.34699           2.46531
## 5                       0.32957    0.45811           2.45176
## 6                       0.41372    0.23351           2.61955
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.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ 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)
## Warning: package 'reshape2' was built under R version 4.3.3
## 
## Attaching package: 'reshape2'
## 
## The following object is masked from 'package:tidyr':
## 
##     smiths
library(ggplot2)
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(ggforce)
## Warning: package 'ggforce' was built under R version 4.3.3
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(psych)
## Warning: package 'psych' was built under R version 4.3.3
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(sf)
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.3.3
## 
## Attaching package: 'gridExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     combine
library(ggspatial)
## Warning: package 'ggspatial' 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

#KORELASI (Visualisasi antar peubah numerik)- ScatterPlot- DataSusenasJabar23

ggplot(Data1, aes(x = KALORI_KAP, y = EXPEND )) +
  geom_point() +  
  labs(title = "Korelasi Kalori per Kapita dan Pengeluaran Konsumsi", x = "Kalori per kapita", y = "Pengeluaran Konsumsi") +
  theme_classic()

Visualisasi ini menunjukkan hubungan antara kalori per kapita (kal) dengan pengeluaran konsumsi masyarakat dalam satuan rupiah. Interpretasi dari visualisasi awal scatterplot ini menunjukkan bahwa : 1. Pada distribusi kalori per kapita bahwa sebagian besar data terdistribusi antara 1000 hingga 3000 kalori per kapita 2. Ada sedikit data yang menunjukkan konsumsi kalori di atas 3.000 kalori per kapita. Hubungan: 1. Hubungan tidak terlihat adanya pola yang jelas atau korelasi kuat antara kalori per kapita dengan pengeluaran konsumsi. Pengeluaran cenderung tersebar acak di berbagai level kalori. 2. Beberapa pengeluaran konsumsi yang tinggi terjadi pada tingkat kalori yang beragam baik rendah maupun tinggi.

Data1$kategori_DesaKota <- ifelse(Data1$R301 >= 4, "≥ 4", "≤ 4")
ggplot(Data1, aes(x = KALORI_KAP, y = EXPEND, color = factor(kategori_DesaKota))) +
  geom_point() +
  scale_color_manual(values = c("#074173", "#FFC700")) + 
  labs(title = "Korelasi Kalori Per Kapita dan Pengeluaran Konsumsi Masyarakat",
       x = "Kalori Per Kapita (Kal)", y = "Pengeluaran Konsumsi(Rp)", color = "Jumlah anggota keluarga") +
  theme_minimal()

ggplot(Data1, aes(x = KALORI_KAP, y = EXPEND, color = factor(kategori_DesaKota))) +
  geom_point() +
  scale_color_manual(values = c("#074173", "#FFC700")) +
  labs(title = "Korelasi Pengeluaran dan Kalori Per anggota Keluarga", x = "Kalori(Kal)", y = "Pengeluaran konsumsi(Rp)", color = "Jumlah anggota keluarga") +
  facet_wrap(~ kategori_DesaKota) +
  theme_minimal()

Interpretasi:

Dari visualisasi ini terdapat dua interpretasi yang dapaat ditentukan yaitu : Perbandingan berdasarkan Jumlah Anggota Keluarga: 1. Titik-titik berwarna kuning (keluarga dengan anggota ≥ 4) cenderung lebih banyak tersebar, terutama pada tingkat kalori menengah (sekitar 1500-2500 kalori) dan pengeluaran rendah hingga menengah. 2. Titik-titik berwarna biru (keluarga dengan anggota ≤ 4) cenderung lebih terkonsentrasi di sekitar kalori per kapita yang lebih rendah (sekitar 1000-2000 kalori), dengan beberapa outlier pada pengeluaran tinggi.

Outlier: 1. Beberapa outlier menunjukkan pengeluaran konsumsi yang sangat tinggi (>2e+08) pada kalori per kapita yang beragam, menunjukkan bahwa ada beberapa keluarga yang mengeluarkan banyak uang untuk konsumsi meskipun jumlah kalori yang dikonsumsi tidak terlalu tinggi atau sebaliknya.

#KORELASI- HeatMap (Data susenasJawaBarat)

library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.3.3
data_numerik <- select_if(Data2, is.numeric)
str(data_numerik)
## 'data.frame':    25890 obs. of  7 variables:
##  $ EXPEND    : num  4964433 1633881 3812219 12083333 51152307 ...
##  $ KALORI_KAP: num  2365 2612 2527 3656 2331 ...
##  $ PROTE_KAP : num  67.1 69.1 68.7 141.5 78.5 ...
##  $ LEMAK_KAP : num  43.2 30.1 58.5 119.5 53.1 ...
##  $ KARBO_KAP : num  353 472 360 455 255 ...
##  $ WERT      : num  454.9 172.4 241.6 93.7 122.2 ...
##  $ WEIND     : num  1820 345 725 656 367 ...
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 = "Variable 1",
       y = "Variable 2")

ggplot(data_melt, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "white") +
  scale_fill_gradient2(low = "#32012F", mid = "white", high = "#F97300", 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))

Interpretasi:

Dari Hasil corellogram yang dibuat dapat diinterpretasikan beberapa hal terutama dalam hal korelasi yaitu sebagai berikut: Korelasi yang Paling Menonjol: KARBO_KAP dengan KALORI_KAP memiliki Korelasi positif yang sangat kuat (mendekati 1). Ini menunjukkan bahwa konsumsi karbohidrat berkorelasi sangat erat dengan total kalori per kapita. LEMAK_KAP dengan KALORI_KAP memiliki Korelasi positif yang kuat. Lemak juga berkontribusi signifikan terhadap total kalori. PROTE_KAP dengan KALORI_KAP MemilikiKorelasi positif yang cukup kuat. Protein juga berkontribusi terhadap total kalori, meskipun tidak sekuat karbohidrat dan lemak.

Korelasi Pengeluaran (EXPND): EXPND dengan KALORI_KAP, PROTE_KAP, LEMAK_KAP, KARBO_KAP: Korelasi positif yang moderat hingga kuat. Pengeluaran berkorelasi dengan konsumsi kalori, protein, lemak, dan karbohidrat, menunjukkan bahwa peningkatan pengeluaran biasanya terkait dengan peningkatan asupan nutrisi. EXPND dengan WERT dan WEIND: Korelasi positif, tetapi lebih lemah dibandingkan dengan korelasi dengan variabel gizi.

#Visualisasi untuk time series- DataKetahananPangan Beras Indonesia (1993-2018)

generate_random_walk <- function(n, start = 0, sd = 1) {
  steps <- rnorm(n, mean = 0, sd = sd)
  walk <- cumsum(steps) + start
  return(walk)
}

# Create the time series data using random walk
set.seed(123)
dates <- seq(as.Date("2020-01-01"), by = "month", length.out = 600)
values <- generate_random_walk(600, start = 100, sd = 10)
time_series_data <- Data3
scale_x_continuous(breaks=unique(time_series_data$Tahun))
## <ScaleContinuousPosition>
##  Range:  
##  Limits:    0 --    1
ggplot(time_series_data, aes(x = Tahun, y = Produksi_Beras)) +
  geom_point() +
  labs(title = "Scatter Plot Produksi Beras Indonesia ",
       x = "Tahun",
       y = "Produksi (Ton)")

ggplot(time_series_data, aes(x = Tahun, y = Produksi_Beras)) +
  geom_point() +  # Add points
  geom_line() +   # Connect points with lines
  labs(title = "Scatter Plot Produksi Beras Indonesia",
       x = "Tahun",
       y = "Produksi (Ton)")

ggplot(time_series_data, aes(x = Tahun, y = Produksi_Beras)) +
  geom_line() +
  labs(title = "Rice Production Time Series Plot",
       x = "Years",
       y = "Production (Ton)")

calculate_moving_average <- function(Data3, window_size) {
  ma_values <- zoo::rollmean(Data3$Produksi_GKG, k = window_size, align = "right", fill = NA)
  return(ma_values)
}
window_size <- 2
time_series_data$ma <- calculate_moving_average(time_series_data, window_size)

# Create the plot
ggplot(time_series_data, aes(x = Tahun)) +
  geom_line(aes(y = Produksi_GKG), color = "white", size = 1) +  
  geom_line(aes(y = ma), color = "#FF5F00", linetype = "dashed", size = 1) +  # emulusan
  geom_ribbon(aes(ymin = -Inf, ymax = ma), fill = "#002379", alpha = 0.3) +  # Area under curve
  labs(title = paste("Data time series produksi beras", window_size, ")"),
       x = "Tahun",
       y = "Produksi Beras (Ton)") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 1 row containing missing values (`geom_line()`).

Interpretasi:

Dari hasil viuasualisai time series dari data produksi beras (ton) dalam kurun waktu 1993-2018 menunjukkan bahwa secara keseluruhan, terlihat adanya peningkatan produksi beras selama periode tahun per tahun walaupun terjadinya beberapa fluktuasi keil di awal periode tahun 1993 sampai awal tahun 2000, tetapi tren secara umum dapat dikatakana adanya peningkatan yang stabil dan konsisten. Dalam atribute yang dipakai pada visualisai memiliki penanda yaitu : 1. Pada area di bawah garis produksi beras diarsir dengan warna biru, memberikan visualisasi volume produksi secara keseluruhan 2. Garis tren produksi beras berwarna oranye dengan pola garis putus-putus, yang membantu menekankan tren naik dari waktu ke waktu.

#Visualisasi Data Spasial `

dataworld <- map_data("world") 

Pada visualisasi ini saya mengambil data set yang tersedia gratis oleh github yaitu tingkat skor kebahagiaan yang dimiliki masing-masing negara. Disini saya akan menampilkan visualisasi geospasial berdasarkan masing-masing negara dengan acuan data world.

Data5 <- Data4[,c(1,4)]
colnames(Data5)<- c("region", "happiness_score")
head(Data5)
##        region happiness_score
## 1 Switzerland           7.587
## 2     Iceland           7.561
## 3     Denmark           7.527
## 4      Norway           7.522
## 5      Canada           7.427
## 6     Finland           7.406
#memfilter data berdasarkan Hapiness score serta menggabungkan dataworld dengan data5 sehingga akan terlihat titik koordinat dan oordinat.
DataHP <- left_join(dataworld, Data5, by="region")
DataLast <- DataHP %>%  filter(!is.na(DataHP$happiness_score))
head(DataLast)
##       long      lat group order      region subregion happiness_score
## 1 74.89131 37.23164     2    12 Afghanistan      <NA>           3.575
## 2 74.84023 37.22505     2    13 Afghanistan      <NA>           3.575
## 3 74.76738 37.24917     2    14 Afghanistan      <NA>           3.575
## 4 74.73896 37.28564     2    15 Afghanistan      <NA>           3.575
## 5 74.72666 37.29072     2    16 Afghanistan      <NA>           3.575
## 6 74.66895 37.26670     2    17 Afghanistan      <NA>           3.575
#Visualisasi
ggplot(DataLast, aes( x = long, y = lat, group=group)) +
  geom_polygon(aes(fill = happiness_score), color = "black")+ 
  scale_fill_gradient(name = "% happiness score", low = "#E6FF94", high =  "#006769", na.value = "#40A578")+
  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())

Interpretasi:

interpretasi dari hasil visualisasi geospasial:

Dari hasil visualisasi dapat kita melihat secara lebih mudah terkait persebaran tingkat kebahagiaan di beberapa negara di seluruh dunia. indikator warna menjadi acuan dalam menilai skor kebahagiaan masing-masing negara dimana semakin gelap warna yang didapat di suatu negara maka memiliki tingkat kebahagiaan yang tinggi hingga pada skore 7% dan sebaliknya semakin muda dan terang warna yang didapat maka tingkat kebahagiaan itu menunjukkan skor yang rendah hingga 3%. atau secara spesifik sebagai berikut:

  1. Hijau Terang: Menunjukkan skor kebahagiaan yang lebih rendah, sekitar 3-4
  2. Hijau Sedang: Menunjukkan skor kebahagiaan sedang, sekitar 5
  3. Hijau Gelap: Menunjukkan skor kebahagiaan yang lebih tinggi, sekitar 6-7

Dari sini maka dapat dilihat sebagai berikut: 1. Amerika utara memiliki skor kebahagiaan yang tinggi terutama pada negara Kanada dengan warna hijau gelap. 2. Afrika Sub Sahara dan beberapa bagian Asia Selatan menunjukkan skor kebahagiaan yang lebih rendah , dengan banyak negara didalamnya berwarna hijau terang.

Dua point tersebut dapat disimpulkan bahwa negara-negara di kawasan yang umunya dianggap lebih berkembang dan dengan standar hidup yang lebih tinggi cenderung memiliki skor kebahagiaan yang lebih tinggi seperti Eropa utara, Amerika Utara, dan Australia. Begitu juga sebaliknya, negara-negara di kawasan yang mungkin mengalami tantangan ekonomi dan sosial yang lebih besar menunjukkan skor kebahagiaan yang lebih rendah.