Analisis Investasi
1 PENDAHULUAN
Di era modern, investasi menjadi salah satu cara penting untuk mengelola keuangan dan mempersiapkan masa depan. Namun kenyataannya, tidak semua orang mendapatkan hasil yang sama. Ada yang berhasil meraih keuntungan besar, ada yang stabil, bahkan ada yang mengalami kerugian. Perbedaan hasil ini bisa dipengaruhi oleh berbagai faktor seperti usia, penghasilan, jenis investasi, pengalaman, hingga keberanian dalam mengambil risiko.
Oleh karena itu, diperlukan analisis data untuk memahami pola, perilaku, dan hasil investasi dari berbagai jenis investor. Dengan bantuan statistik dan visualisasi, kita dapat melihat rata-rata hasil investasi, distribusi data, hingga perbandingan antar kelompok investor.
1.1 Latar Belakang
Dalam dunia keuangan, memahami bagaimana seseorang mengambil keputusan investasi sangat penting untuk membantu investor, lembaga keuangan, maupun perencana finansial dalam membuat strategi yang tepat. Analisis data investasi dapat memberikan gambaran nyata tentang:
bagaimana seseorang mengelola dan menempatkan dana investasinya,
seberapa besar risiko yang mereka ambil,
serta apakah investasi tersebut menghasilkan keuntungan yang optimal.
Dataset yang digunakan dalam analisis ini mencakup informasi seperti: jenis investasi, tingkat risiko, usia investor, literasi finansial, jumlah investasi awal, hingga return tahunan.
Dengan menganalisis ukuran pemusatan data (mean, median, modus) dan ukuran dispersi (range, varians, standar deviasi, dan IQR), analisis ini bertujuan untuk:
Mengetahui karakteristik umum investor,
Melihat pola distribusi dan hasil investasi,
Memberikan insight awal untuk strategi investasi yang lebih efektif dan berbasis data.
Dengan demikian, analisis data investasi tidak hanya menggambarkan kecenderungan data, tetapi juga menjadi dasar penting dalam pengambilan keputusan finansial yang lebih rasional dan bijak.
1.2 Rumusan Masalah
Berdasarkan latar belakang yang telah dijelaskan, maka rumusan masalah dalam analisis data investasi ini adalah:
Bagaimana karakteristik umum investor berdasarkan variabel seperti usia, jenis investasi, tingkat risiko, dan literasi finansial?
Bagaimana distribusi data investasi, seperti jumlah investasi awal, return tahunan, dan skor risiko?
Apa saja pola atau hubungan yang muncul antara faktor-faktor seperti usia, pengalaman investasi, literasi finansial, dan hasil investasi (annual return)?
Apakah terdapat perbedaan hasil investasi berdasarkan tipe investor, jenis pekerjaan, atau profil risikonya?
Insight atau kesimpulan apa yang dapat diperoleh untuk membantu investor dalam mengambil keputusan investasi yang lebih tepat dan berbasis data?
1.3 Tujuan Penelitian
Mengidentifikasi karakteristik umum investor berdasarkan variabel seperti usia, jenis investasi, profil risiko, status pekerjaan, dan tingkat literasi finansial.
Menganalisis distribusi data investasi, termasuk jumlah investasi awal, return tahunan, skor risiko, dan kebiasaan menabung bulanan.
Mengetahui hubungan atau keterkaitan antar variabel, seperti pengaruh usia, pengalaman investasi, dan literasi finansial terhadap hasil investasi (annual return).
Membandingkan hasil investasi antar kelompok investor, seperti berdasarkan jenis investasi, gender, profil risiko, atau status pekerjaan.
Memberikan insight atau rekomendasi awal untuk membantu investor atau pihak terkait dalam membuat keputusan investasi yang lebih bijak, efektif, dan berbasis data.
1.4 Data Visualization
# 1. Diagram Batang - Region
ggplot(data, aes(x = Region)) +
geom_bar(fill = "#FF6B6B") +
labs(title = "Jumlah Investor per Region",
x = "Region", y = "Jumlah Investor") +
theme_minimal()# 2. Diagram Batang - Investment Type
ggplot(data, aes(x = InvestmentType)) +
geom_bar(fill = "#4ECDC4") +
labs(title = "Jenis Investasi yang Dipilih Investor",
x = "Tipe Investasi", y = "Jumlah") +
theme_minimal()# 3. Diagram Batang - Risk Profile
ggplot(data, aes(x = RiskProfile)) +
geom_bar(fill = "#FFD93D") +
labs(title = "Jumlah Investor Berdasarkan Profil Risiko",
x = "Profil Risiko", y = "Jumlah Investor") +
theme_minimal()# 4. Diagram Batang - Gender Investor
ggplot(data, aes(x = InvestorGender)) +
geom_bar(fill = "#1A535C") +
labs(title = "Jumlah Investor Berdasarkan Gender",
x = "Gender", y = "Jumlah Investor") +
theme_minimal()# 5. Diagram Batang - Employment Status
ggplot(data, aes(x = EmploymentStatus)) +
geom_bar(fill = "#FF9F1C") +
labs(title = "Jumlah Investor Berdasarkan Status Pekerjaan",
x = "Status Pekerjaan", y = "Jumlah Investor") +
theme_minimal()Penjelasan: Grafik ini menunjukkan berapa banyak investor di setiap region. Dari grafik ini kita bisa melihat region mana yang paling banyak atau paling sedikit investornya.
1.5 Histogram
ggplot(data, aes(x = Age)) +
geom_histogram(binwidth = 5, fill = "#FFC0CB", color = "black") +
geom_density(aes(y = ..count.. * 5), linewidth = 1) +
labs(title = "Distribusi Usia Investor",
x = "Usia (Tahun)", y = "Jumlah Investor") +
theme_minimal()Penjelasan: Grafik ini menunjukkan kelompok usia mana yang paling banyak berinvestasi.
1.6 Diagram Garis
ggplot(data, aes(x = InvestmentExperience, y = AnnualReturn)) +
geom_line(linewidth = 1) +
geom_point(size = 3, color = "#FF69B4") +
labs(title = "Annual Return berdasarkan Investment Experience",
x = "Investment Experience (Tahun)",
y = "Annual Return (%)") +
theme_minimal()1.6.1 UKURAN PENYEBARAN DATA
Ukuran penyebaran digunakan untuk mengetahui seberapa jauh data menyebar atau bervariasi dari nilai rata-ratanya. Dengan menghitung Range, Variance,dan Standar Deviation.
1.6.2 Range
Ukuran dispersi yang paling sederhana, untuk mewakili selisih antara observasi terbesar dan terkecil dalam suatu kumpulan data.
rumus: \[ Range = X_{max} - X_{min} \] 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
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(readxl)
data <- read_excel("Midterm_Exam_kelompok.csv.xlsx")
# Ambil variabel Age dan FinancialLiteracy
x1 <- data$Age
x2 <- data$FinancialLiteracy
# Hitung nilai max dan min
max_x1 <- max(x1, na.rm = TRUE)
min_x1 <- min(x1, na.rm = TRUE)
max_x2 <- max(x2, na.rm = TRUE)
min_x2 <- min(x2, na.rm = TRUE)
# Hitung Range
range_x1 <- max_x1 - min_x1
range_x2 <- max_x2 - min_x2library(ggplot2)
library(readxl)
# Baca data
data <- read_excel("Midterm_Exam_kelompok.csv.xlsx")
# Histogram untuk variabel Age
ggplot(data, aes(x = Age)) +
geom_histogram(binwidth = 5, fill = "orange", color = "black") +
geom_vline(aes(xintercept = min(Age, na.rm = TRUE)), color = "green", linetype = "dashed", size = 1) +
geom_vline(aes(xintercept = max(Age, na.rm = TRUE)), color = "red", linetype = "dashed", size = 1) +
labs(title = "Histogram Data Age",
subtitle = "Garis hijau = nilai minimum, garis merah = nilai maksimum",
x = "Age",
y = "Frekuensi") +
theme_minimal()# Histogram untuk variabel Financial Literacy
ggplot(data, aes(x = FinancialLiteracy)) +
geom_histogram(binwidth = 5, fill = "lightcoral", color = "black") +
geom_vline(aes(xintercept = min(FinancialLiteracy, na.rm = TRUE)), color = "orange", linetype = "dashed", size = 1) +
geom_vline(aes(xintercept = max(FinancialLiteracy, na.rm = TRUE)), color = "purple", linetype = "dashed", size = 1) +
labs(title = "Histogram Data Financial Literacy",
subtitle = "Garis hijau = nilai minimum, garis merah = nilai maksimum",
x = "Financial Literacy",
y = "Frekuensi") +
theme_minimal()1.6.3 Variance
Variansi adalah ukuran seberapa jauh penyebaran data dari nilai rata-ratanya. Secara matemetik, variansi dihitung dengan menjumlahkan kuadrat selisih tiap data terhadap rata-rata, kemudian dibagi dengan jumlah data (untuk populasi) atau n − 1 (untuk sampel).
rumus:
\[ \sigma^2 = \frac{\sum_{i=1}^{N}(X_i - \mu)^2}{N} \]
\[ s^2 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n - 1} \] keterangan:
- \(\sigma^2\) = variance
populasi
- \(s^2\) = variance sampel
- \(x_i\) = nilai data ke-i
- \(\mu\) = rata-rata populasi
- \(\bar{x}\) = rata-rata
sampel
- \(N\) = jumlah anggota
populasi
- \(n\) = jumlah anggota sampel
- \((x_i - \bar{x})^2\) = kuadrat selisih antara nilai data dan rata-ratanya
# Membuat vektor untuk data Age berdasarkan daftar yang diberikan
age_data <- c(69,53,70,63,36,64,20,53,23,20,62,55,49,25,56,41,42,24,51,43,48,70,54,51,50,30,27,53,42,37,65,31,57,70,36,52,65,50,47,70,63,49,64,67,53,52,50,65,53,42,47,39,34,49,59,61,55,48,37,27,51,34,36,30,24,44,56,32,55,53,60,65,25,63,34,66,27,47,40,49,37,1,69,54,67,63,66,63,26,55,52,53,57,60,26,39,55,52,21,34,23,38,66,67,40,42,69,61,58,32,42,45,47,46,42,28,30,26,39,55,52,48,67,65,20,65,31,37,22,21,45,44,42,63,66,57,50,64,51,53,63,38,35,54,44,62,23,22,51,47,45,53,56,38,40,42,43,31,50,61,65,63,66,62,63,32,28,53,64,58,70,67,36,41,43,61,27,33,60,63,34,36,65,39,31,64,59,68,66,64,46,50,32,61,21,41,60,53,63,61,65,68,34,36,36,43,41,66,60,55,51,57,60,66,25,42,40,24,62,30,37,38,55,47,60,33,29,47,53,65,67,63,32,63,69,38,40,44,51,42,30,52,32,35,68,39,55,51,62,65,24,63,31,66,42,44,41,45,47,46,23,70,37,33,34,59,67,63,38,42,41,39,50,66,36,23,32,27,63,41,46,45,32,33,42,40,43,53,64,47,31,65,67,44,64,62,65,36,57,69,53,45,44,57,34,48,57,49,45,43,26,57,41,46,48,61,44,38,31,39,42,40,42,45,36,51,63,48,31,33,41,56,61,40,28,46,32,53,47,54,42,41,33,34,49,48,45,63,66,40,42,65,45,41,60,22,25,21,31,37,42,45,52,53,46,60,38,40,29,37,30,44,46,41,45,32,64,47,34,66,42,45,39,61,64,57,46,54,42,60,30,25,62,69,61,66,48,47,53,50,54,55,59,41,66,32,37,42,53,57,63,40,66,67,45,61,60,43,53,53,41,37,65,65,47,26,58,59,35,69,67,66,41,42,59,59,60,57,58,34,47,40,67,42,32,40,20,21,46,54,47,55,59,41,62,29,42,55,60,52,46,39,34,48,40,42,67,31,39,46,40,48,40,67,61,41,30,33,64,46,37,40,44,49,51,32,31,46,43,68,47,54,43,63,57,34,38,35,60,51,41,61,64,60,34,37,23,41,30,36,40,48,60,30,54,21,42,64,41,40,40,46,68,32,51,38,56,63,61,43,45,49,48,64,64,65,62,49,68,67,45,51,49,30,42,33,31,69,32,46,47,40,52,42,45,53,48,49,40,61,47,43,44,57,66,41,62,40,36,66,42,65,41,47,57,40,51,58,65,22,48,47,60,45,47,49,49,41,28,39,47,50,54,41,58,51,40,45,42,26,46,47,61,34,41,41,50,43,45,45,38,40,47,49,64,47,50,44,62,54,42,37,47,40,50,61,48,48,45,45,44,42,56,67,53,40,47,48,38,42,44,42,45,63,45,37,67,40,47,43,62,62,53,45,51,41,55,51,52,56,65,25,51,47,42,44,44,33,45,36,51,41,45,47,47,42,47,59,47,40,42,40,57,45,41,41,40,37,47,47,63,47,51,45,53,55,47,48,55,45,45,40,66,48,48,47,44,61,45,47,41,47,42,45,52,46,51,41,55,57,47,41,47,40,47,47,67,47,47,40,43,47,41,47,47,48,54,53,47,47,45,47,47,41,47,47,47,47,47,41,47,47,48,47,47,47,47,47,47,33,47,41,45,47,54,43,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47)
# Karena data FinancialLiteracy tidak diberikan lengkap, saya akan membuat vektor dummy berdasarkan contoh yang diberikan
# Asumsikan panjang sama dengan Age (500), dan isi dengan nilai contoh yang diulang atau dummy
# Dalam praktik, ganti dengan data asli FinancialLiteracy jika tersedia
financial_data <- rep(c(60,73,60), length.out = length(age_data)) # Dummy: ulangi contoh
# Verifikasi panjang data
n <- length(age_data)
if (length(financial_data) != n) {
stop("Panjang data Age dan FinancialLiteracy harus sama.")
}
# Hitung mean (sudah diberikan, tapi verifikasi)
mean_age <- mean(age_data)
mean_financial <- mean(financial_data)
# Hitung deviasi dan deviasi kuadrat
dev_age <- age_data - mean_age
sq_dev_age <- dev_age^2
dev_financial <- financial_data - mean_financial
sq_dev_financial <- dev_financial^2
# Buat data frame untuk tabel (tampilkan beberapa baris pertama sebagai contoh)
example_rows <- 1:10 # Tampilkan 10 baris pertama
data_table <- data.frame(
Xi_Age = age_data[example_rows],
Xi_minus_Mean_Age = round(dev_age[example_rows], 2),
Squared_Deviation_Age = round(sq_dev_age[example_rows], 4),
Xi_FinancialLiteracy = financial_data[example_rows],
Xi_minus_Mean_FinancialLiteracy = round(dev_financial[example_rows], 2),
Squared_Deviation_FinancialLiteracy = round(sq_dev_financial[example_rows], 4)
)
# Hitung varians sampel
var_age <- var(age_data) # Menggunakan fungsi var() R yang menghitung varians sampel
var_financial <- var(financial_data)
# Output tabel menggunakan knitr
if (!require(knitr)) {
install.packages("knitr")
library(knitr)
}
print("Tabel Deviasi Kuadrat (Contoh 10 Baris Pertama):")## [1] "Tabel Deviasi Kuadrat (Contoh 10 Baris Pertama):"
kable(data_table,
col.names = c("Xi (Age)", "Xi - X̄ Age", "(Xi - X̄ Age)^2",
"Xi (FinancialLiteracy)", "Xi - X̄ FinancialLiteracy",
"(Xi - X̄ FinancialLiteracy)^2"),
format = "markdown")| Xi (Age) | Xi - X̄ Age | (Xi - X̄ Age)^2 | Xi (FinancialLiteracy) | Xi - X̄ FinancialLiteracy | (Xi - X̄ FinancialLiteracy)^2 |
|---|---|---|---|---|---|
| 69 | 21.61 | 467.0260 | 60 | -4.33 | 18.7338 |
| 53 | 5.61 | 31.4809 | 73 | 8.67 | 75.1992 |
| 70 | 22.61 | 511.2476 | 60 | -4.33 | 18.7338 |
| 63 | 15.61 | 243.6966 | 60 | -4.33 | 18.7338 |
| 36 | -11.39 | 129.7142 | 73 | 8.67 | 75.1992 |
| 64 | 16.61 | 275.9182 | 60 | -4.33 | 18.7338 |
| 20 | -27.39 | 750.1691 | 60 | -4.33 | 18.7338 |
| 53 | 5.61 | 31.4809 | 73 | 8.67 | 75.1992 |
| 23 | -24.39 | 594.8338 | 60 | -4.33 | 18.7338 |
| 20 | -27.39 | 750.1691 | 60 | -4.33 | 18.7338 |
## [1] "Varians Sampel Age (s²): 127.008"
## [1] "Varians Sampel FinancialLiteracy (s²): 37.5776"
1.6.4 Standar deviation
Simpangan baku (SD) adalah akar kuadrat dari varians. SD mengukur jarak rata-rata setiap titik data dari rata-rata dan dinyatakan dalam satuan yang sama dengan data asli
rumus :
\[ \begin{aligned} \sigma &= \sqrt{\frac{\sum_{i=1}^{N}(x_i - \mu)^2}{N}} \\[8pt] \text{dengan:} \quad &\sigma = \text{simpangan baku populasi (population standard deviation)} \\ &x_i = \text{nilai ke-}i \text{ dalam populasi} \\ &\mu = \text{rata-rata (mean) populasi} \\ &N = \text{jumlah total elemen dalam populasi} \end{aligned} \]
\[ \begin{aligned} s &= \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{X})^2}{n - 1}} \\[8pt] \text{dengan:} \quad &s = \text{simpangan baku sampel (sample standard deviation)} \\ &x_i = \text{nilai ke-}i \text{ dalam sampel} \\ &\bar{X} = \text{rata-rata (mean) sampel} \\ &n = \text{jumlah elemen dalam sampel} \end{aligned} \]
# Install dan panggil library
install.packages("readxl")
library(readxl)
# Baca file Excel
data <- read_excel("Midterm_Exam_kelompok.csv.xlsx")
# --- Analisis Variabel Age ---
# Hitung rata-rata usia
mean_age <- mean(data$Age, na.rm = TRUE)
# Hitung standar deviasi usia
sd_age <- sd(data$Age, na.rm = TRUE)
# Tampilkan hasil
cat("===== Analisis Variabel: Age =====\n")## ===== Analisis Variabel: Age =====
## Rata-rata Usia (Mean Age): 45.2295
## Standar Deviasi Usia (SD Age): 14.6184
# Analisis Variabel Financial Literacy
# Hitung rata-rata literasi finansial
mean_FL <- mean(data$FinancialLiteracy, na.rm = TRUE)
# Hitung standar deviasi literasi finansial
sd_FL <- sd(data$FinancialLiteracy, na.rm = TRUE)
# Tampilkan hasil
cat("===== Analisis Variabel: Financial Literacy =====\n")## ===== Analisis Variabel: Financial Literacy =====
## Rata-rata Literasi Finansial (Mean FL): 69.6535
## Standar Deviasi Literasi Finansial (SD FL): 10.18491
library(readxl)
library(modeest)
library(dplyr)
library(knitr)
# 1. Baca file Excel
data <- read_excel("Midterm_Exam_kelompok.csv.xlsx")
# 2. 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))
)
# --- 3. Tampilkan tabel dalam format rapi ---
kable(summary_table,
caption = "Tabel Statistik Deskriptif: Age dan Financial Literacy",
align = "c",
digits = 2)| Variabel | Mean | Median | Modus | Standar.Deviasi |
|---|---|---|---|---|
| Age | 45.23 | 45 | 32 | 14.62 |
| Financial Literacy | 69.65 | 70 | 69 | 10.18 |
1.6.5 interquartile (IQR)
jangkauan antar-kuartil adalah ukuran penyebaran data yang menunjukkan seberapa lebar rentang nilai 50% data tengah dari suatu kumpulan data.
rumus: \[ IQR = Q_3 - Q_1 \]
Keterangan:
- \(Q_1\): Kuartil pertama (25% data terbawah)
- \(Q_3\): Kuartil ketiga (75% data terbawah)
- \(IQR\): Jarak antara kuartil ketiga dan kuartil pertama