Show EMOS probability labels in intraday analysis
This commit is contained in:
@@ -743,6 +743,14 @@ export function FutureForecastModal() {
|
|||||||
[dateStr, detail],
|
[dateStr, detail],
|
||||||
);
|
);
|
||||||
const modelView = useMemo(() => getModelView(detail, dateStr), [dateStr, detail]);
|
const modelView = useMemo(() => getModelView(detail, dateStr), [dateStr, detail]);
|
||||||
|
const probabilityEngineKey = String(probabilityView?.engine || "")
|
||||||
|
.trim()
|
||||||
|
.toLowerCase();
|
||||||
|
const probabilityCalibrationMode = String(
|
||||||
|
probabilityView?.calibrationMode || "",
|
||||||
|
)
|
||||||
|
.trim()
|
||||||
|
.toLowerCase();
|
||||||
const hasLgbmProbability = useMemo(
|
const hasLgbmProbability = useMemo(
|
||||||
() =>
|
() =>
|
||||||
Object.keys(modelView?.models || {}).some((name) =>
|
Object.keys(modelView?.models || {}).some((name) =>
|
||||||
@@ -750,6 +758,28 @@ export function FutureForecastModal() {
|
|||||||
),
|
),
|
||||||
[modelView],
|
[modelView],
|
||||||
);
|
);
|
||||||
|
const hasEmosProbability =
|
||||||
|
probabilityEngineKey === "emos" || probabilityCalibrationMode.includes("emos");
|
||||||
|
const probabilityEngineLabel = hasLgbmProbability
|
||||||
|
? locale === "en-US"
|
||||||
|
? "LGBM"
|
||||||
|
: "LGBM"
|
||||||
|
: hasEmosProbability
|
||||||
|
? "EMOS"
|
||||||
|
: locale === "en-US"
|
||||||
|
? "Calibrated model"
|
||||||
|
: "校准模型";
|
||||||
|
const probabilityTitle = hasLgbmProbability
|
||||||
|
? locale === "en-US"
|
||||||
|
? "LGBM-Calibrated Probability"
|
||||||
|
: "LGBM 校准概率"
|
||||||
|
: hasEmosProbability
|
||||||
|
? locale === "en-US"
|
||||||
|
? "EMOS-Calibrated Probability"
|
||||||
|
: "EMOS 校准概率"
|
||||||
|
: locale === "en-US"
|
||||||
|
? "Calibrated Model Probability"
|
||||||
|
: "校准模型概率";
|
||||||
const topProbabilityBucket = useMemo(() => {
|
const topProbabilityBucket = useMemo(() => {
|
||||||
const buckets = Array.isArray(probabilityView?.probabilities)
|
const buckets = Array.isArray(probabilityView?.probabilities)
|
||||||
? probabilityView.probabilities
|
? probabilityView.probabilities
|
||||||
@@ -943,6 +973,11 @@ export function FutureForecastModal() {
|
|||||||
? `LGBM-calibrated read puts the leading bucket at ${bucketLabel} (${bucketProb}). Treat this as the base case, not the final settlement.`
|
? `LGBM-calibrated read puts the leading bucket at ${bucketLabel} (${bucketProb}). Treat this as the base case, not the final settlement.`
|
||||||
: `LGBM 校准后领先温度桶为 ${bucketLabel}(${bucketProb})。可作为基准情形,但不要直接等同于最终结算。`;
|
: `LGBM 校准后领先温度桶为 ${bucketLabel}(${bucketProb})。可作为基准情形,但不要直接等同于最终结算。`;
|
||||||
}
|
}
|
||||||
|
if (hasEmosProbability) {
|
||||||
|
return locale === "en-US"
|
||||||
|
? `EMOS-calibrated probability puts the leading bucket at ${bucketLabel} (${bucketProb}). It is the primary calibrated probability layer, not the final settlement.`
|
||||||
|
: `EMOS 校准概率显示领先温度桶为 ${bucketLabel}(${bucketProb})。这是当前主概率层,但不要直接等同于最终结算。`;
|
||||||
|
}
|
||||||
return locale === "en-US"
|
return locale === "en-US"
|
||||||
? `Calibrated model probability puts the leading bucket at ${bucketLabel} (${bucketProb}). Treat this as the base case, not the final settlement.`
|
? `Calibrated model probability puts the leading bucket at ${bucketLabel} (${bucketProb}). Treat this as the base case, not the final settlement.`
|
||||||
: `校准模型概率显示领先温度桶为 ${bucketLabel}(${bucketProb})。可作为基准情形,但不要直接等同于最终结算。`;
|
: `校准模型概率显示领先温度桶为 ${bucketLabel}(${bucketProb})。可作为基准情形,但不要直接等同于最终结算。`;
|
||||||
@@ -1311,8 +1346,8 @@ export function FutureForecastModal() {
|
|||||||
? "Model spread and calibrated buckets are updating."
|
? "Model spread and calibrated buckets are updating."
|
||||||
: "模型分歧和校准概率桶正在更新。"
|
: "模型分歧和校准概率桶正在更新。"
|
||||||
: locale === "en-US"
|
: locale === "en-US"
|
||||||
? "Probability buckets are derived from the local model stack."
|
? `Probability buckets are derived from the ${probabilityEngineLabel} layer.`
|
||||||
: "概率桶当前由本地模型栈推导。",
|
: `概率桶当前由 ${probabilityEngineLabel} 层推导。`,
|
||||||
},
|
},
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
@@ -1896,13 +1931,7 @@ export function FutureForecastModal() {
|
|||||||
{locale === "en-US" ? "Probability read" : "概率判断"}
|
{locale === "en-US" ? "Probability read" : "概率判断"}
|
||||||
</div>
|
</div>
|
||||||
<h3>
|
<h3>
|
||||||
{hasLgbmProbability
|
{probabilityTitle}
|
||||||
? locale === "en-US"
|
|
||||||
? "LGBM-Calibrated Probability"
|
|
||||||
: "LGBM 校准概率"
|
|
||||||
: locale === "en-US"
|
|
||||||
? "Calibrated Model Probability"
|
|
||||||
: "校准模型概率"}
|
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div className="future-text-block" style={{ marginBottom: "12px" }}>
|
<div className="future-text-block" style={{ marginBottom: "12px" }}>
|
||||||
|
|||||||
@@ -329,7 +329,10 @@ function formatProbabilityEngineLabel(
|
|||||||
: "LGBM 校准概率";
|
: "LGBM 校准概率";
|
||||||
}
|
}
|
||||||
const engine = String(view.engine || "").trim().toLowerCase();
|
const engine = String(view.engine || "").trim().toLowerCase();
|
||||||
if (engine === "emos") {
|
const calibrationMode = String(view.calibrationMode || "")
|
||||||
|
.trim()
|
||||||
|
.toLowerCase();
|
||||||
|
if (engine === "emos" || calibrationMode.includes("emos")) {
|
||||||
return locale === "en-US" ? "EMOS-calibrated probability" : "EMOS 校准概率";
|
return locale === "en-US" ? "EMOS-calibrated probability" : "EMOS 校准概率";
|
||||||
}
|
}
|
||||||
return locale === "en-US" ? "Model probability" : "模型概率";
|
return locale === "en-US" ? "Model probability" : "模型概率";
|
||||||
|
|||||||
Reference in New Issue
Block a user