Predicting Values by Date using JavaScript

Posted on

Prediksi Nilai Berdasarkan Tanggal

Memprediksi nilai berdasarkan tanggal sering dibutuhkan dalam berbagai ilmu, salah satu nya pada ilmu statitiska untuk melakukan analisisa. Dalam artikel ini, saya akan membagikan kode program Javascript untuk prediksi nilai berdasarkan tanggal (Predicting Values Based On Date) dengan pendekatan regresi linier berdasarkan tanggal yang diberikan.

Apa itu Regresi Linier?

Regresi linier adalah metode statistik yang digunakan untuk menemukan hubungan linier antara dua atau lebih variabel. Dengan ini, memungkinkan kita untuk menyesuaikan garis lurus ke titik-titik data yang diketahui, dan kemudian menggunakan garis tersebut untuk memprediksi nilai pada titik-titik lain di masa depan. Kami akan menggunakan metode ini untuk membuat fungsi yang dapat memprediksi nilai berdasarkan tanggal.

Sebuah tulisan dari IBM dapat memberikan gambaran kepada kita apa maksud dsari regresi linier ini, sebagaimana ditunjukkan pada grafik berikut:

Predicting Values Based on Date using JavaScript
Regresi Linier – Sumber gambar dari IBM Machine Learning


Bahan yang disiapkan

  1. Kumpulkan Data
    Pertama-tama, kita siapkan data yang diperlukan. Dalam hal ini kita siapkan data per tanggal, misalnya:
    • tanggal 2023-02-12 nilainya 34
    • tanggal 2023-02-13 nilainya 90
    • tanggal 2023-02-15 nilainya 60
  2. Siapkan Regresi Linier
    Kita akan gunakan metode kuadrat terkecil untuk membuatkan garis lurus ke titik-titik data yang diketahui berdasarkan data diatas
  3. Prediksi Nilai
    Setelah kita memiliki model regresi linier, kita gunaka tanggal-tanggal baru yang ingin kita prediksi untuk mencari nilai yang sesuai dengan garis regresi.


Kode Program

Berikut adalah contoh implementasi fungsi JavaScript untuk memprediksi nilai berdasarkan tanggal:

// Fungsi untuk memprediksi nilai berdasarkan tanggal menggunakan pendekatan TREND seperti Excel
function predictTrend(data, targetDate) {
    // Mengumpulkan nilai y dan x dari data
    var knownYs = data.map(entry => entry.value);
    var knownXs = data.map(entry => new Date(entry.date).getTime());

    // Menghitung jumlah data
    var n = knownYs.length;

    // Menghitung jumlah X dan Y
    var sumX = knownXs.reduce((acc, val) => acc + val, 0);
    var sumY = knownYs.reduce((acc, val) => acc + val, 0);
    var sumXY = knownXs.reduce((acc, val, index) => acc + val * knownYs[index], 0);
    var sumXX = knownXs.reduce((acc, val) => acc + val * val, 0);

    // Menghitung koefisien regresi (m) dan intercept (c)
    var m = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
    var c = (sumY - m * sumX) / n;

    // Memperkirakan nilai Y baru berdasarkan nilai X baru
    var newX = targetDate.getTime();
    var newY = m * newX + c;

    return newY;
}

// Data yang diberikan
var data = [
    { date: "2023-02-12", value: 34 },
    { date: "2023-02-13", value: 90 },
    { date: "2023-02-15", value: 60 }
];

// Tanggal yang ingin diprediksi nilainya
var targetDate = new Date("2023-02-14");

// Memperkirakan nilai untuk tanggal tertentu
var predictedValue = predictTrend(data, targetDate);
console.log("Perkiraan nilai untuk tanggal " + targetDate.toDateString() + " adalah: " + predictedValue);

Ketika dijalankan maka hasil dari program Javascript adalah 64.85714302847919. Untuk membandingkan hasil perhitungan kode program diatas, kita gunakan sebuah function dari Excel yaitu “TREND” dengan asumsi data yang dimasukkan adalah sama. Maka hasilnya adalah sama dengan keluaran dari Javascript yaitu seperti yang ditunjukkan pada gambar berikut:

Predicting Values Based on Date using JavaScript


Semoga artikel Predicting Values Based on Date using JavaScript ini bermanfaat.