Update: 2026-07-06 19:27:17

This commit is contained in:
Hamza-Ayed
2026-07-06 19:27:17 +03:00
parent 3c9a3dbef8
commit 5725fb36f4
2 changed files with 42 additions and 5 deletions
+24
View File
@@ -209,6 +209,30 @@ export function twoStageRegression(
return { baseFare, kmRate: rates.kmRate, minRate: rates.minRate };
}
/**
* Simple distance-only model: price = kmRate × dist
* Returns null if data is degenerate.
*/
export function simpleDistanceModel(
samples: Array<{ distance_km: number; duration_min: number; price: number }>
): { baseFare: number; kmRate: number; minRate: number } | null {
const dists = samples.map(s => s.distance_km);
const prices = samples.map(s => s.price);
// Mean of price/distance ratios, weighted by distance
let sumRatio = 0, count = 0;
for (let i = 0; i < dists.length; i++) {
if (dists[i] > 0 && prices[i] > 0) {
sumRatio += prices[i] / dists[i];
count++;
}
}
if (count < 3) return null;
const kmRate = Math.round((sumRatio / count) * 1000) / 1000;
return { baseFare: 0, kmRate, minRate: 0 };
}
// ─────────────────────────────────────────────
// Robust regression (iterative outlier removal)
// ─────────────────────────────────────────────