Data yang digunakan pada tugas ini adalah data harga saham (closing price) dari tiga perusahaan, yaitu PT Bank Central Asia Tbk (BBCA), PT Bank Rakyat Indonesia Tbk (BBRI), dan PT Bank Mandiri Tbk (BMRI). Data yang diambil merupakan data saham dalam 3 (tiga) tahun, tepatnya pada tanggal 2 Januari 2020 sampai dengan 30 Desember 2022, yang didapatkan dari laman Yahoo! Finance
Langkah pertama yang dilakukan yaitu import package dan import data. Oleh karena data yang akan digunakan berasal dari 3 file csv yang berbeda, maka akan dibuat data frame baru yang berisi gabungan dari ketiga file data saham tersebut. Tidak lupa dilakukan pendefinisian variabel “Date” agar terbaca sebagai data tanggal (time series) dengan merubah tipe data variabel tersebut.
# IMPORT LIBRARY
library(lubridate)
library(ggplot2)
library(ggpmisc)
library(dplyr)
# IMPORT DATA
bbca <- read.csv("D:/OneDrive/Documents/BBCA.JK.csv")
bbri <- read.csv("D:/OneDrive/Documents/BBRI.JK.csv")
bmri <- read.csv("D:/OneDrive/Documents/BMRI.JK.csv")
str(bbca)
## 'data.frame': 735 obs. of 7 variables:
## $ Date : chr "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" ...
## $ Open : num 6695 6750 6720 6735 6670 ...
## $ High : num 6780 6800 6750 6770 6745 ...
## $ Low : num 6680 6725 6690 6730 6670 ...
## $ Close : num 6690 6800 6735 6740 6680 ...
## $ Adj.Close: num 6198 6300 6240 6245 6189 ...
## $ Volume : int 49445000 47755500 27300000 45022500 53692500 40363500 73362000 67855000 93582000 75623500 ...
str(bbri)
## 'data.frame': 735 obs. of 7 variables:
## $ Date : chr "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" ...
## $ Open : num 4400 4420 4360 4410 4380 4400 4430 4430 4540 4570 ...
## $ High : num 4410 4440 4390 4410 4400 4420 4430 4510 4600 4580 ...
## $ Low : num 4360 4390 4320 4380 4340 4370 4390 4420 4520 4530 ...
## $ Close : num 4410 4420 4370 4400 4380 4400 4410 4510 4570 4580 ...
## $ Adj.Close: num 3773 3781 3739 3764 3747 ...
## $ Volume : int 41714100 82898300 44225100 103948100 171751200 72072000 124809200 111351400 158414200 102566700 ...
str(bmri)
## 'data.frame': 735 obs. of 7 variables:
## $ Date : chr "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" ...
## $ Open : num 3838 3875 3825 3862 3775 ...
## $ High : num 3888 3912 3838 3862 3775 ...
## $ Low : num 3825 3812 3762 3788 3688 ...
## $ Close : num 3875 3862 3800 3800 3750 ...
## $ Adj.Close: num 3239 3229 3177 3177 3135 ...
## $ Volume : int 37379800 70294600 61892000 70895600 105080600 75587000 64231800 75399600 104134400 89795200 ...
# BUAT DATA FRAME BARU & MERUBAH TIPE DATA "DATE"
df1 <- data.frame(
Date = c(ymd(bbca$Date), ymd(bbri$Date), ymd(bmri$Date)),
Price = c(bbca$Close, Price=bbri$Close, Price=bmri$Close),
Stock = c(rep("BBCA", 735), rep("BBRI", 735), rep("BMRI", 735))
)
str(df1)
## 'data.frame': 2205 obs. of 3 variables:
## $ Date : Date, format: "2020-01-02" "2020-01-03" ...
## $ Price: num 6690 6800 6735 6740 6680 ...
## $ Stock: chr "BBCA" "BBCA" "BBCA" "BBCA" ...
Dalam rangka mengetahui perubahan harga saham masing-masing perusahaan, maka dilakukan single data plotting untuk data historis ketiga saham. Pada grafik ditambahkan garis putus-putus berwarna hitam sebagai tanda pemisah tahun. Berdasarkan ketiga grafik yang telah dibuat, terlihat bahwa bulan Mei 2020 menjadi titik terendah harga saham BBRI dan BMRI. Sedangkan harga saham BBCA mengalami harga terendahnya pada bulan Maret 2020. Meluasnya penyebaran pandemi virus Corona (COVID-19) menjadi sentimen negatif yang mempengaruhi pasar keuangan global sepanjang bulan-bulan tersebut. Meskipun demikian, harga saham ketiga perusahaan berangsur-angsur membaik sejalan dengan terkendalinya pandemi COVID-19.
# PLOT SINGLE DATA SERIES
bca <- df1 %>% filter(Stock == "BBCA")
plot.bca <- ggplot(bca, aes(x=Date, y=Price)) +
geom_line(color="#FA8072", size = 0.9) +
theme_minimal() +
labs(y="Price (Rp)", title = "Grafik Saham BBCA") +
theme(legend.position = "bottom") +
scale_x_date(date_labels = "%b %Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2021-01-01"),
linetype = 2, color = 1, linewidth = 0.9) +
geom_vline(xintercept = as.Date("2022-01-01"),
linetype = 2, color = 1, linewidth = 0.9)
plot.bca
bri <- df1 %>% filter(Stock == "BBRI")
plot.bri <- ggplot(bri, aes(x=Date, y=Price)) +
geom_line(color="#6eaa5e", size = 0.9) +
theme_minimal() +
labs(y="Price (Rp)", title = "Grafik Saham BBRI") +
theme(legend.position = "bottom") +
scale_x_date(date_labels = "%b %Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2021-01-01"),
linetype = 2, color = 1, linewidth = 0.9) +
geom_vline(xintercept = as.Date("2022-01-01"),
linetype = 2, color = 1, linewidth = 0.9)
plot.bri
mandiri <- df1 %>% filter(Stock == "BMRI")
plot.mandiri <- ggplot(mandiri, aes(x=Date, y=Price)) +
geom_line(color="steelblue2", size = 0.9) +
theme_minimal() +
labs(y="Price (Rp)", title = "Grafik Saham BMRI") +
theme(legend.position = "bottom") +
scale_x_date(date_labels = "%b %Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2021-01-01"),
linetype = 2, color = 1, linewidth = 0.9) +
geom_vline(xintercept = as.Date("2022-01-01"),
linetype = 2, color = 1, linewidth = 0.9)
plot.mandiri
Untuk mengetahui perubahan harga saham ketiga perusahaan secara serentak pada rentang waktu yang sama, maka dilakukan multiple data plotting untuk data historis ketiga saham. Pada grafik ditambahkan garis putus-putus berwarna hitam sebagai tanda pemisah tahun. Berdasarkan ketiga grafik yang telah dibuat, terlihat bahwa saham BBCA memiliki harga tertinggi dibandingkan dengan kedua saham lainnya. Secara umum harga saham BBRI berada di atas saham BMRI, namun sekitar pada pertengahan bulan Agustus 2022 hingga awal Oktober 2022 grafik kedua saham cukup sering mengalami perpotongan.
# PLOT MULTIPLE DATA SERIES
plot.multi <- ggplot(df1, aes(x=Date, y=Price, color=Stock)) +
geom_line(size = 0.9) +
theme_minimal() +
labs(y="Price (Rp)", title = "Grafik Saham BBCA, BBRI, BMRI") +
theme(legend.position = "bottom") +
scale_x_date(date_labels = "%b %Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2021-01-01"),
linetype = 2, color = 1, linewidth = 0.9) +
geom_vline(xintercept = as.Date("2022-01-01"),
linetype = 2, color = 1, linewidth = 0.9)
plot.multi
Untuk membantu dalam memahami karakteristik dari distribusi data, dibuatlah boxplot berdasarkan harga ketiga saham. Saham BBCA, BMRI dan BBRI secara berurutan menunjukkan urutan data dengan sebaran tertinggi ke terendah yang diukur berdasarkan bidang jangkauan kuartil dalam (inner quartile range). Selanjutnya diketahui pula bahwa saham BBCA menunjukkan saham dengan nilai tengah (median) tertinggi, yang disusul dengan BBRI dan kemudian BMRI. Pada saham BBCA tidak ada nilai yang menyimpang jauh (outlier), serta panjang whisker bagian atas dan bawah tidak berbeda jauh. Sedangkan pada saham BBRI terdapat cukup banyak outlier yang nilainya di bawah whisker. Adanya outlier di bagian bawah boxplot yang disertai dengan whisker bagian bawah yang lebih panjang, menunjukkan bahwa saham BBRI memiliki distribusi data cenderung menjulur ke arah kiri (negative skewness). Berbeda dengan BBRI, saham BMRI memiliki satu outlier yang nilainya di atas whisker. Adanya outlier di bagian atas boxplot yang disertai dengan whisker bagian atas yang lebih panjang, menunjukkan bahwa saham BMRI memiliki distribusi data cenderung menjulur ke arah kanan (positive skewness). Untuk mengetahui nilai pasti ketiga kuartil, mean, minimum, dan maximum masing-masing saham, ditampilkan summary ketiga saham.
# BOXPLOT
ggplot(data=df1, mapping = aes(x=Date, y=Price, fill=Stock)) +
geom_boxplot() +
theme_minimal() +
labs(y="Price (Rp)", title = "Boxplot Saham BBCA, BBRI, BMRI") +
theme(legend.position = "right")
summary(bca)
## Date Price Stock
## Min. :2020-01-02 Min. :4430 Length:735
## 1st Qu.:2020-10-01 1st Qu.:6232 Class :character
## Median :2021-07-08 Median :6790 Mode :character
## Mean :2021-07-05 Mean :6921
## 3rd Qu.:2022-04-02 3rd Qu.:7650
## Max. :2022-12-30 Max. :9300
summary(bri)
## Date Price Stock
## Min. :2020-01-02 Min. :2170 Length:735
## 1st Qu.:2020-10-01 1st Qu.:3750 Class :character
## Median :2021-07-08 Median :4220 Mode :character
## Mean :2021-07-05 Mean :4061
## 3rd Qu.:2022-04-02 3rd Qu.:4500
## Max. :2022-12-30 Max. :4980
summary(mandiri)
## Date Price Stock
## Min. :2020-01-02 Min. :1860 Length:735
## 1st Qu.:2020-10-01 1st Qu.:2988 Class :character
## Median :2021-07-08 Median :3412 Mode :character
## Mean :2021-07-05 Mean :3479
## 3rd Qu.:2022-04-02 3rd Qu.:3912
## Max. :2022-12-30 Max. :5450