Classes
RatioStudy
Performs an IAAO-standard Ratio Study, generating all the relevant statistics. Attributes:predictions(np.ndarray): Series representing predicted valuesground_truth(np.ndarray): Series representing ground truth values (typically observed sale prices)count(int): The number of observationsmedian_ratio(float): The median value of all prediction/ground_truth ratiosmean_ratio(float): The mean value of all prediction/ground_truth ratioscod(float): The coefficient of dispersion, a measure of variability (lower is better)cod_trim(float): The coefficient of dispersion after outlier ratios outside the interquartile range have been trimmedprd(float): The price-related differential, a measure of vertical equityprb(float): The price-related bias, a measure of vertical equity
__init__
Series representing predicted values
Series representing ground truth values (typically observed sale prices)
The maximum amount of records allowed to be trimmed in a ratio study
summary()
Generate a summary DataFrame of the ratio study results.
List of statistics to include. If None, includes all available statistics.
DataFrame containing the summary statistics for both untrimmed and trimmed data
RatioStudyBootstrapped
Performs an IAAO-standard Ratio Study with confidence intervals using bootstrap resampling. Attributes:iterations(float): Number of bootstrap iterationsconfidence_interval(float): The confidence interval (e.g. 0.95 for 95% confidence)median_ratio(ConfidenceStat): The median value of all prediction/ground_truth ratios with confidence intervalsmean_ratio(ConfidenceStat): The mean value of all prediction/ground_truth ratios with confidence intervalscod(ConfidenceStat): The coefficient of dispersion with confidence intervalsprd(ConfidenceStat): The price-related differential with confidence intervalsmedian_ratio_trim(ConfidenceStat): The median value of trimmed ratios with confidence intervalsmean_ratio_trim(ConfidenceStat): The mean value of trimmed ratios with confidence intervalscod_trim(ConfidenceStat): The coefficient of dispersion for trimmed data with confidence intervalsprd_trim(ConfidenceStat): The price-related differential for trimmed data with confidence intervals
__init__
Series representing predicted values
Series representing ground truth values (typically observed sale prices)
The maximum amount of records allowed to be trimmed in a ratio study
Desired confidence interval (default is 0.95, indicating 95% confidence)
How many bootstrap iterations to perform
summary()
Generate a summary DataFrame of the bootstrapped ratio study results.
DataFrame containing the summary statistics with confidence intervals for both untrimmed and trimmed data
Functions
run_and_write_ratio_study_breakdowns
Runs ratio studies with breakdowns and writes them to disk.Settings dictionary
Metrics
Coefficient of Dispersion (COD)
The COD measures the average deviation of ratios from the median ratio. It is calculated as: Formula:- Lower COD indicates more uniform assessments
- IAAO standards:
- Single-family residential: COD ≤ 15.0
- Income-producing properties: COD ≤ 20.0
- Vacant land: COD ≤ 20.0
Price-Related Differential (PRD)
The PRD measures the relationship between assessed values and sale prices across price levels. Formula:- PRD = 1.00: No price-related bias
- PRD > 1.00: Higher-value properties are under-assessed (regressive)
- PRD < 1.00: Lower-value properties are under-assessed (progressive)
- IAAO standards: 0.98 ≤ PRD ≤ 1.03
Price-Related Bias (PRB)
The PRB measures systematic relationship between assessment ratios and sale prices. Formula:- PRB = 0: No price-related bias
- PRB > 0: Regressive (higher-value properties under-assessed)
- PRB < 0: Progressive (lower-value properties under-assessed)
- IAAO standards:
- Recommended: -0.05 ≤ PRB ≤ 0.05
- Acceptable: -0.10 ≤ PRB ≤ 0.10
Median Ratio
The median of all assessment ratios (Assessed Value / Sale Price). Interpretation:- Median Ratio = 1.00: Assessments match market values on average
- Median Ratio > 1.00: Over-assessment
- Median Ratio < 1.00: Under-assessment
- IAAO standards: 0.90 ≤ Median Ratio ≤ 1.10