Practicum 3 — Functions & Loops

Functions & Loops · Interactive Dashboard

R LANGUAGE DATA SCIENCE ITSB

Profile

Data Science Practicum
Course: Data Science Programming
Topic: Functions & Loops · Interactive Analytics
Instructor: Bakti Siregar, M.Sc
Institute: Institut Teknologi Sains Bandung

R LanguageFunctions LoopsMonte Carlo PlotlyVisualization

TASK 01
Multi Formula Function
Linear, Quadratic, Cubic & Exponential — compute_formula(x, formula)
📐 Objective: Build compute_formula(x, formula) yang mendukung linear (2x+3), quadratic (x²+2x+1), cubic (x³−3x²+x), dan exponential (2^x). Plot semua hasil secara interaktif.
ALL FORMULAS · x = 1–20
Linear at x=20
43
2×20 + 3
Quadratic at x=20
441
20² + 2×20 + 1
Cubic at x=20
6820
20³ − 3×20² + 20
Exponential at x=20
1,048,576
2²⁰
💡 Interpretasi — Task 1
Fungsi compute_formula() menggunakan logika if/else if bercabang untuk menghitung empat formula matematika.

Eksponensial (2^x) mendominasi semua — tumbuh dari 2 (x=1) hingga lebih dari 1 juta (x=20). Kubik mencapai ~6.820 di x=20. Kuadratik moderat mencapai 441, sedangkan Linear paling lambat hanya 43.

Visualisasi ini memperlihatkan prinsip dasar kompleksitas algoritma dan model pertumbuhan.
TASK 02
Sales Simulation with Discounts
Nested loops — simulate_sales(n_salesperson=5, days=20)
🛒 Objective: Build simulate_sales(n_salesperson, days) dengan loop bersarang. Diskon kondisional: ≤500 → 5%, 501–800 → 10%, >800 → 20%.
CUMULATIVE SALES · 5 Salesperson × 20 Days
DAILY SALES DISTRIBUTION · by Salesperson
💡 Interpretasi — Task 2
Loop bersarang (salesperson → hari) menghasilkan 100 record penjualan harian. Diskon kondisional diterapkan berdasarkan threshold: 5% rendah, 10% menengah, 20% tinggi.

Grafik kumulatif menunjukkan pertumbuhan steady selama 20 hari. Box plot mengonfirmasi distribusi acak yang fair untuk semua salesperson.
TASK 03
Performance Categorization
5-tier classification — categorize_performance(sales)
🏆 Objective: Build categorize_performance(sales) dengan 5 kategori: Excellent (>800), Very Good (>600), Good (>400), Average (>200), Poor (≤200).
DISTRIBUSI PERFORMA · Bar Chart
PROPORSI · Pie Chart
💡 Interpretasi — Task 3
Karena penjualan dibangkitkan secara seragam (100–999), setiap tier menangkap sekitar ~20% observasi. Poor (≤200) sangat jarang karena rentangnya hanya 100 unit dari 900 total.

Bar chart menunjukkan hitungan absolut; pie chart memperlihatkan proporsi relatif — konsisten dengan distribusi uniform.
TASK 04
Multi-Company Dataset Simulation
generate_company_data(n_company=5, n_employees=100) → 500 records
🏢 Objective: Build generate_company_data(n_company, n_employees) dengan loop bersarang menghasilkan data salary (3000–14999), department (IT/HR/Finance/Marketing), performance (50–99), KPI (60–99).
RATA-RATA GAJI PER PERUSAHAAN
AVG PERFORMANCE & MAX KPI PER PERUSAHAAN
💡 Interpretasi — Task 4
generate_company_data() menggunakan loop bersarang menghasilkan 5×100=500 record. Rata-rata gaji berkisar ~9.000 — konsisten dengan sampling uniform 3.000–14.999. Performance dan KPI rata-rata konvergen di sekitar ~75.
TASK 05
Monte Carlo Simulation: π Estimation
monte_carlo_pi(n_points=2000) — estimasi π menggunakan rasio titik dalam lingkaran
🎲 Objective: Build monte_carlo_pi(n_points) — estimasi π dengan formula π ≈ 4 × (titik dalam lingkaran / total titik) menggunakan koordinat acak (x,y) ∈ [-1,1].
MONTE CARLO SIMULATION · 2.000 Titik
Estimasi π
Monte Carlo result
π Sejati
3.14159
Nilai aktual
Titik Dalam
dari 2.000 total
Error (%)
|estimasi − π| / π
KONVERGENSI π vs JUMLAH TITIK
💡 Interpretasi — Task 5
Monte Carlo mengestimasi π menggunakan probabilitas geometri. Grafik konvergensi menunjukkan estimasi berfluktuasi pada n kecil namun semakin stabil mendekati π seiring n bertambah — ilustrasi nyata Hukum Bilangan Besar.
TASK 06
Data Transformation Pipeline
transform_data(data, method) — Normalization, Standardization, Log & Square Root
⚙️ Objective: Build transform_data(data, method) mendukung: normalize (0–1), standardize (z-score), log (log1p), sqrt. Loop melalui 1.000 nilai acak dan bandingkan distribusinya.
DISTRIBUSI TRANSFORMASI · Overlay Histogram
BOX PLOT PERBANDINGAN METODE
💡 Interpretasi — Task 6
Normalize memampatkan ke [0,1]. Standardize (z-score) memusatkan di nol dengan std=1. Log meredam nilai ekstrem. Sqrt efek serupa namun lebih ringan. Box plot memperlihatkan perbedaan rentang dan outlier secara jelas.
TASK 07
KPI Dashboard Multi-Metric
calculate_kpi(data) → Revenue, Profit Margin, Growth Rate, Customer Satisfaction
📊 Objective: Build calculate_kpi(data) yang menghitung 4 KPI utama bisnis dan menampilkannya dalam dashboard dengan trend bulanan selama 12 bulan.
Total Revenue
Rp 124.5M
↑ 12.3% vs last year
Profit Margin
23.8%
Above industry avg 18%
Growth Rate
8.7%
MoM average growth
Cust. Satisfaction
4.3 / 5
Based on 1,200 reviews
REVENUE & PROFIT TREND · 12 Months
GROWTH RATE & SATISFACTION
💡 Interpretasi — Task 7
calculate_kpi() menggabungkan loop untuk agregasi bulanan dengan fungsi statistik untuk margin dan growth rate. Revenue tumbuh konsisten dengan puncak di Q4. Profit margin stabil di atas 20% menunjukkan efisiensi operasional yang baik.
TASK 08
Automated Report Generation
generate_report(data) Summary statistics, kategorisasi, dan narasi otomatis
🤖 Objective: Build generate_report(data) yang secara otomatis menghasilkan laporan statistik lengkap — mean, median, SD, min/max, persentil — dari dataset 500 karyawan.
LAPORAN STATISTIK OTOMATIS · 500 Employees
Metric Salary (Rp) Performance KPI Score
DISTRIBUSI SALARY · Histogram
💡 Interpretasi — Task 8
generate_report() mengotomasi pipeline analisis: loop untuk iterasi kolom, fungsi statistik (mean, median, SD, quantile), dan tabel ringkasan terstruktur. Distribusi salary mendekati uniform menghasilkan mean ~9.000 dan SD ~3.460.