Flexible NaN-handling

Đang mở
#34 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
numpy, python
Lĩnh vực
data

Hướng nghiên cứu

Start with the ensemble metric implementations and shared helpers in core/utils.py, then follow the weighted Energy Score pattern for vs_ensemble, twvs_ensemble, owvs_ensemble, and vrvs_ensemble. Check how apply_nan_policy_ens_uv, apply_nan_policy_ens_mv, and nan_policy_check handle invalid members and unsupported estimators. Done means the Variogram Score variants support the requested policies with tests for propagation, omission, and errors.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement

For ensemble-based scoring rules, we need flexible handling of missing values in ensemble members. Currently, ensemble-based metrics such as the CRPS return NaN if there is one or more NaNs in the ensemble members. It may be the case that users have an ensemble with a few NaNs (e.g. with lagged ensembles you have NaNs for some timestamps) but still want to get a valid score.

Proposed solution

We allow users to specify a nan_policy argument on ensemble metrics:

  • propagate (default): return NaN if any ensemble member is NaN
  • omit: ignore NaN values during computation
  • raise: raise an error if NaN values are encountered

NaN in the observations always propagates, regardless of policy. The omit policy flags every invalid member — any NaN member, and in the multivariate case any member with a NaN variable or weight — and folds it into the ensemble weights as a zero weight, routing the score through the existing weighted estimators (#117). Shared helpers (apply_nan_policy_ens_uv, apply_nan_policy_ens_mv, nan_policy_check) live in core/utils.py.

Status

Done

  • CRPS — crps_ensemble, twcrps_ensemble, owcrps_ensemble, vrcrps_ensemble (#118, merged).
  • Energy Score — es_ensemble, twes_ensemble, owes_ensemble, vres_ensemble (#123). First multivariate metric; also fixed two pre-existing bugs in the weighted energy numba kernels (ow = ow[0] scalar indexing, and np.mean(fw) vs np.sum(fw * ens_w) normalization).

Remaining

  • Variogram Score — vs_ensemble, twvs_ensemble, owvs_ensemble, vrvs_ensemble. Weighted estimators exist, so it follows the Energy pattern directly.
  • Gaussian Kernel Score — univariate and multivariate gks*_ensemble. Weighted estimators exist, but the weighted multivariate numba kernels still carry the ow = ow[0] bug fixed for Energy (core/kernels/_gufuncs_w.py:250, :277); needs fixing before the omit path runs on numba.

Not planned

  • Dawid–Sebastiani (dssuv_ensemble, dssmv_ensemble) — computed from mean/covariance, no weighted estimator to route through.
  • Log Score (logs_ensemble, clogs_ensemble) — kernel-density estimates, omit semantics not well defined.

Note: omit is not implemented for estimators that cannot be expressed through member weighting (CRPS int/akr/akr_circperm, Energy akr/akr_circperm); these raise NotImplementedError.

Ngôn ngữ chính
Python
Star
108
Fork
15
Merge trung bình
1 giờ 42 phút
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của frazane/scoringrules

Tất cả issue của frazane/scoringrules

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.