Analisis ini dilakukan untuk melihat pergerakan harga saham Apple (AAPL), Tesla (TSLA), dan Procter & Gamble (PG) berdasarkan data historis harga saham. Visualisasi dilakukan menggunakan plot time series untuk masing-masing saham, plot gabungan, serta boxplot untuk membandingkan persebaran harga dari ketiga saham.
library(ggplot2)
library(dplyr)
library(readr)
Dataset yang digunakan merupakan data historis harga saham AAPL, TSLA, dan PG. Data diimpor dari file CSV yang tersimpan pada perangkat.
aapl <- read_csv("C:/Users/hp VICTUS/Downloads/Data Historis AAPL.csv")
## Rows: 752 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): Tanggal, Vol., Perubahan%
## num (4): Terakhir, Pembukaan, Tertinggi, Terendah
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
tsla <- read_csv("C:/Users/hp VICTUS/Downloads/Data Historis TSLA.csv")
## Rows: 752 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): Tanggal, Vol., Perubahan%
## num (4): Terakhir, Pembukaan, Tertinggi, Terendah
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
pg <- read_csv("C:/Users/hp VICTUS/Downloads/Data Historis PG.csv")
## Rows: 752 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): Tanggal, Vol., Perubahan%
## num (4): Terakhir, Pembukaan, Tertinggi, Terendah
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
str(aapl)
## spc_tbl_ [752 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Tanggal : chr [1:752] "13/03/2026" "12/03/2026" "11/03/2026" "10/03/2026" ...
## $ Terakhir : num [1:752] 25012 25576 26081 26083 25988 ...
## $ Pembukaan : num [1:752] 25548 25866 26109 25764 25569 ...
## $ Tertinggi : num [1:752] 25633 25895 26213 26248 26115 ...
## $ Terendah : num [1:752] 24952 25418 25955 25695 25368 ...
## $ Vol. : chr [1:752] "36,93M" "40,79M" "26,22M" "30,59M" ...
## $ Perubahan%: chr [1:752] "-2,21%" "-1,94%" "-0,01%" "0,37%" ...
## - attr(*, "spec")=
## .. cols(
## .. Tanggal = col_character(),
## .. Terakhir = col_number(),
## .. Pembukaan = col_number(),
## .. Tertinggi = col_number(),
## .. Terendah = col_number(),
## .. Vol. = col_character(),
## .. `Perubahan%` = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
str(tsla)
## spc_tbl_ [752 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Tanggal : chr [1:752] "13/03/2026" "12/03/2026" "11/03/2026" "10/03/2026" ...
## $ Terakhir : num [1:752] 39120 39501 40782 39923 39868 ...
## $ Pembukaan : num [1:752] 39917 40517 40228 40222 39005 ...
## $ Tertinggi : num [1:752] 40020 40650 41638 40659 40159 ...
## $ Terendah : num [1:752] 38995 39465 40215 39819 38140 ...
## $ Vol. : chr [1:752] "58,50M" "60,97M" "62,56M" "59,26M" ...
## $ Perubahan%: chr [1:752] "-0,96%" "-3,14%" "2,15%" "0,14%" ...
## - attr(*, "spec")=
## .. cols(
## .. Tanggal = col_character(),
## .. Terakhir = col_number(),
## .. Pembukaan = col_number(),
## .. Tertinggi = col_number(),
## .. Terendah = col_number(),
## .. Vol. = col_character(),
## .. `Perubahan%` = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
str(pg)
## spc_tbl_ [752 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Tanggal : chr [1:752] "13/03/2026" "12/03/2026" "11/03/2026" "10/03/2026" ...
## $ Terakhir : num [1:752] 15065 15050 15332 15601 15522 ...
## $ Pembukaan : num [1:752] 15137 15221 15523 15549 15315 ...
## $ Tertinggi : num [1:752] 15255 15304 15538 15715 15623 ...
## $ Terendah : num [1:752] 15018 15033 15143 15360 15290 ...
## $ Vol. : chr [1:752] "7,30M" "8,49M" "8,86M" "7,76M" ...
## $ Perubahan%: chr [1:752] "0,10%" "-1,84%" "-1,72%" "0,51%" ...
## - attr(*, "spec")=
## .. cols(
## .. Tanggal = col_character(),
## .. Terakhir = col_number(),
## .. Pembukaan = col_number(),
## .. Tertinggi = col_number(),
## .. Terendah = col_number(),
## .. Vol. = col_character(),
## .. `Perubahan%` = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
Pada tahap ini, variabel tanggal diubah menjadi tipe data date. Selain itu, dibuat data frame baru yang hanya memuat tanggal dan harga saham terakhir.
#merubah tipe data variabel date dan membuat data frame baru berisi time dan closing price
dataaapl <- data.frame(Time = as.Date(aapl$Tanggal, format = '%d/%m/%Y'), Price = aapl$Terakhir)
datatsla <- data.frame(Time = as.Date(tsla$Tanggal, format = '%d/%m/%Y'), Price = tsla$Terakhir)
datapg <- data.frame(Time = as.Date(pg$Tanggal, format = '%d/%m/%Y'), Price = pg$Terakhir)
Plot berikut menunjukkan pergerakan harga saham Apple dari waktu ke waktu. Garis vertikal putus-putus digunakan sebagai penanda awal tahun 2024, 2025, dan 2026.
p <- ggplot(dataaapl, aes(x = Time, y = Price)) +
geom_line() +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
theme_minimal() +
labs(
title = "Plot Time Series Harga Saham Apple",
x = "Date",
y = "Harga Saham"
) +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2024-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2025-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2026-01-01"),
linetype = 2, color = 2, linewidth = 1)
p
Berdasarkan plot tersebut, harga saham Apple mengalami perubahan dari waktu ke waktu. Pola naik dan turun dapat diamati dengan lebih jelas melalui visualisasi time series.
Plot berikut menunjukkan pergerakan harga saham Tesla dalam periode pengamatan.
q <- ggplot(datatsla, aes(x = Time, y = Price)) +
geom_line() +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
theme_minimal() +
labs(
title = "Plot Time Series Harga Saham Tesla",
x = "Date",
y = "Harga Saham"
) +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2024-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2025-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2026-01-01"),
linetype = 2, color = 2, linewidth = 1)
q
Berdasarkan plot tersebut, harga saham Tesla terlihat memiliki perubahan yang cukup besar. Hal ini menunjukkan bahwa pergerakan harga saham Tesla cenderung lebih fluktuatif dibandingkan saham lainnya.
Plot berikut menunjukkan pergerakan harga saham Procter & Gamble dari waktu ke waktu.
r <- ggplot(datapg, aes(x = Time, y = Price)) +
geom_line() +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
theme_minimal() +
labs(
title = "Plot Time Series Harga Saham Procter & Gamble",
x = "Date",
y = "Harga Saham"
) +
theme(axis.text.x = element_text(angle = 50, hjust = 1)) +
geom_vline(xintercept = as.Date("2024-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2025-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2026-01-01"),
linetype = 2, color = 2, linewidth = 1)
r
Berdasarkan plot tersebut, harga saham PG juga mengalami perubahan dari waktu ke waktu, tetapi pergerakannya terlihat lebih stabil dibandingkan saham yang memiliki fluktuasi tinggi.
Pada bagian ini, data saham AAPL, TSLA, dan PG digabungkan ke dalam satu data frame agar dapat dibandingkan dalam satu visualisasi.
dataaapl$Saham <- "AAPL"
datatsla$Saham <- "TSLA"
datapg$Saham <- "PG"
data_all <- bind_rows(dataaapl, datatsla, datapg)
Plot berikut menampilkan perbandingan pergerakan harga saham AAPL, TSLA, dan PG secara bersamaan.
x <- ggplot(data_all, aes(x = Time, y = Price, color = Saham)) +
geom_line(linewidth = 1) +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
theme_minimal() +
labs(
title = "Plot Time Series Harga Saham AAPL, TSLA, dan PG",
x = "Date",
y = "Harga Saham",
color = "Saham"
) +
theme(
axis.text.x = element_text(angle = 50, hjust = 1),
legend.position = "bottom"
) +
geom_vline(xintercept = as.Date("2024-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2025-01-01"),
linetype = 2, color = 2, linewidth = 1) +
geom_vline(xintercept = as.Date("2026-01-01"),
linetype = 2, color = 2, linewidth = 1)
x
Berdasarkan plot gabungan, terlihat bahwa ketiga saham memiliki pola pergerakan harga yang berbeda. Visualisasi ini memudahkan perbandingan antar saham karena seluruh harga saham ditampilkan dalam satu grafik.
Boxplot digunakan untuk melihat persebaran harga saham dari masing-masing perusahaan.
ggplot(data_all, aes(x = Saham, y = Price, fill = Saham)) +
geom_boxplot() +
theme_minimal() +
labs(
title = "Boxplot Harga Saham",
x = "Saham",
y = "Harga Saham"
)
Berdasarkan boxplot, dapat dilihat bahwa setiap saham memiliki persebaran harga yang berbeda. Saham Tesla dengan boxplot yang lebih tinggi menunjukkan harga yang cenderung lebih besar, sedangkan boxplot P&G yang lebih lebar menunjukkan variasi harga yang lebih besar.
Berdasarkan hasil analisis time series harga saham AAPL, TSLA, dan PG, dapat disimpulkan bahwa ketiga saham memiliki pola pergerakan harga yang berbeda selama periode pengamatan. Visualisasi single data series membantu melihat perubahan harga masing-masing saham secara terpisah, sedangkan visualisasi multi data series memudahkan perbandingan antar saham dalam satu grafik. Secara keseluruhan, dapat disimpulkan bahwa PG merupakan saham dengan pergerakan harga paling stabil, AAPL memiliki variasi sedang, sedangkan TSLA menunjukkan fluktuasi harga paling besar selama periode pengamatan