1. Simulasi Distribusi Diskrit dan Kontinu

set.seed(123)

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.5.2
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
theme_set(theme_minimal(base_size = 14))

1a. SIMULASI DISTRIBUSI DISKRIT (POISSON)

Kasus: Jumlah Klaim Asuransi Kendaraan per Hari

Distribusi Poisson sering digunakan untuk memodelkan jumlah kejadian yang terjadi dalam suatu interval waktu, misalnya jumlah klaim asuransi per hari, jumlah kecelakaan, atau jumlah pelanggan yang datang ke suatu layanan. Dalam simulasi ini diasumsikan bahwa rata-rata klaim kendaraan per hari adalah 4 klaim.

n <- 1000
lambda <- 4

klaim <- rpois(n, lambda)
mean_klaim <- mean(klaim)
var_klaim <- var(klaim)
sd_klaim <- sd(klaim)

stat_klaim <- data.frame(
  Mean = mean_klaim,
  Variance = var_klaim,
  Std_Dev = sd_klaim
)

stat_klaim
##    Mean Variance  Std_Dev
## 1 3.986 3.929734 1.982356

Histogram berikut menunjukkan distribusi jumlah klaim yang dihasilkan dari simulasi Poisson sebanyak 1000 observasi.

Garis merah menunjukkan fungsi distribusi Poisson teoritis berdasarkan parameter lambda = 4.

Garis vertikal putus-putus menunjukkan nilai rata-rata dari data simulasi.

plot1 <- ggplot(data.frame(klaim), aes(x = klaim)) +
  
  geom_histogram(aes(y = after_stat(density)),
                 binwidth = 1,
                 fill = "#FDB0C0",
                 color = "black",
                 alpha = 0.8) +
  
  stat_function(
    fun = function(x) dpois(round(x), lambda),
    color = "red",
    linewidth = 1.3
  ) +
  
  geom_vline(xintercept = mean_klaim,
             color = "red",
             linewidth = 1.2,
             linetype = "dashed") +
  
  annotate("text",
           x = mean_klaim + 0.5,
           y = 0.20,
           label = paste("Mean =", round(mean_klaim,2)),
           color = "blue",
           size = 5) +
  
  labs(
    title = "Simulasi Distribusi Poisson",
    subtitle = "Jumlah Klaim Asuransi Kendaraan per Hari",
    x = "Jumlah Klaim",
    y = "Density"
  )

plot1

Interpretasi Histogram

Dari histogram terlihat bahwa sebagian besar jumlah klaim berada di sekitar nilai rata-rata yaitu sekitar 4 klaim per hari. Distribusi data bersifat diskrit dan sedikit condong ke kanan, yang merupakan karakteristik umum dari distribusi Poisson.

Kurva distribusi teoritis (garis merah) terlihat cukup sesuai dengan pola histogram hasil simulasi, yang menunjukkan bahwa data simulasi mengikuti model distribusi Poisson dengan baik.

Boxplot Distribusi Klaim

Boxplot digunakan untuk melihat penyebaran data, median, kuartil, serta potensi outlier pada jumlah klaim.

plot2 <- ggplot(data.frame(klaim), aes(y = klaim)) +
  
  geom_boxplot(fill = "#FDB0C0", width = 0.3) +
  
  labs(
    title = "Boxplot Jumlah Klaim Asuransi",
    y = "Jumlah Klaim"
  )

plot2

Interpretasi Boxplot

Boxplot menunjukkan bahwa median jumlah klaim berada di sekitar nilai 4 klaim per hari. Sebagian besar data berada dalam rentang sekitar 2 hingga 6 klaim, yang menggambarkan variasi alami dalam jumlah kejadian harian.

Beberapa nilai yang lebih tinggi menunjukkan kemungkinan terjadinya hari dengan jumlah klaim yang lebih besar, meskipun kejadian tersebut relatif jarang.

2. Studi Kasus Simulasi Variabel Random

Studi Kasus Simulasi Return IHSG

Pada studi kasus ini digunakan data historis Indeks Harga Saham Gabungan (IHSG) untuk menganalisis distribusi return harian pasar saham Indonesia.

Return saham dihitung berdasarkan perubahan harga penutupan harian. Berdasarkan teori keuangan, return saham jangka pendek sering dimodelkan menggunakan distribusi normal.

Dengan menggunakan data historis tersebut, dilakukan simulasi Monte Carlo untuk memodelkan kemungkinan return di masa depan.

library(ggplot2)
library(dplyr)
library(gridExtra)

data <- read.csv("IHSG.csv")

head(data)
##         Date    Price     Open     High      Low      Vol. Change..
## 1 01/03/2026 7,689.75 8,092.90 8,133.69 7,486.32   164.67B   -6.63%
## 2 01/02/2026 8,235.49 8,306.16 8,437.09 7,712.35   765.57B   -1.13%
## 3 01/01/2026 8,329.61 8,676.74 9,174.47 7,481.99 1,159.55B   -3.67%
## 4 01/12/2025 8,646.94 8,541.54 8,776.97 8,493.25   850.27B    1.62%
## 5 01/11/2025 8,508.71 8,208.03 8,622.27 8,181.90   768.21B    4.22%
## 6 01/10/2025 8,163.88 8,069.94 8,354.67 7,854.31   787.61B    1.28%
data$Price <- as.numeric(gsub(",", "", data$Price))

data$return <- c(NA, diff(log(data$Price)))

data <- na.omit(data)

summary(data$return)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.18342 -0.04027 -0.01247 -0.00862  0.01799  0.37720
mean_return <- mean(data$return)
sd_return <- sd(data$return)

plot1 <- ggplot(data, aes(x=return)) +
  
  geom_histogram(aes(y=after_stat(density)),
                 bins=40,
                 fill="#FDB0C0",
                 color="black",
                 alpha=0.8) +
  
  geom_density(color="blue", linewidth=1.2) +
  
  stat_function(fun=dnorm,
                args=list(mean=mean_return,
                          sd=sd_return),
                color="red",
                linewidth=1.3) +
  
  labs(
    title="Distribusi Return Bulanan IHSG",
    subtitle="Data Historis Pasar Saham Indonesia",
    x="Return Bulanan",
    y="Density"
  ) +
  
  theme_minimal()

plot1

Berdasarkan histogram distribusi return harian IHSG, terlihat bahwa distribusi data relatif simetris di sekitar nilai rata-rata.

Kurva density empiris yang ditampilkan menunjukkan bentuk menyerupai distribusi normal. Hal ini sesuai dengan teori keuangan yang menyatakan bahwa return saham jangka pendek sering dimodelkan menggunakan distribusi normal.

Nilai rata-rata return mendekati nol yang menunjukkan bahwa secara rata-rata perubahan harga harian relatif kecil, sedangkan standar deviasi mencerminkan tingkat volatilitas pasar saham.

set.seed(123)

n_sim <- 1000

sim_return <- rnorm(n_sim,
                    mean=mean_return,
                    sd=sd_return)

sim_data <- data.frame(sim_return)
plot2 <- ggplot(sim_data, aes(x=sim_return)) +
  
  geom_histogram(aes(y=after_stat(density)),
                 bins=40,
                 fill="#FDB0C0",
                 color="black") +
  
  geom_density(color="red", linewidth=1.2) +
  
  labs(
    title="Simulasi Monte Carlo Return IHSG",
    subtitle="Simulasi Return Masa Depan",
    x="Return Simulasi",
    y="Density"
  ) +
  
  theme_minimal()

plot2

Simulasi Monte Carlo dilakukan dengan menggunakan distribusi normal yang memiliki parameter mean dan standar deviasi yang diperoleh dari data historis IHSG.

Hasil simulasi menunjukkan berbagai kemungkinan nilai return yang dapat terjadi di masa depan berdasarkan karakteristik statistik data historis. Pendekatan ini banyak digunakan dalam analisis risiko keuangan untuk memahami kemungkinan variasi return dan potensi volatilitas pasar.

Kesimpulan

Berdasarkan analisis data historis IHSG, distribusi return harian menunjukkan pola yang mendekati distribusi normal dengan rata-rata yang relatif kecil dan volatilitas tertentu.

Simulasi Monte Carlo memungkinkan pemodelan berbagai kemungkinan return masa depan berdasarkan parameter statistik dari data historis. Pendekatan ini memberikan gambaran mengenai variasi potensi pergerakan pasar saham dalam jangka pendek.