Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions openavmkit/modeling.py
Original file line number Diff line number Diff line change
Expand Up @@ -2039,6 +2039,20 @@ def _run_multi_mra(

has_const = "const" in X_train

# Impute NaN/inf with training-set column medians and propagate to all splits.
# Real-world property data routinely has missing values (parking spaces,
# garage counts, etc.) and derived features can produce inf (e.g. FAR when
# land_area=0). statsmodels OLS raises MissingDataError on any NaN or inf
# in exog, so we replace inf→NaN first, then median-impute. Columns that
# are entirely NaN (no finite training values) fall back to 0.
# This is the same guard pattern used in utilities/stats.py.
X_train = X_train.replace([np.inf, -np.inf], np.nan)
col_medians = X_train.median().fillna(0.0)
X_train = X_train.fillna(col_medians)
ds_prepped.X_test = ds_prepped.X_test.replace([np.inf, -np.inf], np.nan).fillna(col_medians)
ds_prepped.X_sales = ds_prepped.X_sales.replace([np.inf, -np.inf], np.nan).fillna(col_medians)
ds_prepped.X_univ = ds_prepped.X_univ.replace([np.inf, -np.inf], np.nan).fillna(col_medians)

# ------------------------
# Global OLS (fallback)
# ------------------------
Expand Down
Loading