`gaussian_dlm_obs_lpdf` returns NaN instead of rejecting when the innovation variance collapses after time zero
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
gaussian_dlm_obs_lpdf の vector-V オーバーロードと既存のテストから始め、最初の時刻ステップ後に Q がどのようにチェックされるかを追跡します。レポートの決定論的モデルに基づくリグレッションケースを追加し、その後のイノベーション分散がゼロの場合に NaN を返すのではなく std::domain_error が発生することを確認します。
索引モデルが issue の本文から書いたものです。
説明
The vector-V overload checks the innovation variance Q only in the first time step (if (i == 0) check_positive(function, "Q0", Q)). Later time steps compute 1.0 / Q and log(Q) unchecked. A deterministic model whose state covariance collapses after the first update returns NaN silently:
Eigen::MatrixXd y(1, 2); y << 0.5, 0.5; // r = 1 variable, T = 2
Eigen::MatrixXd F(1, 1); F << 1.0;
Eigen::MatrixXd G(1, 1); G << 1.0;
Eigen::VectorXd V(1); V << 0.0; // passes check_nonnegative
Eigen::MatrixXd W(1, 1); W << 0.0; // passes check_pos_semidefinite
Eigen::VectorXd m0(1); m0 << 0.0;
Eigen::MatrixXd C0(1, 1); C0 << 1.0;
double lp = stan::math::gaussian_dlm_obs_lpdf<false>(y, F, G, V, W, m0, C0);
// lp = -nan, no exception
At t = 0, Q = 1 > 0 so the check passes; the update collapses C to zero, so from t = 1 on, Q = 0, Q_inv = inf, and the log density is NaN. The doc comment promises std::domain_error for non-PSD matrices in the Kalman filter.
Environment:
- Ubuntu 22.04.5 LTS (WSL2, kernel 6.18.33.2-microsoft-standard-WSL2), x86_64
- stan-dev/math develop @ d20b238b9c
- g++ 11.4.0 (Ubuntu 22.04), -std=c++17
- 主要言語
- C++
- スター
- 845
- フォーク
- 225
- 平均マージ
- 3日 9時間
- マージ済み PR(30日)
- 12
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
stan-dev/math のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 54/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 54/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
numerics performance
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
stan-dev/math#3481 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
`eigendecompose_sym`, `eigenvalues_sym` and `eigenvectors_sym` do not compile for complex matrices of `fvar<var>` or `fvar<fvar<double>>`再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンbug
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
stan-dev/math#3477 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
rhalbersma/xstd-ints#395 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Root filesystem scope (/) incorrectly rejects all descendant paths対応中かも @mugenkyou が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
neutralinojs/neutralino.js#304 · コメント 1 件 ·
-
FuSa
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
tenstorrent/tt-umd#3851 ·
メンテナーはふだん 3 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
mattgodbolt/zindex#67 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100