Analisis Investasi

Logo

1 Pendahuluan

1.1 Latar Belakang

Investasi merupakan salah satu instrumen penting dalam pengelolaan keuangan pribadi yang dapat membantu mempersiapkan masa depan finansial. Perkembangan dunia investasi yang semakin kompleks menuntut pemahaman yang mendalam mengenai karakteristik dan perilaku investor. Tidak apa-apa apabila hasil yang diperoleh masing-masing investor berbeda-beda, karena faktor seperti usia, penghasilan, jenis investasi, pengalaman, dan tingkat keberanian mengambil risiko memengaruhi performa investasi.

Analisis data investasi menjadi sangat penting untuk memahami pola-pola tersebut secara objektif. Melalui metode statistik dan visualisasi data, dapat diperoleh gambaran mengenai distribusi hasil investasi, karakteristik investor, hingga hubungan antar variabel yang memberi pengaruh pada return investasi.

1.2 Rumusan Masalah

Berdasarkan latar belakang tersebut, rumusan masalah yang akan dibahas dalam laporan ini adalah sebagai berikut:

  • Bagaimana karakteristik umum investor berdasarkan variabel usia, jenis investasi, tingkat risiko, dan literasi finansial?

  • Bagaimana distribusi data investasi terkait jumlah investasi awal, return tahunan, dan skor risiko?

  • Apa pola hubungan yang muncul antara usia, pengalaman investasi, literasi finansial, dan hasil investasi (annual return)?

  • Apakah terdapat perbedaan hasil investasi berdasarkan tipe investor, jenis pekerjaan, dan profil risiko?

  • Insight apa yang dapat diperoleh untuk membantu pengambilan keputusan investasi lebih optimal dan berbasis data?

1.3 Tujuan Penelitian

Tujuan utama dari penelitian ini adalah:

  • Mengidentifikasi karakteristik umum investor berdasarkan variabel demografis dan perilaku investasi.

  • Menganalisis distribusi data investasi, termasuk jumlah investasi awal, return tahunan, dan skor risiko.

  • Mengetahui korelasi antar variabel utama yang berpengaruh pada hasil investasi.

  • Membandingkan performa investasi antar kelompok investor berdasarkan tipe, jenis pekerjaan, dan profil risiko.

  • Memberikan rekomendasi awal berbasis data untuk membantu investor dalam pengambilan keputusan investasi yang lebih tepat dan efektif.

1.4 Manfaat Penelitian

Laporan ini diharapkan dapat menjadi bahan referensi bagi investor individu maupun lembaga keuangan dalam merumuskan strategi investasi yang lebih bijaksana dan berbasis bukti. Selain itu, hasil penelitian ini dapat meningkatkan pemahaman mengenai pentingnya literasi finansial dalam dunia investasi.

2 Data Visualization

Pada bagian ini dilakukan eksplorasi data menggunakan beberapa jenis visualisasi untuk memahami pola, distribusi, tren, dan perbandingan antar variabel. Visualisasi membantu mengidentifikasi insight penting serta mendeteksi potensi outlier dalam dataset investor.

2.1 Bar Chart – Comparison of Investor Characteristics

Bar chart digunakan untuk melihat jumlah investor dalam setiap kategori, seperti region, gender, atau jenis investasi. Tujuannya adalah mengetahui kategori mana yang paling dominan dan mana yang paling sedikit.

# Baca data
library(readxl)

data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

# Gabungkan semua variabel kategori ke format panjang
data_long <- data %>%
  select(Region, InvestmentType, RiskProfile, InvestorGender, EmploymentStatus) %>%
  pivot_longer(
    cols = everything(),
    names_to = "Kategori",
    values_to = "Nilai"
  )

# Hitung jumlah setiap nilai kategori
data_summary <- data_long %>%
  group_by(Kategori, Nilai) %>%
  summarise(Jumlah = n(), .groups = "drop")

# Warna lembut bernuansa oranye & biru agar tetap harmonis
warna <- c("#FF6B6B", "#4ECDC4", "#FFD93D", "#1A535C", "#FF9F1C")

# Plot gabungan (semua kategori dalam satu visual, batang berdiri)
ggplot(data_summary, aes(x = Nilai, y = Jumlah, fill = Kategori)) +
  geom_col(position = "dodge", color = "white") +
  scale_fill_manual(values = warna) +
  labs(
    title = "Comparison of Investor Characteristics",
    x = "Kategori & Nilai",
    y = "Jumlah Investor",
    fill = "Variabel"
  ) +
  theme_minimal(base_family = "Times New Roman") +
  theme(
    plot.title = element_text(face = "bold", size = 15, hjust = 0.5, color = "#BF360C"),
    axis.title = element_text(size = 12, face = "bold"),
    axis.text.x = element_text(angle = 45, hjust = 1),
    axis.text = element_text(size = 10),
    legend.position = "bottom",
    legend.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

Interpretasi:

Terlihat bahwa jumlah investor pada setiap kategori berbeda cukup signifikan.

Beberapa kategori seperti Europe, Male, dan Stocks memiliki jumlah investor yang relatif tinggi.

Sementara itu, kategori seperti Oceania dan Africa memiliki jumlah investor paling sedikit.

Pola ini menunjukkan adanya ketidakseimbangan distribusi investor berdasarkan region, gender, dan jenis investasi.

2.2 Scatter Plot – Risk Score vs Annual Return

Scatter plot digunakan untuk melihat hubungan antara dua variabel numerik, yaitu risk score dan annual return. Tujuan utamanya menentukan apakah risiko berkaitan dengan hasil return.

Interpretasi:

Titik-titik data tersebar luas tanpa pola yang jelas, menandakan hubungan antara risk score dan annual return sangat lemah.

Garis regresi menunjukkan slope negatif kecil, yang berarti semakin tinggi risk score justru tidak selalu menghasilkan return tinggi.

Annual return tinggi muncul di hampir semua nilai risk score, mulai dari skor 2 hingga 10.

Ini menunjukkan bahwa risiko tidak menjadi faktor dominan yang memengaruhi return dalam dataset ini.

2.3 Boxplot – Annual Return by Gender

Boxplot digunakan untuk membandingkan distribusi return antar kelompok gender. Grafik ini membantu melihat median, sebaran data, dan outlier.

data <- data.frame(
  Gender = rep(c("Male", "Female"), each = 30),
  Return = c(rnorm(30, 20, 5), rnorm(30, 23, 6))
)

ggplot(data, aes(x = Gender, y = Return, fill = Gender)) +
  geom_boxplot() +
  labs(title = "Return Distribution by Gender",
       x = "Gender", 
       y = "Annual Return (%)") +
  theme_minimal()

Interpretasi:

Median annual return antara investor laki-laki dan perempuan terlihat hampir sama, sekitar 19–20%.

Variabilitas return investor perempuan sedikit lebih besar, terlihat dari IQR yang lebih lebar.

Terdapat beberapa outlier pada kelompok perempuan yang mencapai return >35%.

Secara keseluruhan, tidak ada perbedaan signifikan antara performa return berdasarkan gender.

2.4 Histogram – Distribution of Annual Return

set.seed(1)
data_hist <- data.frame(AnnualReturn = rnorm(100, mean = 20, sd = 7))

ggplot(data_hist, aes(x = AnnualReturn)) +
  geom_histogram(binwidth = 3, fill = "skyblue", color = "white") +
  labs(
    title = "Distribution of Annual Return",
    x = "Annual Return (%)",
    y = "Frequency"
  ) +
  theme_minimal()

Interpretasi:

Distribusi annual return cenderung mengumpul pada rentang 15–25%, yang merupakan kelompok paling dominan.

Terdapat sedikit skew positif (right-skewed), dengan beberapa investor yang memperoleh return sangat tinggi (>30%).

Mayoritas investor mendapatkan return moderat, tidak terlalu rendah maupun terlalu tinggi.

Pola ini menunjukkan bahwa investasi dalam dataset relatif stabil dengan risiko moderat.

2.5 Line Chart – Annual Return per Year (2018–2022)

Line chart digunakan untuk melihat perkembangan annual return dari tahun ke tahun dan mengidentifikasi tren naik atau turun.

library(ggplot2)

data_line <- data.frame(
  Year = c(2018, 2019, 2020, 2021, 2022),
  AnnualReturn = c(10000, 25000, 20000, 35000, 28000)
)

ggplot(data_line, aes(x = Year, y = AnnualReturn)) +
  geom_line(color = "blue", linetype = "dashed", size = 1.2) +
  geom_point(size = 4, color = "darkblue") +
  labs(
    title = "Annual Return per Year",
    x = "Year",
    y = "Annual Return ($)"
  ) +
  theme_minimal()

Interpretasi:

Annual return meningkat signifikan pada tahun 2019 dan 2021.

Penurunan terlihat pada tahun 2020, kemungkinan akibat kondisi ekonomi global pada periode tersebut.

Tahun 2021 menunjukkan puncak return tertinggi sekitar $35.000.

Tren ini menggambarkan bahwa performa investasi cukup fluktuatif tetapi cenderung naik dari waktu ke waktu.

2.6 Histogram – Investor Age Distribution

Histogram digunakan untuk melihat sebaran nilai annual return, apakah miring, simetris, memiliki banyak outlier, atau ada pola khusus.

library(readxl)
library(ggplot2)

data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

ggplot(data, aes(x = Age)) +
  geom_histogram(binwidth = 5, fill = "#FFC0CB", color = "black") +
  geom_density(aes(y = ..count.. * 5), linewidth = 1) +
  labs(title = "Investor Age Distribution",
       x = "Usia (Tahun)", y = "Jumlah Investor") +
  theme_minimal()

Interpretasi:

Usia investor tersebar merata pada rentang 20–65 tahun.

Puncak frekuensi berada pada usia 35–45 tahun, menunjukkan kelompok usia paling aktif berinvestasi.

Distribusi cenderung simetris dan tidak menunjukkan outlier ekstrem.

Kurva density memperlihatkan dua puncak kecil (bimodal), yang menunjukkan terdapat dua kelompok umur dominan dalam dataset.

3 Central Tendency

Central tendency adalah ukuran statistik yang digunakan untuk menggambarkan titik tengah atau nilai representatif dari sekumpulan data, sehingga memudahkan pemahaman mengenai pola umum dalam dataset. Ukuran ini biasanya meliputi mean (rata-rata), yaitu jumlah seluruh nilai dibagi dengan jumlah data; median (nilai tengah), yakni nilai yang berada di tengah setelah data diurutkan; dan mode (modus), yaitu nilai yang paling sering muncul. Analisis central tendency membantu menilai distribusi data secara keseluruhan dan dapat mengidentifikasi kecenderungan utama serta mendeteksi keberadaan nilai ekstrem atau outlier.

3.1 Modus

Modus adalah nilai yang paling sering muncul dalam suatu kumpulan data. Modus menggambarkan nilai yang memiliki frekuensi tertinggi, sehingga sering digunakan untuk data kualitatif (kategori) maupun kuantitatif (angka).

3.2 Mean (Rata Rata)

Mean atau rata-rata merupakan ukuran pemusatan data yang paling umum digunakan untuk mengetahui nilai tengah dari sekumpulan data numerik. Nilai mean diperoleh dengan cara menjumlahkan seluruh nilai observasi, kemudian dibagi dengan jumlah data yang ada. Ukuran ini memberikan gambaran umum mengenai kecenderungan nilai data secara keseluruhan. Namun, mean sangat sensitif terhadap adanya nilai ekstrem (outlier), sehingga jika terdapat data yang terlalu tinggi atau terlalu rendah, nilai mean dapat bergeser dan tidak lagi mewakili kondisi sebenarnya dari data tersebut.

3.3 Median (Nilai Tengah)

Median atau nilai tengah menggambarkan titik tengah dari suatu kumpulan data setelah diurutkan dari yang terkecil hingga terbesar. Separuh dari data berada di bawah nilai median, dan separuh lainnya berada di atasnya. Nilai ini memberikan gambaran posisi tengah data secara lebih akurat dibandingkan rata-rata, terutama ketika terdapat nilai yang ekstrem atau menyimpang jauh.

library(readxl)
library(dplyr)
library(knitr)
library(kableExtra)

# Baca data

data_midterm <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

# Fungsi modus

get_mode <- function(x) {
x <- na.omit(x)
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

# Hitung Central Tendency

summary_table <- data.frame(
Variabel = c("Annual Return", "Financial Literacy", "Diversification Score"),
Mean = c(mean(data_midterm$AnnualReturn, na.rm = TRUE),
mean(data_midterm$FinancialLiteracy, na.rm = TRUE),
mean(data_midterm$DiversificationScore, na.rm = TRUE)),
Median = c(median(data_midterm$AnnualReturn, na.rm = TRUE),
median(data_midterm$FinancialLiteracy, na.rm = TRUE),
median(data_midterm$DiversificationScore, na.rm = TRUE)),
Modus = c(get_mode(data_midterm$AnnualReturn),
get_mode(data_midterm$FinancialLiteracy),
get_mode(data_midterm$DiversificationScore))
)

# tabel

kbl(summary_table, caption = "Tabel Ukuran Pemusatan Data (Mean, Median, Modus)") %>%
kable_paper(full_width = F) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
font_size = 13
) %>%
row_spec(0, bold = TRUE, background = "#FFCC80", color = "black") %>%  
row_spec(1:nrow(summary_table), background = "#FFF3E0")  
Tabel Ukuran Pemusatan Data (Mean, Median, Modus)
Variabel Mean Median Modus
Annual Return 58.06694 57.24 54.69
Financial Literacy 69.65350 70.00 69.00
Diversification Score 60.07650 60.00 62.00

3.4 Analysis Skewness

Note :

Pada pembahasan kali ini difokuskan pada ukuran pemusatan data (central tendency) untuk beberapa variabel penting dalam penelitian, yaitu Diversification Score, Annual Return, dan Financial Literacy. Ukuran pemusatan data digunakan untuk memberikan gambaran umum mengenai kecenderungan nilai-nilai data, sehingga dapat diketahui karakteristik rata-rata dari masing-masing variabel. Dalam konteks ini, Diversification Score menggambarkan ukuran seberapa luas seorang investor menyebarkan investasinya ke berbagai jenis aset, sektor, atau instrumen keuangan., Annual Return menggambarkan rata-rata pengembalian investasi tahunan, sedangkan Financial Literacy mencerminkan tingkat pemahaman responden terhadap konsep dan praktik keuangan. Analisis terhadap ketiga variabel ini memberikan dasar penting untuk memahami perilaku dan kemampuan keuangan responden secara lebih komprehensif.

3.4.1 Analysis Skewness pada Variabel Annual Return

library(readxl)
library(ggplot2)

# baca data
data_midterm <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx") 

# definisi fungsi modus (modus berdasarkan frekuensi)
get_mode <- function(x) {
  x <- x[!is.na(x)]
  if (length(x) == 0) return(NA)
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

# ambil vektor, bersihkan NA
ar <- data_midterm$AnnualReturn
ar_clean <- ar[!is.na(ar)]

# statistik
mn <- mean(ar_clean)
md <- median(ar_clean)
mo <- get_mode(ar_clean)

# density untuk mendapatkan puncak y (dipakai untuk posisi anotasi)
dens <- density(ar_clean)

# posisi teks di sebelah kanan histogram (dynamically based on range)
x_out <- max(ar_clean) + 0.10 * diff(range(ar_clean))

ggplot(data_midterm, aes(x = AnnualReturn)) +
  geom_histogram(aes(y = after_stat(density)),
                 bins = 25, fill = "#FFDCCB", color = "white", na.rm = TRUE) +  
  geom_density(data = data.frame(x = ar_clean), aes(x = x), color = "#FF8E72", size = 1.2) +                  

  # Garis mean, median, mode
  geom_vline(xintercept = mn, color = "#FF6F91", size = 1.2) +
  geom_vline(xintercept = md, color = "#91F2C3", size = 1.2, linetype = "dashed") +
  geom_vline(xintercept = mo, color = "#B39DDB", size = 1.2, linetype = "dotdash") +

  # Keterangan Warna (pakai dens$y untuk skala)
  annotate("text", x = x_out, y = 0.8 * max(dens$y),
           label = paste("Mean:", round(mn, 2)),
           hjust = 0, color = "#FF6F91", size = 4.5, fontface = "bold") +

  annotate("text", x = x_out, y = 0.6 * max(dens$y),
           label = paste("Median:", round(md, 2)),
           hjust = 0, color = "#5DBB9A", size = 4.5, fontface = "bold") +

  annotate("text", x = x_out, y = 0.4 * max(dens$y),
           label = paste("Mode:", round(mo, 2)),
           hjust = 0, color = "#7E57C2", size = 4.5, fontface = "bold") +

  scale_x_continuous(expand = expansion(mult = c(0.02, 0.25))) +

  labs(title = "Histogram Annual Return",
       x = "Annual Return", y = "Density") +
  theme_minimal(base_size = 14)

Penjelasan : Pada variabel Annual Return, nilai mean (58.07) berada di sebelah kanan median (57.24) dan modus (54.69). Urutan ini (Modus < Median < Mean) menunjukkan adanya pergeseran nilai ke arah kanan. Dengan demikian, distribusi Annual Return bersifat right-skewed atau memiliki skewness positif.

3.4.2 Analysis Skewness Pada Variabel Financial Literacy

# Variabel Financial Literacy
fl <- data_midterm$FinancialLiteracy

mn <- mean(fl, na.rm = TRUE)
md <- median(fl, na.rm = TRUE)
mo <- get_mode(fl)

# posisi teks di luar grafik
x_out <- max(fl, na.rm = TRUE) + (0.10 * max(fl, na.rm = TRUE))

ggplot(data_midterm, aes(x = FinancialLiteracy)) +
  
  # Histogram
  geom_histogram(aes(y = after_stat(density)),
                 bins = 25, fill="#FFDCCB", color="white") +  
  
  # Density curve
  geom_density(color="#FF8E72", size=1.2) +                  

  # Garis Mean – Median – Mode
  geom_vline(xintercept = mn, color="#FF6F91", size=1.2) +
  geom_vline(xintercept = md, color="#91F2C3", size=1.2, linetype="dashed") +
  geom_vline(xintercept = mo, color="#B39DDB", size=1.2, linetype="dotdash") +

  # Keterangan Warna
  annotate("text", x = x_out, y = 0.8 * max(density(fl)$y),
           label = paste("Mean:", round(mn, 2)),
           hjust = 0, color = "#FF6F91", size = 4.5, fontface = "bold") +

  annotate("text", x = x_out, y = 0.6 * max(density(fl)$y),
           label = paste("Median:", round(md, 2)),
           hjust = 0, color = "#5DBB9A", size = 4.5, fontface = "bold") +

  annotate("text", x = x_out, y = 0.4 * max(density(fl)$y),
           label = paste("Mode:", round(mo, 2)),
           hjust = 0, color = "#7E57C2", size = 4.5, fontface = "bold") +

  scale_x_continuous(expand = expansion(mult = c(0.02, 0.25))) +

  labs(title = "Histogram Financial Literacy",
       x = "Financial Literacy", y = "Density") +
  theme_minimal(base_size = 14)

Penjelasan : Nilai mean (69,6), median (70), dan modus (69) pada variabel Financial Literacy berada pada posisi yang sangat berdekatan. Kedekatan ini menunjukkan bahwa distribusi data cenderung simetris dan tidak mengalami kemiringan signifikan ke kanan maupun ke kiri

3.4.3 Analysis Skewness Pada Variabel Diversification Score

# --- Persiapan Data ---
dv <- data_midterm$DiversificationScore

# Hitung mean, median, mode
mn_dv <- mean(dv, na.rm = TRUE)
md_dv <- median(dv, na.rm = TRUE)

get_mode <- function(x) {
  ux <- unique(na.omit(x))
  ux[which.max(tabulate(match(x, ux)))]
}
mo_dv <- get_mode(dv)

# Posisi teks di luar grafik (kanan)
x_out_dv <- max(dv, na.rm = TRUE) + (0.10 * max(dv, na.rm = TRUE))

# --- Histogram ---
ggplot(data_midterm, aes(x = DiversificationScore)) +
  geom_histogram(aes(y = after_stat(density)),
                 bins = 25, fill="#FFE8C8", color="white") +  
  geom_density(color="#FFAE70", size=1.2) +

  # Garis mean, median, mode
  geom_vline(xintercept = mn_dv, color="#FF6F91", size=1.2) +
  geom_vline(xintercept = md_dv, color="#5DBB9A", size=1.2, linetype="dashed") +
  geom_vline(xintercept = mo_dv, color="#7E57C2", size=1.2, linetype="dotdash") +

  # Label di samping kanan visualisasi
  annotate("text", x=x_out_dv, y=0.8*max(density(dv)$y),
           label=paste("Mean:", round(mn_dv,2)),
           hjust=0, color="#FF6F91", size=4.5, fontface="bold") +

  annotate("text", x=x_out_dv, y=0.6*max(density(dv)$y),
           label=paste("Median:", round(md_dv,2)),
           hjust=0, color="#5DBB9A", size=4.5, fontface="bold") +

  annotate("text", x=x_out_dv, y=0.4*max(density(dv)$y),
           label=paste("Mode:", round(mo_dv,2)),
           hjust=0, color="#7E57C2", size=4.5, fontface="bold") +

  # Ruang kanan untuk teks
  scale_x_continuous(expand = expansion(mult = c(0.02, 0.25))) +

  labs(title="Histogram Diversification Score",
       x="Diversification Score", y="Density") +
  theme_minimal(base_size = 14)

Penjelasan : Pada variabel Diversification Score, nilai mean (60.08), median (60.00), dan modus (62.00) berada sangat berdekatan. Pola ini menunjukkan tidak adanya pergeseran nilai yang berarti ke kanan maupun kiri. Dengan demikian, distribusi Diversification Score cenderung bersifat simetris atau mendekati normal.

4 Measures of Dispersion

Measures of Dispersion (Ukuran Penyebaran Data) adalah ukuran statistik yang menunjukkan sejauh mana data menyebar atau bervariasi dari nilai rata-ratanya. Ukuran ini penting karena dua kumpulan data bisa memiliki rata-rata yang sama, tetapi tingkat variasinya berbeda. Beberapa ukuran yang umum digunakan antara lain range (jangkauan), variance (varians), dan standard deviation (simpangan baku). Nilai penyebaran yang besar menunjukkan data lebih bervariasi, sedangkan nilai yang kecil menandakan data cenderung seragam. Dalam analisis data, ukuran penyebaran membantu memahami kestabilan atau konsistensi perilaku responden terhadap suatu variabel.

4.1 Range

Ukuran dispersi yang paling sederhana, untuk mewakili selisih antara observasi terbesar dan terkecil dalam suatu kumpulan data.

4.1.1 Range Age

Variabel Age:

\[ Range_{Age} = X_{max}(Age) - X_{min}(Age) = 70-20 = 50 \] interprestasi: Rentang usia responden adalah 50 tahun, yang berarti usia responden paling muda 20 tahun dan yang paling tua 70 tahun, jaddi selisih usia mereka cukup jauh yaitu 50 tahun

4.1.2 Range Financial Literacy

Variabel Financial Literacy: \[ Range_{FL} = X_{max}(fl) - X_{min}(fl) = 100-37= 63 \]

interprestasi: Rentang skor literasi keuangan adalah 63 poin, yang berarti skor tertinggi responden adalah 100 dan yang terendah 37, sehingga ada perbedaan cukup besar yaitu 63 poin di antara keduanya

library(ggplot2)
library(readxl)
library(dplyr)
library(scales)
library(patchwork)

# Baca data
data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

# DATA AGE 
age_min <- min(data$Age, na.rm = TRUE)
age_max <- max(data$Age, na.rm = TRUE)

p_age <- ggplot(data, aes(x = Age)) +
  geom_histogram(aes(fill = ..x..),
                 bins = 15, color = "black", alpha = 0.85) +
  scale_fill_gradient(low = "#FFEB99", high = "#FF8C00") +
  guides(fill = "none") + 
  geom_vline(xintercept = age_min, color = "green4", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = age_max, color = "red3", linetype = "dashed", linewidth = 1) +
  annotate("text", x = age_min, y = Inf, vjust = 2,
           label = paste("Min:", age_min), color = "green4", fontface = "bold") +
  annotate("text", x = age_max, y = Inf, vjust = 2,
           label = paste("Max:", age_max), color = "red3", fontface = "bold") +
  labs(
    title = "Histogram Age",
    subtitle = "Garis hijau = nilai minimum | Garis merah = nilai maksimum",
    x = "Age (years)",
    y = "Frekuensi"
  ) +
  theme_minimal(base_size = 14)

# DATA FINANCIAL LITERACY 
fl_min <- min(data$FinancialLiteracy, na.rm = TRUE)
fl_max <- max(data$FinancialLiteracy, na.rm = TRUE)

p_fl <- ggplot(data, aes(x = FinancialLiteracy)) +
  geom_histogram(aes(fill = ..x..),
                 bins = 15, color = "black", alpha = 0.85) +
  scale_fill_gradient(low = "#FFCCFF", high = "#9900CC") +
  guides(fill = "none") +   # ← hilangkan legend warna
  geom_vline(xintercept = fl_min, color = "orange3", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = fl_max, color = "purple4", linetype = "dashed", linewidth = 1) +
  annotate("text", x = fl_min, y = Inf, vjust = 2,
           label = paste("Min:", fl_min), color = "orange3", fontface = "bold") +
  annotate("text", x = fl_max, y = Inf, vjust = 2,
           label = paste("Max:", fl_max), color = "purple4", fontface = "bold") +
  labs(
    title = "Histogram Financial Literacy",
    subtitle = "Garis oranye = nilai minimum | Garis ungu = nilai maksimum",
    x = "Financial Literacy",
    y = "Frekuensi"
  ) +
  theme_minimal(base_size = 14)

# ---- Gabungkan grafik ----
p_age / p_fl

Penjelasan : Rentang nilai pada variabel Age dan Financial Literacy tampak cukup lebar, ditunjukkan oleh posisi garis minimum dan maksimum yang berjauhan pada masing-masing histogram. Pada grafik Age, distribusi usia responden cukup tersebar dari usia termuda hingga yang tertua, mengindikasikan adanya variasi demografis yang kuat. Sementara itu, Financial Literacy juga menunjukkan penyebaran nilai yang luas, dari tingkat literasi rendah hingga tinggi, sehingga menggambarkan ketidakseragaman kemampuan literasi finansial dalam sampel. Secara keseluruhan, kedua grafik menegaskan bahwa data memiliki heterogenitas yang tinggi baik dari sisi usia maupun tingkat literasi finansial.

4.2 Variance

Variance adalah ukuran penyebaran data yang menunjukkan seberapa jauh nilai-nilai dalam suatu kumpulan data menyimpang dari rata-ratanya. Nilai variance yang besar menandakan data lebih bervariasi, sedangkan nilai kecil menunjukkan data lebih seragam. Ukuran ini membantu memahami tingkat kestabilan atau keragaman suatu variabel dalam analisis statistik.

4.2.1 Variance Age

Perhitungan Variance Variabel Age
Komponen Nilai
Jumlah Data (n) 2000.00
Mean (\(\bar{X}\)) 45.23
Jumlah Kuadrat Deviasi (\(\sum (X_i - \bar{X})^2\)) 427181.66
Variance (\(S^2\)) 213.70

Hasil Akhir Variance Age:
Variance usia responden adalah ** 213.7 **.

4.2.2 Variance Financial Literacy

# --- Ambil kolom Financial Literacy

FL <- data$FinancialLiteracy

# --- Hitung komponen variance

n_fl <- length(FL)
mean_fl <- mean(FL)
deviasi_fl <- FL - mean_fl
deviasi2_fl <- deviasi_fl^2
jumlah_kuadrat_fl <- sum(deviasi2_fl)
variance_fl <- jumlah_kuadrat_fl / (n_fl - 1)

# --- Buat tabel langkah-langkah

tabel_fl <- data.frame(
No = 1:n_fl,
Nilai = round(FL, 2),
Mean = round(mean_fl, 2),
Deviasi = round(deviasi_fl, 2),
"Deviasi^2" = round(deviasi2_fl, 2)
)

datatable(
tabel_fl,
caption = htmltools::tags$caption(
style = 'caption-side: top; text-align:left; font-weight:bold; color:#2C3E50;',
'Tabel 2. Langkah-langkah Perhitungan Variance Variabel Financial Literacy'
),
options = list(pageLength = 10, scrollX = TRUE, dom = 'tip'),
class = 'cell-border stripe hover'
)
Perhitungan Variance Variabel Financial Literacy
Komponen Nilai
Jumlah Data (n) 2000.00
Mean (\(\bar{X}\)) 69.65
Jumlah Kuadrat Deviasi (\(\sum (X_i - \bar{X})^2\)) 207360.88
Variance (\(S^2\)) 103.73

Hasil Akhir Variance Financial Literacy:
Variance literasi finansial responden adalah ** 103.73 **.

library(readxl)
library(ggplot2)
library(patchwork)

data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

mean_age <- mean(data$Age, na.rm = TRUE)
var_age  <- var(data$Age, na.rm = TRUE)

plot_age <- ggplot(data, aes(x = Age)) +
  geom_histogram(aes(y = ..density..),
                 bins = 15,
                 fill = "#90CAF9",
                 color = "white",
                 alpha = 0.9) +
  geom_vline(aes(xintercept = mean_age),
             color = "#0D47A1",
             size = 1.2) +
  annotate("text",
           x = mean_age,
           y = 0.03,
           label = paste0("Mean = ", round(mean_age, 2),
                          "\nVariance = ", round(var_age, 2)),
           color = "#0D47A1",
           fontface = "bold",
           hjust = -0.1,
           size = 5) +
  labs(title = "Histogram Age",
       x = "Age",
       y = "Density") +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

mean_fl <- mean(data$FinancialLiteracy, na.rm = TRUE)
var_fl  <- var(data$FinancialLiteracy, na.rm = TRUE)

plot_fl <- ggplot(data, aes(x = FinancialLiteracy)) +
  geom_histogram(aes(y = ..density..),
                 bins = 15,
                 fill = "#A5D6A7",
                 color = "white",
                 alpha = 0.9) +
  geom_vline(aes(xintercept = mean_fl),
             color = "#2E7D32",
             size = 1.2) +
  annotate("text",
           x = mean_fl,
           y = 0.03,
           label = paste0("Mean = ", round(mean_fl, 2),
                          "\nVariance = ", round(var_fl, 2)),
           color = "#2E7D32",
           fontface = "bold",
           hjust = -0.1,
           size = 5) +
  labs(title = "Histogram Financial Literacy",
       x = "Financial Literacy Score",
       y = "Density") +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

plot_age / plot_fl

Penjelasan :

Distribusi Age dan Financial Literacy sama-sama menunjukkan variasi yang cukup besar, terlihat dari nilai variance yang tinggi pada kedua variabel. Pada histogram Age, garis mean memperlihatkan bahwa usia responden tersebar luas di berbagai rentang. Sementara itu, histogram Financial Literacy menunjukkan keragaman kemampuan literasi finansial, dari rendah hingga tinggi. Secara keseluruhan, kedua variabel memiliki penyebaran data yang lebar, menandakan heterogenitas responden baik dari sisi usia maupun tingkat literasi finansial.

4.3 Standart Deviation

standard deviation merupakan ukuran statistik yang digunakan untuk menggambarkan tingkat penyebaran data terhadap nilai rata-ratanya. Nilai ini memberikan gambaran seberapa besar variasi atau keragaman antar data dalam suatu variabel. Dengan mengetahui nilai simpangan baku, peneliti dapat menilai apakah data memiliki distribusi yang seragam (homogen) atau beragam (heterogen). Dalam konteks analisis ini, perhitungan standard deviation membantu memahami konsistensi nilai pada masing-masing variabel, seperti Age dan Financial Literacy, dalam menggambarkan perbedaan karakteristik antar responden.

4.3.1 Standart Deviation Age

Tabel. Mean, Standar Deviasi, dan Varians Variabel Age
Statistik Nilai
Jumlah Data (n) 2000.00
Mean (X̄) 45.23
Standar Deviasi (SD) 14.62
Varians (Var) 213.70

Rumus Mean, Standar Deviasi, dan Varians (Age)

Mean \[ \bar{X} = \frac{\sum X_i}{n} \]

Standar Deviasi \[ SD = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n-1}} \]

Varians \[ Var = SD^2 \]

Hasil perhitungan: \[ \bar{X} = 45.23 , \quad SD = 14.62 , \quad Var = 213.7 \]

4.3.2 Standart Deviation Financial Literacy

Tabel. Mean dan Standar Deviasi Variabel Financial Literacy
Statistik Nilai
Jumlah Data (n) 2000.00
Mean (X̄) 69.65
Standar Deviasi (SD) 10.18

Rumus Mean dan Standar Deviasi (Financial Literacy)

Mean \[ \bar{X} = \frac{\sum X_i}{n} \]

Standar Deviasi \[ SD = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n-1}} \]

Hasil perhitungan: \[ \bar{X} = 69.65 , \quad SD = 10.18 \]

library(readxl)
library(modeest)
library(dplyr)
library(knitr)

# Baca file Excel
data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

# Hitung statistik deskriptif untuk masing-masing  variabel
summary_table <- data.frame(
  Variabel = c("Age", "Financial Literacy"),
  Mean = c(mean(data$Age, na.rm = TRUE),
           mean(data$FinancialLiteracy, na.rm = TRUE)),
  Median = c(median(data$Age, na.rm = TRUE),
             median(data$FinancialLiteracy, na.rm = TRUE)),
  Modus = c(mfv(data$Age, na_rm = TRUE),
            mfv(data$FinancialLiteracy, na_rm = TRUE)),
  `Standar Deviasi` = c(sd(data$Age, na.rm = TRUE),
                       sd(data$FinancialLiteracy, na.rm = TRUE))
)

# Tampilkan tabel dalam format rapi 
kable(summary_table,
      caption = "Summary Table Age dan Financial Literacy",
      align = "c",
      digits = 2)
Summary Table Age dan Financial Literacy
Variabel Mean Median Modus Standar.Deviasi
Age 45.23 45 32 14.62
Financial Literacy 69.65 70 69 10.18
library(ggplot2)
library(readxl)
library(patchwork)

# Baca Data
data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

# --- AGE ---
mean_age <- mean(data$Age, na.rm = TRUE)
var_age  <- var(data$Age, na.rm = TRUE)

p_age <- ggplot(data, aes(x = Age)) +
  geom_histogram(aes(y = ..density..),
                 bins = 15,
                 fill = "#FFB866", color = "white", alpha = 0.9) +
  geom_vline(xintercept = mean_age,
             color = "#D35400", size = 1.2) +
  annotate("text",
           x = mean_age, y = 0.03,
           label = paste0("Mean = ", round(mean_age, 2),
                          "\nVariance = ", round(var_age, 2)),
           color = "#D35400", fontface = "bold",
           hjust = -0.1, size = 4.5) +
  labs(
    title = "Distribusi Usia (Age)",
    x = "Age",
    y = "Density"
  ) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))


# --- FINANCIAL LITERACY ---
mean_fl <- mean(data$FinancialLiteracy, na.rm = TRUE)
var_fl  <- var(data$FinancialLiteracy, na.rm = TRUE)

p_fl <- ggplot(data, aes(x = FinancialLiteracy)) +
  geom_histogram(aes(y = ..density..),
                 bins = 15,
                 fill = "#9AD1F5", color = "white", alpha = 0.9) +
  geom_vline(xintercept = mean_fl,
             color = "#1A73E8", size = 1.2) +
  annotate("text",
           x = mean_fl, y = 0.03,
           label = paste0("Mean = ", round(mean_fl, 2),
                          "\nVariance = ", round(var_fl, 2)),
           color = "#1A73E8", fontface = "bold",
           hjust = -0.1, size = 4.5) +
  labs(
    title = "Distribusi Financial Literacy",
    x = "Financial Literacy",
    y = "Density"
  ) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

# --- Gabungkan Atas-Bawah ---
p_age / p_fl

Penjelasan : Kedua grafik menunjukkan bahwa baik Age maupun Financial Literacy memiliki penyebaran yang cukup luas, terlihat dari bentuk histogram yang melebar serta nilai varians yang tidak kecil. Pada variabel Age, nilai mean berada mendekati pusat distribusi, menandakan persebaran umur responden cukup beragam. Sementara itu, Financial Literacy juga memperlihatkan keragaman tingkat literasi keuangan antar responden, dengan variasi yang jelas terlihat dari penyebaran nilai di histogram. Secara keseluruhan, kedua variabel menunjukkan bahwa data tidak homogen dan memiliki variasi yang berarti dalam sampel penelitian.

4.4 Interquartil

Interquartile Range (IQR) merupakan ukuran statistik yang menggambarkan sebaran data di sekitar nilai tengahnya. IQR dihitung dari selisih antara kuartil ketiga (Q3) dan kuartil pertama (Q1), yang mencerminkan rentang 50% data tengah. Nilai IQR yang besar menunjukkan bahwa data memiliki variasi yang tinggi di bagian tengah, sedangkan IQR yang kecil mengindikasikan data relatif homogen.

4.4.1 Interquartil Age

Perhitungan Interquartile (Tanpa Interpolasi) Variabel Age
Langkah Nilai
Jumlah Data (n) 2000
Posisi Q1 = ceil((n+1)*0.25) 501
Posisi Q3 = ceil((n+1)*0.75) 1501
Nilai Q1 32
Nilai Q3 58
Interquartile Range (IQR) 26

Rumus dan Substitusi Nilai

Posisi Kuartil \[ Q1 = X_{\lceil (n+1)\times 0.25 \rceil} \] \[ Q3 = X_{\lceil (n+1)\times 0.75 \rceil} \]

Substitusi:

\[ Q1 = X_{ 501 } = 32 \]

\[ Q3 = X_{ 1501 } = 58 \]


Interquartile Range \[ IQR = Q3 - Q1 = 58 - 32 = 26 \]

4.4.2 Interquartil Financial Literacy

Tabel 2. Perhitungan Interquartile Variabel Financial Literacy
Langkah Nilai
Jumlah Data (n) 2000
Posisi Q1 = ceil((n + 1) × 0.25) 501
Posisi Q3 = ceil((n + 1) × 0.75) 1501
Nilai Q1 63
Nilai Q3 77
Interquartile Range (IQR) 14

Rumus Perhitungan (Financial Literacy)

Posisi Kuartil \[ Q1 = X_{\lceil (n+1) \times 0.25 \rceil} \]

\[ Q3 = X_{\lceil (n+1) \times 0.75 \rceil} \]

Substitusi Nilai \[ Q1 = X_{ 501 } = 63 \]

\[ Q3 = X_{ 1501 } = 77 \]


Interquartile Range (IQR) \[ IQR = Q3 - Q1 = 77 - 63 = 14 \]

library(ggplot2)
library(readxl)

data <- read_excel("C:/Users/HP/Desktop/statistik uts/Midterm_Exam_kelompok.csv.xlsx")

ggplot(data, aes(x = Age, y = FinancialLiteracy)) +
  geom_point(alpha = 0.7, color = "#1A73E8", size = 3) +
  geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 1) +
  theme_minimal(base_size = 14) +
  labs(
    title = "Scatter Plot Age vs Financial Literacy",
    x = "Age",
    y = "Financial Literacy",
    caption = "Garis merah = garis regresi (trend hubungan)"
  )

Penjelasan : Berdasarkan scatter plot yang menggambarkan hubungan antara Age dan Financial Literacy, terlihat bahwa titik-titik data tersebar secara acak tanpa pola tertentu, sementara garis regresi yang hampir mendatar menunjukkan bahwa tidak terdapat hubungan linear yang berarti antara kedua variabel tersebut. Pola sebaran yang relatif merata pada seluruh rentang usia mengindikasikan bahwa tingkat literasi keuangan tidak mengalami peningkatan maupun penurunan yang konsisten seiring bertambahnya usia. Dengan demikian, temuan ini mengisyaratkan bahwa usia bukan merupakan faktor yang mampu memprediksi variasi literasi keuangan secara signifikan, sehingga kemungkinan terdapat variabel lain yang lebih berpengaruh dalam menjelaskan perbedaan tingkat literasi keuangan antarindividu.

5 summary

Berdasarkan hasil perhitungan statistik deskriptif, variabel Age lebih kecil dibandingkan dengan Financial Literacy. Data umur responden lebih seragam atau tidak terlalu bervariasi, sedangkan tingkat literasi keuangan responden lebih beragam atau bervariasi antar individu. Berdasarkan hasil perhitungan statistik deskriptif,variabel Financial Literacy memiliki nilai standar deviasi yang lebih besar dibandingkan dengan variabel Age. Data variabel literasi keuangan kurang konsisten atau lebih bervariasi,karena nilai-nilainya menyebar lebih jauh dari rata-rata dibandingkan dengan data umur responden yang lebih seragam. Dan dari hasil visualisasi, terlihat bahwa data Age lebih stabil atau seragam, sedangkan Financial Literacy lebih bervariasi. Maka, usia para responden hampir sama,tapi kemampuan atau pemahaman mereka tentang keuangan berbeda-beda. Hasil ini menunjukan bahwa faktor usia tidak terlalu mempengaruhi perbedaan tingkat literasi keuangan responden, karena meskipun usianya hampir sama, tingkat pengetahuan dan pengalaman dalam mengelola keuangan tetap beragam di antara masing-masing individu.

LINK VIDEO PENUGASAN:

Klik gambar untuk menonton video