Prediksi Harga Emas

Pendahuluan

Latar Belakang

Saat ini, import dan eksport komoditi antar negara sudah menjadi hal yang biasa. Kebutuhan dari suatu negara, akan selalu disuplai dengan import dari negara lain. Selain melakukan import, suatu negara akan melakukan eksport juga akan komoditi andalan atau komoditi yang banyak dihasilkan di negaranya.

Komoditi-komoditi yang diperjual-belikan saat ini, terdapat beberapa yang sudah tercatat secara real-time. Dengan adanya update harga real-time dari komoditi tersebut, akan memudahkan untuk mengetahui kinerja dari komoditi tersebut.

Emas merupakan salah satu komoditi yang diperjualbelikan secara internasional. Terdapat beberapa negara penghasil emas dan terdapat beberapa negara yang memiliki tingkat konsumen akan emas yang tinggi.

Saat ini, emas banyak difungsikan salah satunya sebagai instrument investasi. Emas merupakan salah satu instrument investasi yang memiliki harga relative stabil dan cenderung naik setiap tahunnya, dimana secara historical, harga emas dalam 10 tahun terakhir telah mengalami kenaikan diatas 200%. Selain itu, harga emas tidak terpengaruh oleh inflasi atau lebih dikenal dengan zero inflation effect.

Emas memiliki likuiditas yang cukup tinggi, sehingga untuk melakukan jual-beli emas cukup mudah untuk dilakukan sewaktu-waktu. Harga dari emas sendiri ditentukan secara intenasional, sehingga harga emas tidak banyak terpengaruh dari kondisi ekonomi dan politik suatu negara. Selain itu, emas juga bisa digunakan sebagai koleksi maupun perhiasan untuk mempercantik diri.

Di Amerika Serikat, selain emas, terdapat beberapa komoditi lain yang kinerjanya tercatat secara real time, sehingga perubahan harga dari masing-masing komoditi bisa dipantau dengan mudah. Dari harga-harga komoditi yang tercatat secara real time, akan dapat dianalisis apakah harga-harga komoditi tersebut saling mempengaruhi satu sama lain atau justru tidak ada pengaruhnya sama sekali.

Analisis komoditi terhadap harga emas di Amerika Serikat akan memberikan gambaran pada para investor dan calon investor emas terhadap pengaruh harga komodisi lain terhadap harga emas, sehingga lebih mematangkan dalam pengambilan keputusan.

Business Impact

Analisis harga komoditi terhadap harga emas dapat menjadi landasan para investor emas untuk meningkatkan potensi mendapatkan keuntungan sebanyak mungkin dalam berinvestasi emas dan menentukan momen terbaik untuk menjual atau membeli emas. Selain itu, analisis harga emas dapat meningkatkan awareness para pelaku investasi emas ataupun calon investor emas terhadap pengaruh harga komoditi terhadap harga emas.

Target User

Target user dari analisis emas ini adalah para investor dan calon investor emas. Dimana dengan adanya analisis harga komoditi terhadap harga emas, akan lebih mematangkan keputusan dari para investor dan calon investor emas untuk bertansaksi emas.

Implementasi Bisnis Serupa

Setiap negara memiliki komoditi-komoditi berbeda yang diperdagangkan di negara tersebut. Analisis harga emas terhadap komoditi lain bisa diimplementasikan untuk melihat apakah investasi emas memiliki potensi yang bagus atau justru memiliki resiko yang besar dengan kondisi kinejar komoditi pada suatu negara.

Problem Scope

Pada dashboard ini akan dibuat analisis harga komoditi di Amerika Serikat terhadap harga emas. Data yang digunakan adalah data harga komoditi dari tahun 2009 sampai 2022, dimana dari masing-masing data komoditi terdapat informasi sebagai berikut: - Date: Tanggal - Price: Harga penutupan komoditi pada tanggal terkait. - Open: Harga pembukaan komoditi pada tanggal terkait. - High: Harga tertinggi komoditi pada tanggal terkait. - Low: Harga terendah komoditi pada tanggal terkait. - Vol.: Banyaknya transaks pada tanggal terkait. - Change..: Perubahan persentase harga dibandingkan harga hari sebelumnya. Dari data-data tersebut, akan diambil data Date dan Price dari setiap komoditi dan digabungkan menjadi 1 dataset. Dari dataset tersebut, akan dibuat model menggunakan Linear model dan Random Forest Reggresion untuk mengetahui pengaruh harga komoditi terhadap harga emas.

Output

  • Mengetahui pengaruh setiap komoditi terhadap harga emas.
  • Memprediksi harga emas berdasarkan harga komoditi lain.

Product Design

Pada project ini akan dibuat dashboard yang memuat model terhadap analisis harga komoditi terhadap harga emas menggunakan linear model dan random forest reggresion. Dari model yang dibuat akan dievaluasi untuk mendapatkan model terbaik untuk digunakan memprediksi harga emas.

Dalam dashboard tersebut, nantinya akan menampilkan beberapa fitur, yaitu:

  • Trend harga komoditi beserta harga terendah dan tertingginya.

  • Lineplot perbandingan tren harga emas dan komoditi lainnya.

  • Perbandingan performa model dengan data Validasi.

  • Prediksi harga emas menggunakan model dengan performa terbaik.

Import Library

library(tidyverse)
library(lubridate)
library(ggplot2)
library(padr)
library(zoo)
library(GGally)

Read Dataset

Data yang digunakan adalah harga komoditi dari tahun 2009 sampai tahun 2022 di Amerika Serikat. Harga yang dipakai, adalah harga setiap hari pada hari perdagangan yaitu senin-kamis.

gold <- read.csv("data_input/1. Data Historis Emas Berjangka.csv")
silver <- read.csv("data_input/2. Data Historis Perak Berjangka.csv")
copper <- read.csv("data_input/3. Data Historis Tembaga Berjangka.csv")
crude_oil <- read.csv("data_input/6. Data Historis Minyak Mentah WTI Berjangka.csv")
gas <- read.csv("data_input/7. Data Historis Gas Alam Berjangka.csv")
heating_oil <- read.csv("data_input/8. Data Historis Minyak Pemanas Berjangka.csv")
coffee <- read.csv("data_input/9. Data Historis Kopi C AS Berjangka.csv")
corn <- read.csv("data_input/10. Data Historis Jagung AS Berjangka.csv")
wheat <- read.csv("data_input/11. Data Historis Gandum AS Berjangka.csv")
head(gold)
#>         Date    Price     Open     High      Low    Vol. Change..
#> 1 10/21/2022 1,656.30 1,632.40 1,663.10 1,621.10            1.19%
#> 2 10/20/2022 1,636.80 1,634.60 1,650.30 1,626.30 163.73K    0.16%
#> 3 10/19/2022 1,634.20 1,657.20 1,659.80 1,632.20 179.25K   -1.30%
#> 4 10/18/2022 1,655.80 1,655.90 1,666.00 1,650.60 163.17K   -0.49%
#> 5 10/17/2022 1,664.00 1,649.90 1,674.30 1,649.10 148.89K    0.92%
#> 6 10/14/2022 1,648.90 1,672.80 1,677.80 1,645.60 183.17K   -1.68%

Dari masing-masing dataset, terdidi dari kolom-kolom yang sama, yaitu: - Date: Tanggal - Price: Harga penutupan komoditi pada tanggal terkait. - Open: Harga pembukaan komoditi pada tanggal terkait. - High: Harga tertinggi komoditi pada tanggal terkait. - Low: Harga terendah komoditi pada tanggal terkait. - Vol.: Banyaknya transaks pada tanggal terkait. - Change..: Perubahan persentase harga dibandingkan harga hari sebelumnya.

Data Preprocessing

Mengubah Tipe Data

Pada setiap dataset, terdapat beberapa kolom, akan tetapi yang akan digunakan hanya kolom Date dan Price pada setiap dataset.

Gold

glimpse(gold)
#> Rows: 3,565
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <chr> "1,656.30", "1,636.80", "1,634.20", "1,655.80", "1,664.00", "…
#> $ Open     <chr> "1,632.40", "1,634.60", "1,657.20", "1,655.90", "1,649.90", "…
#> $ High     <chr> "1,663.10", "1,650.30", "1,659.80", "1,666.00", "1,674.30", "…
#> $ Low      <chr> "1,621.10", "1,626.30", "1,632.20", "1,650.60", "1,649.10", "…
#> $ Vol.     <chr> "", "163.73K", "179.25K", "163.17K", "148.89K", "183.17K", "2…
#> $ Change.. <chr> "1.19%", "0.16%", "-1.30%", "-0.49%", "0.92%", "-1.68%", "-0.…
gold <- gold %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date)) %>% 
  mutate(Price = gsub(",", "", Price)) %>% 
  mutate(Price = as.numeric(Price))

Silver

glimpse(silver)
#> Rows: 3,573
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 19.066, 18.689, 18.359, 18.600, 18.719, 18.332, 18.071, 18.91…
#> $ Open     <dbl> 18.625, 18.405, 18.685, 18.625, 18.160, 18.163, 18.865, 19.01…
#> $ High     <dbl> 19.405, 18.960, 18.755, 18.865, 18.890, 18.337, 19.055, 19.29…
#> $ Low      <dbl> 18.205, 18.150, 18.305, 18.490, 18.155, 18.160, 18.010, 18.41…
#> $ Vol.     <chr> "", "57.78K", "36.44K", "39.82K", "52.19K", "", "69.61K", "73…
#> $ Change.. <chr> "2.02%", "1.80%", "-1.30%", "-0.64%", "2.11%", "1.44%", "-4.4…
silver <- silver %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Copper

glimpse(copper)
#> Rows: 3,537
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 3.4745, 3.4105, 3.3180, 3.3620, 3.4155, 3.4235, 3.4405, 3.425…
#> $ Open     <dbl> 3.3980, 3.3255, 3.3660, 3.4130, 3.4125, 3.4635, 3.4285, 3.424…
#> $ High     <dbl> 3.4825, 3.4370, 3.3755, 3.4355, 3.4675, 3.5010, 3.4770, 3.465…
#> $ Low      <dbl> 3.3455, 3.3030, 3.3070, 3.3390, 3.3905, 3.4005, 3.3540, 3.398…
#> $ Vol.     <chr> "", "77.24K", "65.74K", "72.59K", "56.83K", "70.50K", "85.97K…
#> $ Change.. <chr> "1.88%", "2.79%", "-1.31%", "-1.57%", "-0.23%", "-0.49%", "0.…
copper <- copper %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Crude Oil

glimpse(crude_oil)
#> Rows: 3,585
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 85.05, 85.98, 85.55, 82.82, 85.46, 85.61, 87.95, 86.06, 87.97…
#> $ Open     <dbl> 85.07, 85.94, 83.69, 85.70, 85.59, 89.27, 86.01, 87.25, 89.75…
#> $ High     <dbl> 85.90, 88.17, 86.20, 86.51, 87.12, 89.73, 88.38, 88.66, 90.15…
#> $ Low      <dbl> 83.15, 85.22, 82.59, 82.09, 84.61, 85.20, 84.43, 85.05, 86.59…
#> $ Vol.     <chr> "272.80K", "18.18K", "71.31K", "97.30K", "172.02K", "237.03K"…
#> $ Change.. <chr> "-1.08%", "0.50%", "3.30%", "-3.09%", "-0.18%", "-2.66%", "2.…
crude_oil <- crude_oil %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Natural Gas

glimpse(gas)
#> Rows: 3,584
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 4.959, 5.358, 5.462, 5.745, 5.999, 6.453, 6.741, 6.435, 6.596…
#> $ Open     <dbl> 5.322, 5.456, 5.686, 5.978, 6.263, 6.684, 6.439, 6.601, 6.512…
#> $ High     <dbl> 5.375, 5.565, 5.784, 6.095, 6.314, 6.742, 6.777, 6.803, 6.671…
#> $ Low      <dbl> 4.903, 5.253, 5.427, 5.673, 5.912, 6.409, 6.337, 6.399, 6.362…
#> $ Vol.     <chr> "101.73K", "104.22K", "107.16K", "102.09K", "132.42K", "96.73…
#> $ Change.. <chr> "-7.45%", "-1.90%", "-4.93%", "-4.23%", "-7.04%", "-4.27%", "…
gas <- gas %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Heating Oil

glimpse(heating_oil)
#> Rows: 3,613
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 3.8323, 3.7568, 3.9043, 3.9935, 4.0852, 3.9802, 4.0948, 3.932…
#> $ Open     <dbl> 3.7579, 3.8137, 3.9947, 4.1004, 3.9981, 4.0840, 3.9332, 3.903…
#> $ High     <dbl> 3.8714, 3.9603, 4.0164, 4.1535, 4.1188, 4.1042, 4.1149, 4.070…
#> $ Low      <dbl> 3.6608, 3.7186, 3.8034, 3.9624, 3.9981, 3.9126, 3.8624, 3.860…
#> $ Vol.     <chr> "33.51K", "30.29K", "37.28K", "34.93K", "36.78K", "44.33K", "…
#> $ Change.. <chr> "2.01%", "-3.78%", "-2.23%", "-2.24%", "2.64%", "-2.80%", "4.…
heating_oil <- heating_oil %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Coffee

glimpse(coffee)
#> Rows: 3,536
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 190.90, 191.05, 192.30, 195.10, 195.55, 196.70, 202.15, 209.7…
#> $ Open     <dbl> 188.70, 190.15, 195.10, 196.30, 197.50, 203.00, 209.70, 217.4…
#> $ High     <dbl> 192.55, 194.60, 196.45, 197.80, 199.70, 204.60, 210.60, 218.8…
#> $ Low      <dbl> 186.20, 188.20, 190.15, 193.20, 194.05, 195.65, 201.10, 209.2…
#> $ Vol.     <chr> "17.81K", "20.02K", "19.27K", "18.45K", "21.87K", "31.21K", "…
#> $ Change.. <chr> "-0.08%", "-0.65%", "-1.44%", "-0.23%", "-0.58%", "-2.70%", "…
coffee <- coffee %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Corn

glimpse(corn)
#> Rows: 3,528
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <dbl> 684.25, 684.00, 678.25, 681.00, 683.50, 689.75, 697.75, 693.0…
#> $ Open     <dbl> 683.50, 678.00, 681.00, 683.00, 689.00, 697.00, 692.25, 693.2…
#> $ High     <dbl> 688.00, 687.00, 684.50, 683.75, 692.25, 699.50, 699.50, 700.0…
#> $ Low      <dbl> 677.75, 676.75, 674.00, 674.50, 681.25, 688.50, 684.00, 680.0…
#> $ Vol.     <chr> "109.02K", "134.82K", "112.23K", "147.46K", "106.16K", "108.8…
#> $ Change.. <chr> "0.04%", "0.85%", "-0.40%", "-0.37%", "-0.91%", "-1.15%", "0.…
corn <- corn %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date))

Wheat

glimpse(wheat)
#> Rows: 3,659
#> Columns: 7
#> $ Date     <chr> "10/21/2022", "10/20/2022", "10/19/2022", "10/18/2022", "10/1…
#> $ Price    <chr> "850.75", "849.25", "841.25", "849.50", "861.00", "859.75", "…
#> $ Open     <chr> "850.25", "844.50", "847.00", "862.00", "860.00", "894.25", "…
#> $ High     <chr> "863.00", "855.75", "862.75", "866.00", "877.75", "898.75", "…
#> $ Low      <chr> "833.00", "836.75", "835.50", "832.75", "855.25", "857.25", "…
#> $ Vol.     <chr> "41.91K", "34.08K", "39.81K", "46.28K", "42.65K", "45.07K", "…
#> $ Change.. <chr> "0.18%", "0.95%", "-0.97%", "-1.34%", "0.15%", "-3.64%", "1.1…
wheat <- wheat %>% 
  select(Date, Price) %>% 
  mutate(Date = mdy(Date)) %>% 
  mutate(Price = gsub(",", "", Price)) %>% 
  mutate(Price = as.numeric(Price))

Mengisi Data pada Tanggal yang Kosong

Pada dimensi setiap dataset yang ada, memiliki jumlah baris yang berbeda-beda. Hal ini karena terdapat nilai yang kosong pada beberapa tanggal, maka perlu mengganti nilai pada tanggal kosong dengan nilai pada tanggal sebelumnya.

gold <- gold %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
silver <- silver %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
copper <- copper %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
crude_oil <- crude_oil %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
gas <- gas %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
heating_oil <- heating_oil %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
coffee <- coffee %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
corn <- corn %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))
wheat <- wheat %>% pad(start_val = min(gold$Date), end_val = max(gold$Date)) %>% 
  mutate(Price = na.locf(Price, fromLast = F))

dim(gold)
#> [1] 5041    2
dim(silver)
#> [1] 5041    2
dim(copper)
#> [1] 5041    2
dim(crude_oil)
#> [1] 5041    2
dim(gas)
#> [1] 5041    2
dim(heating_oil)
#> [1] 5041    2
dim(coffee)
#> [1] 5041    2
dim(corn)
#> [1] 5041    2
dim(wheat)
#> [1] 5041    2

Menggabungkan Data

Dari hasil diatas, jumlah row pada setiap dataset sudah sama, maka setiap dataset bisa digabungkan menjadi 1 dataset.

df <- data.frame(Date = gold$Date,
           Gold = gold$Price,
           Silver = silver$Price,
           Copper = copper$Price,
           Crude_oil = crude_oil$Price,
           Gas = gas$Price,
           Heating_oil = heating_oil$Price,
           Coffee = coffee$Price,
           Corn = corn$Price,
           Wheat = wheat$Price)

Exploratory Data Analysis

Cek korelasi

Dari masing-masing kolom mata uang, dicek korelasi dari masing-masing.

ggcorr(df, label = T)

Dari tabel korelasi diatas, komoditi logam memiliki korelasi yang cukup kuat terhadap harga emas, sedangkan komoditi oil & gas memiliki korelasi yang rendah terhadap harga emas.

Cek Fluktuasi Harga Komoditi dengan Lineplot

Fluktuasi trend harga komoditi bisa dilihat menggunakan lineplot. Di Amerika Serikat terjadi krisis ekonomi pada tahun 2008, sehingga data yang digunakan mulai dari tahun 2009 setelah adanya krisis tersebut. Akan tetapi pada tahun 2020 terjadi pandemi Covid-19 yang juga cukup mempengaruhi kondisi ekomoni dunia.

Lineplot Harga Gold

df %>% 
  ggplot(mapping = aes(y = Gold,
                       x = Date,
                       )) + 
  geom_line()

Harga emas sempat mencapai puncak sekitar tahun 2012, kemudian mengalami penurunan harga. Pada saat terjadi pandemi Covid-19, harga emas sempat mencapai nilai tertingginya, akan tetapi pada tahun 2022 justru mengalami penurunan.

Periode Harga Terendah dan Tertinggi

low_gold <- df %>% 
  select(Date, Gold) %>% 
  filter(Gold == min(Gold)) %>% 
  rename(price = Gold)

high_gold <- df %>% 
  select(Date, Gold) %>% 
  filter(Gold == max(Gold)) %>% 
  rename(price = Gold)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_gold, high_gold))
#>     label       Date  price
#> 1  Lowest 2009-01-15  808.1
#> 2 Highest 2020-08-06 2058.4

Lineplot Harga Silver

df %>% 
  ggplot(mapping = aes(y = Silver,
                       x = Date,
                       )) + 
  geom_line()

Trend harga perak mencapai harga tertingginya pada tahun 2011, kemudian mengalami penurunan yang cukup signifikan dan pada tahun 2020 sempat mengalami penurunan yang signifikan sebelum kembali mengalami kenaikan. Akan tetapi di tahun 2022 harga perak mengalami trend penurunan.

Periode Harga Terendah dan Tertinggi

low_silver <- df %>% 
  select(Date, Silver) %>% 
  filter(Silver == min(Silver)) %>% 
  rename(price = Silver)

high_silver <- df %>% 
  select(Date, Silver) %>% 
  filter(Silver == max(Silver)) %>% 
  rename(price = Silver)

data.frame(label = c("Lowest", "Highest", "Highest", "Highest"),
           rbind(low_silver, high_silver))
#>     label       Date  price
#> 1  Lowest 2009-01-15 10.440
#> 2 Highest 2011-04-29 48.599
#> 3 Highest 2011-04-30 48.599
#> 4 Highest 2011-05-01 48.599

Lineplot Harga Copper

df %>% 
  ggplot(mapping = aes(y = Copper,
                       x = Date,
                       )) + 
  geom_line()

Trend harga tembaga sejak tahun 2009 sampai 2011 mengalami kenaikan yang signifikan, akan tetapi setelahnya justru masuk fase penurunan. Pada tahun 2020 sempat mengalami penurunan yang signifikan, akan tetapi kemudian mengalami kenaikan sampai di harga tertingginya dan pada tahun 2022 kembali mengalami penurunan yang bahkan secara grafik cukup signifikan.

Periode Harga Terendah dan Tertinggi

low_copper <- df %>% 
  select(Date, Copper) %>% 
  filter(Copper == min(Copper)) %>% 
  rename(price = Copper)

high_copper <- df %>% 
  select(Date, Copper) %>% 
  filter(Copper == max(Copper)) %>% 
  rename(price = Copper)

data.frame(label = c("Lowest", "Highest", "Highest", "Highest"),
           rbind(low_copper, high_copper))
#>     label       Date  price
#> 1  Lowest 2009-01-22 1.3960
#> 2 Highest 2022-03-04 4.9375
#> 3 Highest 2022-03-05 4.9375
#> 4 Highest 2022-03-06 4.9375

Lineplot Harga Crude Oil

df %>% 
  ggplot(mapping = aes(y = Crude_oil,
                       x = Date,
                       )) + 
  geom_line()

Harga minyak mentah sempat masuk fase terendah pada rentang 2015-2020, akan tetapi setelah tahun 2020 harga minyak mentah cenderung mengalami kenaikan dan mencapai harga tertinggi pada tahun 2022. Setelah mencapai harga tertingginya, mintak mentah cenderung mengalami penurunan sampai saat ini.

Periode Harga Terendah dan Tertinggi

low_crude_oil <- df %>% 
  select(Date, Crude_oil) %>% 
  filter(Crude_oil == min(Crude_oil)) %>% 
  rename(price = Crude_oil)

high_crude_oil <- df %>% 
  select(Date, Crude_oil) %>% 
  filter(Crude_oil == max(Crude_oil)) %>% 
  rename(price = Crude_oil)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_crude_oil, high_crude_oil))
#>     label       Date  price
#> 1  Lowest 2016-02-14  29.08
#> 2 Highest 2022-05-30 117.61

Lineplot Harga Natural Gas

df %>% 
  ggplot(mapping = aes(y = Gas,
                       x = Date,
                       )) + 
  geom_line()

Harga Natural Gas dari 2009 sampai 2020 cenderung fluktuatif, setelah tahun 2020 mengalami kenaikan yang signifikan dan mencapai harga tertingginya di 2022.

Periode Harga Terendah dan Tertinggi

low_gas <- df %>% 
  select(Date, Gas) %>% 
  filter(Gas == min(Gas)) %>% 
  rename(price = Gas)

high_gas <- df %>% 
  select(Date, Gas) %>% 
  filter(Gas == max(Gas)) %>% 
  rename(price = Gas)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_gas, high_gas))
#>     label       Date price
#> 1  Lowest 2020-06-25 1.482
#> 2 Highest 2022-08-22 9.647

Lineplot Harga Heating Oil

df %>% 
  ggplot(mapping = aes(y = Heating_oil,
                       x = Date,
                       )) + 
  geom_line()

Harga Heating Oil pada rentang 2009 sampai 2022, berada pada titik terendah dan tertingginya pada saat sudah terjadi pandemi Covid-19, dimana pada awal pandemi harganya berada pada titik terendahnya dan mengalami kenaikan setelahnya sampai mencapai harga tertingginya di tahun 2022.

Periode Harga Terendah dan Tertinggi

low_heating_oil <- df %>% 
  select(Date, Heating_oil) %>% 
  filter(Heating_oil == min(Heating_oil)) %>% 
  rename(price = Heating_oil)

high_heating_oil <- df %>% 
  select(Date, Heating_oil) %>% 
  filter(Heating_oil == max(Heating_oil)) %>% 
  rename(price = Heating_oil)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_heating_oil, high_heating_oil))
#>     label       Date  price
#> 1  Lowest 2020-04-27 0.6104
#> 2 Highest 2022-04-28 5.1354

Lineplot Harga Coffee

df %>% 
  ggplot(mapping = aes(y = Coffee,
                       x = Date,
                       )) + 
  geom_line()

Harga kopi berada pada titik tertingginya di tahun 2011 dan berada pada titik terendahnya di tahun 2019. Memasuki fase pandemi di tahun 2020, harga kopi tidak terlalu terpengaruh untuk semakin turun. Akan tetapi masuk di tahun 2021, harga kopi mengalami kenaikan yang mencapai harga tertinggi setelah tahun 2011.

Periode Harga Terendah dan Tertinggi

low_coffee <- df %>% 
  select(Date, Coffee) %>% 
  filter(Coffee == min(Coffee)) %>% 
  rename(price = Coffee)

high_coffee <- df %>% 
  select(Date, Coffee) %>% 
  filter(Coffee == max(Coffee)) %>% 
  rename(price = Coffee)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_coffee, high_coffee))
#>     label       Date price
#> 1  Lowest 2019-05-07  88.0
#> 2 Highest 2011-05-03 304.9

Lineplot Harga Corn

df %>% 
  ggplot(mapping = aes(y = Corn,
                       x = Date,
                       )) + 
  geom_line()

Harga jagung mencapai harga tertingginya pada tahun 2012 dan harga terendahnya pada tahun 2016. Pada tahun 2020, dimana adanya pandemi Covid-19, harga jagung sempat mengalami penurunan hampir mendekati harga terendahnya di tahun 2016, kemudian mengalami kenaikan dan pada tahun 2022 yang mendekati harga tertinggi di 2012.

Periode Harga Terendah dan Tertinggi

low_corn <- df %>% 
  select(Date, Corn) %>% 
  filter(Corn == min(Corn)) %>% 
  rename(price = Corn)

high_corn <- df %>% 
  select(Date, Corn) %>% 
  filter(Corn == max(Corn)) %>% 
  rename(price = Corn)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_corn, high_corn))
#>     label       Date  price
#> 1  Lowest 2016-08-31 301.50
#> 2 Highest 2012-08-21 838.75

Lineplot Harga Wheat

df %>% 
  ggplot(mapping = aes(y = Wheat,
                       x = Date,
                       )) + 
  geom_line()

Harga gandum pada masa pandemi mulai tahun 2020 justru cenderung mengalami kenaikan dan mencapai harga tertingginya di tahun 2022. Akan tetapi setelahnya harga gandum kembali turun di rentang 800-900 $.

Periode Harga Terendah dan Tertinggi

low_wheat <- df %>% 
  select(Date, Wheat) %>% 
  filter(Wheat == min(Wheat)) %>% 
  rename(price = Wheat)

high_wheat <- df %>% 
  select(Date, Wheat) %>% 
  filter(Wheat == max(Wheat)) %>% 
  rename(price = Wheat)

data.frame(label = c("Lowest", "Highest"),
           rbind(low_wheat, high_wheat))
#>     label       Date   price
#> 1  Lowest 2016-08-31  361.00
#> 2 Highest 2022-03-07 1425.25
df %>%  
  pivot_longer(cols = c("Gold", "Silver", "Copper", "Crude_oil", "Gas", "Heating_oil", "Coffee", "Corn", "Wheat")) %>% 
  ggplot(mapping = aes(x=Date, y=value,
                       group=name))+
  geom_line(aes(color=name),position = "dodge")

df_scale <- scale(df[,2:10])
df_scale <- data.frame(Date = df[,1], df_scale)
df_scale %>%  
  pivot_longer(cols = c("Gold", "Silver", "Copper", "Crude_oil", "Gas", "Heating_oil", "Coffee", "Corn", "Wheat")) %>% 
  ggplot(mapping = aes(x=Date, y=value,
                       group=name))+
  geom_line(aes(color=name),position = "dodge")

summary(df)
#>       Date                 Gold            Silver          Copper     
#>  Min.   :2009-01-02   Min.   : 808.1   Min.   :10.44   Min.   :1.396  
#>  1st Qu.:2012-06-15   1st Qu.:1225.5   1st Qu.:16.37   1st Qu.:2.660  
#>  Median :2015-11-27   Median :1323.5   Median :18.39   Median :3.090  
#>  Mean   :2015-11-27   Mean   :1412.8   Mean   :20.97   Mean   :3.143  
#>  3rd Qu.:2019-05-10   3rd Qu.:1660.2   3rd Qu.:24.64   3rd Qu.:3.547  
#>  Max.   :2022-10-21   Max.   :2058.4   Max.   :48.60   Max.   :4.938  
#>    Crude_oil           Gas         Heating_oil         Coffee     
#>  Min.   : 29.08   Min.   :1.482   Min.   :0.6104   Min.   : 88.0  
#>  1st Qu.: 53.45   1st Qu.:2.697   1st Qu.:1.6564   1st Qu.:119.9  
#>  Median : 67.74   Median :3.238   Median :2.0504   Median :136.2  
#>  Mean   : 70.13   Mean   :3.504   Mean   :2.2074   Mean   :153.0  
#>  3rd Qu.: 86.68   3rd Qu.:4.090   3rd Qu.:2.8962   3rd Qu.:179.7  
#>  Max.   :117.61   Max.   :9.647   Max.   :5.1354   Max.   :304.9  
#>       Corn           Wheat       
#>  Min.   :301.5   Min.   : 361.0  
#>  1st Qu.:365.2   1st Qu.: 488.5  
#>  Median :398.8   Median : 550.0  
#>  Mean   :472.7   Mean   : 596.7  
#>  3rd Qu.:588.5   3rd Qu.: 683.9  
#>  Max.   :838.8   Max.   :1425.2