R/earth/C++ Workflow For Calculating Sales Grid Adjustments
Latest Development, Bert Craytor, August 2021:
A new workflow has been created for calculating property appraisal adjustments based on the R/earth/C++. Note that “earth” is the R version of MARS (Multivariate Adaptive Regression Splines).
This workflow will replace the use of Minitab’s SPM 8.3 that has had its license fee increased 44 fold this past year from my grandfathered $360/year over the past 15 years to the standard $16,000/year. Most of this price increase has to do with them combining MARS into the larger SPM 8.3 package instead of licensing it separately. By taking this road, MiniTab has taken Salford Systems MARS out of the reach of nearly all of the 75,000 appraisers in the United States and many more worldwide. Fortunately, there is Stephen Milborrows’ R::earth package which is free open software. We will have to see how it holds up.
In any case, the conversion has added some improvements, such as full automation of the processing of MLS input through automated submission to earth(), automated parsing of the R::earth output to Excel spreadsheets with adjustments, and aggregation of the adjustments to URAR fields per configuration files the user can modify in order to alter:
- the fields to be analyzed,
- the activation of two-way vs. one-way interactions,
- the variables allowed for two-way interactions when the user chooses that option, and
- the URAR fields to aggregate the model-specified adjustments.
The automated workflow does significantly speed up the appraisal process and improve the accuracy of the appraisal in several respects not directly related to MARS.
The accuracy improvements come from a more accurate CQA to Residual mapping (or function). This function, written in C++, replaces the rahter rough function generation previously done through Minitab/Salford-Systems MARS (which isn’t really suited to the task.
I used R Studio to develop the new workflow system in R script and C++. R Studio is also used for execution, although I plan to create a front end in C# to manage workflow. The system contains about 1500 lines for R script code and 500 lines of C++ code.
The system will generate URAR adjustments for an unlimited number of sales comparables, adjusting all to within 0.00001% of their average.
I used the variation of the Sales Comparison Approach variously called the
- Subjective Value Containment Approach (SVCA),
- Intangible Value Containment Approach (ICVA), or
- Contribution Value Approach (CVA)
for this workflow. Of these names, probably the Contribution Value Approach is the most accurate. Although “Intangible Value Containment Approach” emphasizes the real advantage of the approach, that is, a far more precise term for estimating Market Value. However, a downside of this description is that the value captured through the regression residual more accurately contains the value contributions of all variables that did not enter the Stage I regression analysis. More specifically, some of these variables may be partially tangible, although just unmeasurable for various reasons. The term CVA or Contribution Value Approach also emphasizes that the calculation of adjustments occurs as a result of first calculating the contribution values of property features, plus a typical basis value.