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