Mengaktifkan Packages

library(ggplot2)
library(ggthemes)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(scales)

Input data

Menginput data dari excel menggunakan path dan namafile.xlsx yang menyimpan data harga emas dari januari 2025 - Februari 2026

setwd("C:\\Users\\User\\Downloads")
data <- read_excel("DATA HARGA EMAS NUM.xlsx")
head(data, 32)
## # A tibble: 28 × 4
##    Tanggal             Tempat    `Jenis Emas` `Harga/gram`
##    <dttm>              <chr>     <chr>               <dbl>
##  1 2025-01-01 00:00:00 Pegadaian Ubs               1502000
##  2 2025-01-01 00:00:00 Pegadaian Antam             1553000
##  3 2025-02-01 00:00:00 Pegadaian Ubs               1596000
##  4 2025-02-01 00:00:00 Pegadaian Antam             1661000
##  5 2025-03-01 00:00:00 Pegadaian Ubs               1651000
##  6 2025-03-01 00:00:00 Pegadaian Antam             1672000
##  7 2025-04-01 00:00:00 Pegadaian Ubs               1820000
##  8 2025-04-01 00:00:00 Pegadaian Antam             1852000
##  9 2025-05-01 00:00:00 Pegadaian Ubs               1930000
## 10 2025-05-01 00:00:00 Pegadaian Antam             2044000
## # ℹ 18 more rows

Membuat Grafik Data Numerik

1. Density Plot

Menginterpretasikan nilai harga emas terhadap densitas yang dimiliki untuk mengetahui pengaruh seberapa tinggi nilai emas pada bulan januari 2025 - februari 2026

density_plot <- ggplot(data, aes(x = `Harga/gram`,fill = `Jenis Emas`)) +
  geom_density(alpha = 0.5)+
  scale_y_continuous(labels = comma) +
  labs(title = "Distribusi Tren Harga Emas Antam vs UBS", x = "Harga Emas per Gram", y = "Density")
density_plot

Jika kita lihat pada grafik density plot harga emas pada jenis antam memiliki nilai yang lebih tinggi dikisaran harga 1,9 juta - 2 juta dibanding UBS. grafik menunjukkan positive skew.

2. Box Plot

Grafik ini dapat menggambarkan perbandingan distribusi harga emas per gram antara Antam dn UBS. bisa kita lihat jika median antam sedikit lebih tinggi dibanding USB, tetapi rentang harga UBS jauh lebih tinggi yaitu mendekati 3 juta.

ggplot(data, aes(x = `Jenis Emas`, y = `Harga/gram`, fill = `Jenis Emas`)) +
  geom_boxplot(alpha = 0.6) +
  scale_y_continuous(labels = scales::comma) +
  labs(title = "Tren Harga Emas Antam vs UBS ", x = "Jenis Emas", y = "Harga per Gram") +
theme_bw()

Kesimpulannya harga jenis emas antam dan UBS tidak ada perbedaan yang signifikan.

3 Histogram

Data harga emas paling banyak muncul pada rentang 1,9 juta - 2,25 juta.

ggplot(data, aes(x = `Harga/gram`)) +
  geom_histogram(binwidth = 500000, fill = "gold", color = "black") +
  labs(title = "Frekuensi Harga Emas Antam vs UBS", x = "Harga", y = "frekuensi")

kesimpulan: bentuk grafik menunjukkan bahwa cenderung ke kanan maka grafik tersebut potive skew, kemudian harga emas akan cenderung berada pada angka 2 juta dan berpotensi untuk terus melebihi 2 juta.

4. Stem Leaf

Menunjukkan data mentah yang disajikan dalam bentuk dahan daun, dimana data menunjukkan nilai yang sering muncul yaitu 18 atau sekitar 1,8 - 2 juta untuk harga emas.

stem(data$`Harga/gram`)
## 
##   The decimal point is 5 digit(s) to the right of the |
## 
##   14 | 05
##   16 | 0567
##   18 | 257901347
##   20 | 464
##   22 | 494
##   24 | 0289
##   26 | 5
##   28 | 6
##   30 | 0

pada nilai 30 berpotensi untuk menjadi harga emas selanjutnya saat terjadi harga anomali pasar.

5. Dot Plots

Pada grafik menunjukkan linear positif, seirng waktu harga emas akan terus naik, laju pertumbuhan terlihat pada bulan oktober yang meningkat tajam hingga mencapai 3 juta per gram.

dot_plot <- ggplot(data, aes(x = `Tanggal` , y = `Harga/gram`)) +
  geom_point(color = "black", size = 2) +
  theme_minimal() +
  labs(title = "Tren Harga Emas Antam vs UBS Jan 25 - Feb 26", x = "Tanggal", y = "Harga Emas per gram")

dot_plot

Kesimpulannya variabel tanggal dan harga merupakan indikator terhadap kenaikan harga emas, grafik akhir menunjukkan harga emas akan terus naik.

Data Kategorik

Membuat data kategorik dari Jenis dan Harga yang ada

Mengganti data numeric menjadi kategorik yaitu Harga menjadi bentuk kategori yang membedakan tinggi rendahnya harga tersebut.

data$Jenis_Emas <- as.factor(data$`Jenis Emas`)

# Membuat data kategorik baru berdasarkan level harga (Binning)
data$Status_Harga <- cut(data$`Harga/gram`, 
                         breaks = c(0, 1600000, 2500000, Inf), 
                         labels = c("Rendah", "Sedang", "Tinggi"))

# Melihat hasil pengelompokan
table(data$Status_Harga)
## 
## Rendah Sedang Tinggi 
##      3     21      4

Jika harga > Rp1.600.000 = Rendah, > Rp2.000.000 = Sedang, > Rp2.500.000 = TinggI,

Membuat Grafik dengan Data Kategorik

6. Bar Chart

ggplot(data, aes(x = Status_Harga, fill = Status_Harga)) +
  geom_bar() +
  scale_fill_manual(values = c("Rendah" = "#228B50", "Sedang" = "#FFD400", "Tinggi" = "#FF0000")) +
  labs(
    title = "Distribusi Frekuensi Tingkat Harga Emas",
    x = "Kategori Harga",
    y = "Jumlah Hari (Frekuensi)"
  ) +
  theme_minimal()

dapat dilihat dari grafik bahwa kategori sedang yaitu rentang harga 2 juta - 2,5 juta sangat tinggi, maka harga emas dapat dipastikan dapat naik ke arah yang lebih tinggi lagi hingga 3 juta.

7. Pie Chart

df_status <- as.data.frame(table(data$Status_Harga))
colnames(df_status) <- c("Kategori", "Frekuensi")

ggplot(df_status, aes(x = "", y = Frekuensi, fill = Kategori)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("Rendah" = "#228B30", "Sedang" = "#FFD100", "Tinggi" = "#FF0000")) +
  labs(title = "Proporsi Tingkat Harga Emas") +
  theme_void() + 
  geom_text(aes(label = paste0(round(Frekuensi/sum(Frekuensi)*100), "%")), 
            position = position_stack(vjust = 0.5))

75% data terdapat pada kategori sedang dengan rentang harga 2 juta

Menghitung Pemusatan Data

1. MEAN

Rata-rata dari keseluruhan harga emas.

mean(data$`Harga/gram`)
## [1] 2082418

Maka Rata-rata data = Rp2.082.418

2. MEDIAN

Nilai tengah (median) dari nilai keseluruhan harga emas

median(data$`Harga/gram`)
## [1] 1954500

3. MODUS

modus adalah nilai yang sering keluar di dalam data

modus <- function(x) {
  uniqx <- unique(x)
  uniqx[which.max(tabulate(match(x, uniqx)))]
}
modus (data$`Harga/gram`)
## [1] 1502000

“seharusnya” tidak ada modus yang keluar karena tidak ada nilai yang sama di sampel data harga emas.

5. Summary 5 serangkai

Nilai dari keseluruhan data memuat nilai minimal (nilai paling kecil), Q1 (Kuartil ke satu), Median (nilai tengah), Mean = Q2 (Rata-rata nilai), Q3 (Kuartil ke tiga), dan nilai maksimal (nilai terbesar).

summary(data$`Harga/gram`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 1502000 1844000 1954500 2082418 2351750 2996000

Ukuran penyebaran data

1. Menghitung keragaman data (varians)

var(data$`Harga/gram`)
## [1] 161539455971

2. Menghitung standar deviasi dari data

sd(data$`Harga/gram`)
## [1] 401919.7