import React, { useState, useEffect } from 'react'; import * as API from '../api.js'; import ConfidenceArc from './ConfidenceArc.jsx'; export default function DemandOracleView({ onBack }) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [modelMode, setModelMode] = useState('tobit'); // 'tobit' or 'ols' useEffect(() => { API.fetchDemandOracle().then((res) => { if (res && res.predictions) { setData(res); } setLoading(false); }); }, []); return (
Standard forecasters (OLS) ignore stockouts and treat zero sales as zero demand, underestimating true demand by 38.99% WMAPE. HyperFlow uses Maximum Likelihood Estimation (Tobit) to recover right-censored latent demand during stockout windows.
INR {pred.price_inr}
{pointUnits} units
{modelMode === 'tobit' ? 'UNCONSTRAINED LATENT DEMAND' : 'CENSORED OBSERVED SALES (BIASED)'}