Equity in mass appraisal means treating all property owners fairly. OpenAVM Kit provides tools to measure and ensure both horizontal equity (similar properties assessed similarly) and vertical equity (consistent treatment across value levels).
Equity analysis ensures that assessment models don’t systematically favor or penalize certain property types or value ranges.
Definition: Properties with similar characteristics should have similar assessment ratios.Measurement: Coefficient of Horizontal Dispersion (CHD) within clusters of comparable properties.
Definition: Assessment ratios should be consistent across different value levels.Measurement: Price-Related Differential (PRD) and Price-Related Bias (PRB).
Horizontal equity requires identifying groups of similar properties:
from openavmkit.horizontal_equity_study import ( mark_horizontal_equity_clusters, HorizontalEquityStudy)# Mark clusters based on location and characteristicsdf = mark_horizontal_equity_clusters( df, settings, verbose=True, id_name="he_id")# Analyze equity within clustersstudy = HorizontalEquityStudy( df, field_cluster="he_id", field_value="prediction")
import numpy as npfrom openavmkit.utilities.stats import calc_cod# For each clusterfor cluster_id in df["he_id"].unique(): df_cluster = df[df["he_id"] == cluster_id] values = df_cluster["prediction"].values # CHD is the COD within the cluster chd = calc_cod(values) print(f"Cluster {cluster_id}: CHD = {chd:.2f}")
from openavmkit.horizontal_equity_study import mark_horizontal_equity_clusters_per_model_group_sup# Mark general, land, and improvement equity clusterssup = mark_horizontal_equity_clusters_per_model_group_sup( sup, settings, verbose=True, do_land_clusters=True, # For vacant land equity do_impr_clusters=True # For improvement equity)
This creates three cluster types:
General clusters (he_id): Overall horizontal equity
Land clusters (land_he_id): Equity for land values
Improvement clusters (impr_he_id): Equity for building values
# Plot median ratio by price tierstudy.plot_quantiles( ci_bounds=True, # Show confidence intervals ylim=(0.9, 1.1), # Y-axis limits grouped=False # Use direct quantiles)
Ideal vertical equity shows a flat line around 1.0 across all price tiers, indicating consistent assessment levels.