| Type | Tenantry | Size | Primary Trade Area |
|---|---|---|---|
| Convenience Center | Stores that sell convenience goods (e.g., groceries, pharmaceuticals); not anchored by a supermarket. | Less than 30,000 sq ft | Less than 5-minute driving time |
| Neighborhood Shopping Center | Stores that sell convenience goods and personal services (e.g., dry cleaning, shoe repair); often anchored by a supermarket. | 30,000 – 150,000 sq ft of gross leasable area; 4 – 10 acres | Less than 5-minute driving time; 1 – 1½-mile range; 5,000 – 40,000 potential customers |
| Community Shopping Center | Stores that sell convenience goods, personal services, and shoppers' goods (e.g., apparel, appliances); may include a junior department store or off-price/discount store. | 100,000 – 300,000 sq ft of gross leasable area; 10 – 30 acres | 5 – 20-minute driving time; 3 – 6-mile range; 40,000 – 150,000 potential customers |
| Regional Shopping Center | Stores that sell general merchandise, shoppers' goods, and convenience goods; typically includes one or more department stores. | 300,000 – 1,000,000 sq ft of gross leasable area; 30 – 100 acres | 20 – 40-minute driving time; 5 – 10-mile range; 150,000 – 400,000 potential customers |
| Super-Regional Shopping Center | Stores that sell general merchandise, apparel, furniture, home furnishings, services, and recreation; contains at least three major department stores. | Over 800,000 sq ft of gross leasable area | In excess of 30-minute driving time; typically 10 – 35-mile range; over 500,000 potential customers |
Retail Location Analysis by Drive Time
Jim Amorin, CAE, MAI, SRA, AI-GRS, CDEI
Published: October 27, 2025
Introduction
This guide provides a comprehensive walk through of the Property Location Analysis Tool, an R-based system for evaluating real estate locations using geospatial data, demographics, and amenity analysis. This version uses drive-time isochrones instead of simple radius buffers to more accurately represent realistic trade areas based on actual road networks and travel times. Drive-time isochrones provide several advantages over circular radius buffers:
- Realistic trade areas: Isochrones follow actual road networks, accounting for highways, barriers, and traffic patterns
- Time-based accessibility: Reflects how far customers can actually travel in a given time period
- Irregular boundaries: Captures the natural asymmetry of accessible areas (e.g., faster travel along highways)
- Better demographic matching: More accurately identifies census tracts within the true catchment area
Location Adjustments in Retail Property Appraisals
In the valuation of retail properties, location remains one of the most influential determinants of value. Location adjustments account for the qualitative and quantitative differences in the site characteristics that influence a property’s utility, visibility, and access to a viable customer base. These adjustments are particularly critical when analyzing comparable sales in varying retail environments.
Retail success is closely tied to the property’s trade area or that geographic region from which a retail establishment draws the majority of its customers. The size and shape of a trade area are rarely uniform and are influenced by multiple factors including existing and proposed residential developments, natural or manmade barriers (e.g., rivers, highways), and psychological boundaries such as perceptions of safety. Transportation infrastructure and commuter patterns further shape trade area dynamics by affecting ease of access for potential shoppers.
Demographic variables within a trade area such as population density, average household income, age distribution, and consumer spending patterns directly impact retail viability. For instance, household income levels and consumer expenditure habits (e.g., on groceries, apparel, or electronics) can indicate the buying power and preferences of the local market. Retailers often rely on these data points to determine store format, product mix, and even pricing strategies.
Retail property buyers and appraisers must also evaluate the visibility and accessibility of a site. Elements such as traffic volume, street frontage, line-of-sight from major roads, and access to public transportation all contribute to a location’s competitive advantage. A site that is difficult to locate or reach whether due to excessive traffic speeds, poor signage, or other accessibility issues can significantly underperform in comparison to more accessible alternatives.
Ultimately, effective location adjustments require an understanding not only of physical proximity but of the socio-economic context within which a retail property operates. By carefully analyzing trade area boundaries using drive-time isochrones, demographic trends, and site-specific factors, appraisers can make more precise adjustments, thereby producing credible and supportable value conclusions.
Table 1 below outlines some of the key characteristics of various shopping center types, including their typical drive-time trade areas.
What This Tool Does
The Property Location Analysis Tool helps you determine a ranking of the location of comparables on a qualitative basis using a scoring of key elements:
- Provides an Input Section to set parameters for the property type, weightings, etc.
- Score locations based on multiple factors (income, population, amenities, property values, and traffic counts)
- Compare properties side-by-side to identify the best opportunities
- Visualize results with interactive maps, charts, and tables
- Generate reports in multiple formats (Excel, HTML, PNG)
- Caches data to avoid repeated API calls and speed up analysis
Key Features
- Geocoding addresses to coordinates (if necessary)
- Fetching US Census demographic data by location
- Querying OpenStreetMap for nearby amenities
- Calculating weighted location scores
- Creating interactive visualizations
Understanding the Code Structure
Architecture Overview
The tool is organized into several functional modules as shown in the following graphic. :
graph TD
A[Input: Property Details] --> B{Lat/Lon Available?}
B -- Yes --> C[Use Existing Coordinates]
B -- No --> D[Geocode Addresses]
C --> E[Data Collection]
D --> E
E --> F[Census Demographics]
E --> G[OSM Amenities]
F --> H[Scoring Engine]
G --> H
H --> I[Analysis Results]
I --> J[Visualizations]
I --> K[Reports]
J --> L[Maps, Charts, Tables]
K --> M[Excel, HTML]
Usage Instructions
Basic Usage
- Prepare an Excel file with subject and sales’ locations including these columns as a minimum:
Sale: Identifies the sale number or Subject PropertyAddress: Street address of the propertyCity: City property lies inState: State location as two-letter abbreviationZip Code: Zip Code for property locationPrice/SF: Price per square foot of propertyTraffic Count: For now you need to enter this figure from any available source- Optional:
latorlatitudecolumn. If you have it enter it to avoid geocoding issues - Optional:
lonorlongitudecolumn. If you have it enter it to avoid geocoding issues - Optional: other identifying columns
- Set parameters at the top of this Quarto document:
data_file: Path to your Excel fileshopping_center_type: Type of retail centerweights: Set Custom Weights
- Render the document to generate analysis
Setup and Configuration
Mapbox API
To use drive-time isochrones, you need a Mapbox API key:
- Create a free account at mapbox.com
- Generate an access token (refereed to in the code as MAPBOX_API_KEY)
Census API Setup
Data Preparation
Load Property Data
| sale | address | city | state | lat | lon |
|---|---|---|---|---|---|
| 1 | 9900 S Interstate 35 | Austin | TX | 30.15847 | -97.79240 |
| 2 | 115 Sundance Pky | Round Rock | TX | 30.48319 | -97.67749 |
| 3 | 4211 S Lamar Blvd | Austin | TX | 30.23408 | -97.79242 |
| 4 | 7112 Ed Bluestein Blvd | Austin | TX | 30.31328 | -97.66364 |
| 5 | 4301 W William Cannon Dr | Austin | TX | 30.22152 | -97.84117 |
| 6 | 107 Ranch Road 620 S | Austin | TX | 30.36520 | -97.95060 |
| Subject | 10900 Lakeline Mall Drive | Austin | TX | 30.47656 | -97.79588 |
| 7 | 5900 Escarpment Blvd | Austin | TX | 30.20156 | -97.87895 |
Drive Times Based on Shopping Center Type
This section determines drive time isochrones based on the the type of property under analysis. In this case, the property was defined as a Neighborhood Shopping Center which typically has a primary trade area of about 5 minutes which will be used in this analysis. A review of Figure 1 displays these boundaries for each sale and the subject property.
Mapped Properties with Isochrones
Linking Isochrones and Census Data
The first major step in the analysis is to generate drive-time isochrones for each property. An isochrone defines the geographic area that can be reached within a specified travel time using the actual road network. This differs from a simple circular radius, which assumes straight-line distance and ignores highways, barriers, and travel speeds. By using drive-time boundaries, the analysis reflects a much more realistic picture of how far customers can travel to reach a property.
Once the isochrones are created, the next challenge is to associate those irregularly shaped areas with U.S. Census data. The Census Bureau provides demographic and economic data by fixed geographic units such as tracts, block groups, and blocks, but it does not allow direct data retrieval based on drive-time areas. In other words, while the Census API can return data within a given radius or within specific Census boundaries, it cannot natively return data for an isochrone polygon that follows real roads.
To bridge that gap, this tool takes a two-step approach. First, it downloads the full set of Census tracts for the state that contains the subject and comparable properties. Then, it uses a spatial intersection to determine which tracts fall wholly or partially within each drive-time isochrone. Because tract boundaries rarely align perfectly with isochrone shapes, the code calculates the proportion of each tract’s area that lies inside the isochrone and uses that percentage to weight demographic variables such as population and household income. This allows the results to reflect the demographic characteristics of the true trade area—based not on arbitrary circles but on how people actually travel.
In effect, the isochrone serves as a geographic “filter” that converts Census data from its static tract format into a dynamic representation of real-world accessibility. This integration of road-network travel times with demographic weighting provides a far more accurate foundation for evaluating retail trade areas and comparing locations on a consistent basis.
Demographics Retrieval Function
A query to the US Census Bureau is necessary to fetch appropriate demographics for this analysis. As outlined, the key demographic variables used in this analysis include those shown in Table 3.
| Variable | Description | Census Code |
|---|---|---|
| Population | Total population in census tract | B01003_001 |
| Median Income | Median household income | B19013_001 |
| Median Home Value | Median value of owner-occupied homes | B25077_001 |
| Median Gross Rent | Median gross rent | B25046_001 |
✅ Census data saved to Census_Data_TX_2023.xlsx
Spatial Join: Census Tracts Within Isochrones
This step identifies and summarizes demographic information within each property’s drive-time area (called an isochrone). Because Census data is published in tract boundaries rather than by drive-time zones, the analysis first determines which Census tracts fall inside each isochrone.
For each property, the code performs the following tasks:
Identify the Isochrone Area The process begins by selecting the isochrone that corresponds to a specific property sale. Each isochrone represents the geographic area reachable by car within a set number of minutes from that location.
Find Census Tracts that Intersect the Isochrone The program then looks for all Census tracts that overlap with the property’s isochrone boundary. Since these tracts rarely align perfectly with the drive-time area, only the overlapping portions are considered.
Weight Each Tract by Overlap Area To ensure accuracy, the code calculates how much of each Census tract lies within the isochrone. It then weights the demographic data (population and income) based on the percentage of each tract included. For example, if only half of a tract falls inside the drive-time area, only half of that tract’s population and income values are counted.
Aggregate the Weighted Results After weighting, the script adds up the adjusted population estimates and computes an average household income for the entire isochrone area. This produces a fair representation of the demographic characteristics actually within the drive-time zone rather than the full Census tracts.
Summarize by Property Finally, the code compiles the results for each property, reporting the estimated total population, average income, and number of tracts that contributed data.
This analysis blends drive-time accessibility data with Census demographics. It provides localized, data-driven insight into the population and income patterns surrounding each property based on realistic travel areas rather than simple circular buffers.
| Sale | Total Population | Median Household Income | Median Home Value | Median Gross Rent | Census Tracts Included |
|---|---|---|---|---|---|
| 1 | 5107 | $100,793 | $393,984 | $5,421 | 7 |
| 2 | 9577 | $83,154 | $319,403 | $2,788 | 12 |
| 3 | 11846 | $85,918 | $584,826 | $2,300 | 18 |
| 4 | 11506 | $96,722 | $456,468 | $2,744 | 12 |
| 5 | 8569 | $107,533 | $488,278 | $4,148 | 12 |
| 6 | 3075 | $135,870 | $601,883 | $4,961 | 3 |
| Subject | 13372 | $88,746 | $450,457 | $4,575 | 13 |
| 7 | 9938 | $154,804 | $623,564 | $4,054 | 8 |
Calculate Population Density
Not really sure this is necessary or desirable. The population Density Score should notbe using this…address when I get there.
| Sale | Total Population | Trade Area (sq mi) | Population Density (per sq mi) |
|---|---|---|---|
| 3 | 11846 | 2.43 | 4874.1 |
| Subject | 13372 | 3.50 | 3824.0 |
| 2 | 9577 | 2.64 | 3630.0 |
| 5 | 8569 | 2.53 | 3390.4 |
| 4 | 11506 | 3.51 | 3282.1 |
| 1 | 5107 | 1.61 | 3170.5 |
| 7 | 9938 | 3.61 | 2754.3 |
| 6 | 3075 | 3.32 | 925.3 |
Figure 2 visually reveals which trade areas contain the most concentrated residential populations. Areas shaded in darker tones correspond to higher population densities, indicating locations where retailers can expect stronger customer activity and greater potential sales volume within the same travel time. Lighter areas reflect lower residential concentration, signaling more dispersed customer bases or less intensive retail demand.
Figure 3 highlights the relative concentration of residents within each property’s trade area. Higher bars correspond to locations with denser surrounding populations—an indicator of greater potential customer volume.”
Amenity Analysis Using Isochrones
Queries OpenStreetMap (https://wiki.openstreetmap.org/wiki/Key:amenity) for nearby amenities within specified 5 minute drive time for Neighborhood Shopping Centers. OSM’s amenity key is extremely broad. It includes everything from airports to post boxes.
In the context of retail demand and site selection, the relevant amenities are those that:
Attract regular consumer visits (e.g., restaurants, cafes, banks, pharmacies).
Represent daily or weekly necessities (e.g., supermarkets, convenience stores, schools).
Encourage dwell time or foot traffic clustering (e.g., parks, places of worship, leisure).
Support workforce presence (e.g., offices, post offices, government buildings).
These amenities serve as proxies for consumer presence, disposable income circulation, and accessibility to routine goods and services. For a retail valuation context, they also mirror the “market support” and “trade area vitality” concepts used in market analysis texts like Fanning, Market Analysis for Real Estate, 2nd ed.
The general amenity categories that are used in this analysis include the following:
- Supermarkets - As a proxy for measuring the presence of food retail and daily household shopping activity.
- Restaurants - Correlates to consumer engagement, social clustering and evening/weekend traffic.
- Cafes - Also correlates to consumer engagement, social clustering and evening/weekend traffic.
- Banks - Usually daytime traffic and draw to other nearby retail establishments.
- Hospitals - Represents essential service and consistent daytime population.
- Pharmacies - Regular essential service that often reflects high traffic.
- School/College/University - Brings regular population flows including students, parents, and staff.
- Parks - Encourages recreational foot traffic and neighborhood appeal.
| sale | bank | cafe | college | hospital | park | pharmacy | restaurant | school | supermarket | university | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 51 | 2 | 0 | 0 | 0 | 1 | 49 | 17 | 0 | 0 | 120 |
| 2 | 57 | 1 | 0 | 18 | 0 | 2 | 168 | 2 | 0 | 1 | 249 |
| 3 | 1 | 12 | 1 | 8 | 0 | 4 | 192 | 21 | 0 | 0 | 239 |
| 4 | 21 | 1 | 0 | 0 | 0 | 1 | 46 | 114 | 0 | 0 | 183 |
| 5 | 112 | 1 | 0 | 0 | 0 | 7 | 62 | 21 | 0 | 0 | 203 |
| 6 | 77 | 1 | 0 | 6 | 0 | 0 | 58 | 13 | 0 | 0 | 155 |
| Subject | 54 | 4 | 0 | 14 | 0 | 2 | 97 | 22 | 0 | 0 | 193 |
| 7 | 53 | 2 | 0 | 1 | 0 | 17 | 6 | 56 | 0 | 26 | 161 |
Traffic Count Integration
Traffic counts represent one of the most direct and quantifiable indicators of retail exposure. They measure the average number of vehicles or pedestrians passing a site over a given period, typically expressed as average daily traffic (ADT). For retailers, these counts serve as a proxy for visibility, accessibility, and potential customer flow.
High-traffic corridors generally translate to stronger impulse purchases, higher brand exposure, and greater potential for repeat visits. Conversely, properties with limited frontage on low-volume roads often face reduced visibility and a smaller trade area, even when nearby demographics appear favorable. Appraisers and market analysts use traffic data to evaluate a site’s competitive positioning, comparing comparable sales or lease rates within similar retail corridors to assess whether a location’s exposure justifies a premium or discount in value.
In short, traffic counts help quantify how often potential customers encounter a property in their daily travel patterns—bridging the gap between demographic potential and actual retail opportunity.
Note: Traffic counts presently need to be added to the base Excel file as extraction of these variables is not presently a functionality.
Traffic count data measure the average number of vehicles passing specific roadway points, often expressed as Annual Average Daily Traffic (AADT). While this report uses data from the Texas Department of Transportation (TxDOT) Open Data Portal, similar information is available from most U.S. states and many other countries.
United States
- State Departments of Transportation (DOTs):
Most state DOTs publish AADT datasets through their GIS or open data portals.
Examples include:- Caltrans (California) → Traffic Volumes
- Florida Department of Transportation (FDOT) → Traffic Counts
- North Carolina DOT (NCDOT) → Traffic Survey Data
- Caltrans (California) → Traffic Volumes
- Federal Highway Administration (FHWA):
The FHWA provides nationwide roadway and traffic data through the
Highway Performance Monitoring System (HPMS).
Canada
- Provincial Ministries of Transportation:
Each province maintains similar datasets:- Ontario Open Data Catalogue → Annual Average Daily Traffic
- DataBC Catalogue (British Columbia) → Traffic Counts
- GeoDiscover Alberta → Transportation / Traffic Volume Sites
- Ontario Open Data Catalogue → Annual Average Daily Traffic
- Municipal and Regional Sources:
Large municipalities (e.g., Toronto, Vancouver, Calgary) often publish local traffic counts through their open data portals.
International
- United Kingdom:
Department for Transport Open Data — includes continuous and manual count sites across England, Scotland, and Wales.
- European Union:
Many member nations release traffic and transport statistics under
the INSPIRE Directive or through Eurostat Transport Statistics.
- Global Alternatives:
In regions without government data, commercial and open platforms such as
TomTom Traffic,
HERE Traffic, or
OpenStreetMap Traffic Layers
can provide approximate roadway congestion or flow estimates.
Future Implementation Notes
To integrate local traffic data into this analysis: 1. Download the shapefile or GeoJSON version of your region’s AADT or traffic count dataset.
2. Load it into R using sf::st_read("path/to/file.shp").
3. Perform a spatial join between your property points and the nearest road segment (sf::st_join() or st_nearest_feature()).
4. Extract or average the relevant traffic count field for scoring.
| Sale | Traffic Count |
|---|---|
| 1 | 15,583 |
| 2 | 19,290 |
| 3 | 22,327 |
| 4 | 7,356 |
| 5 | 21,515 |
| 6 | 45,149 |
| Subject | 30,161 |
| 7 | 18,522 |
| Average / Max | 22,488 / 45,149 |
Weighting Function/Inputs
Required inputs to apply appropriate weight to the income (consumer spending power), the population density (a reflection of foot traffic potential), amenities (neighborhood quality and drawing power), property values (a function of costs to live in area), and traffic counts (a measure of visibility, accessibility and potential customers beyond population in trade area).
| Variable | Weight (%) |
|---|---|
| Income | 30% |
| Population Density | 30% |
| Amenities | 10% |
| Property Value | 10% |
| Traffic Count | 20% |
Scoring Function
Calculates a comprehensive location score (0-100) based on five factors:
- Formula:
rescale(median_income, to = c(0, 100), from = range(all_incomes)) - Higher income = better location (greater purchasing power)
- Dyanmically normalized to 0-100 scale
Interpretation: The Income Score measures the relative purchasing power of households within each trade area. Median household income remains a reliable proxy for local spending capacity and the ability of residents to support a broad range of retail goods and services. Higher median incomes typically correspond with greater discretionary spending, stronger support for mid- and upper-tier retailers, and enhanced resilience during economic downturns.
This uses adaptive scaling to account for any range of income levels. The score is calculated by rescaling each trade area’s median income within the range of all incomes observed across the study sample. This approach preserves meaningful differences among higher-income areas, where a capped formula would otherwise treat them as identical, and allows for balanced comparison between affluent and moderate-income markets.
Notes on the Scale: The scaling is anchored to the lowest and highest median incomes within the comparison group. The location with the highest income receives a score of 100, while lowest income area scores a 0. Other income levels are scored proportionally.
- Formula:
rescale(population, to = c(0, 100), from = range(all_populations)) - Higher population = more potential customers/activity
- Normalized to 0-100 scale
Interpretation: The Population Density Score represents the concentration of potential customers within the trade area. Retail activity depends not only on affluence but also on proximity and repetition of visits. Areas with greater population density tend to generate stronger pass-by traffic, higher visibility, and more consistent sales volumes.
This metric applies adaptive scaling rather than a fixed divisor. Each trade area’s population is rescaled within the observed range of populations across the study sample. This ensures that every location receives a proportionate score, maintaining meaningful separation even among densely populated areas where a capped formula might otherwise flatten results.
Notes on the Scale: The lowest population in the comparison group anchors the bottom of the scale at 0, while the highest defines 100. All other sites are positioned proportionally between them.
- Formula:
0.4 × (Diversity %) + 0.6 × (Density %, adaptively scaled 0–100) - More diverse and concentrated amenities = stronger location
- Balances variety and overall intensity of surrounding uses
Interpretation: The Amenities Score reflects both the diversity and density of nearby amenities that contribute to a site’s retail vitality. Diversity measures the proportion of tracked amenity categories—such as restaurants, schools, parks, banks, and pharmacies—that are represented within the trade area. Density measures the total number of amenities, scaled relative to the range observed across all study locations.
Together, these components create a balanced indicator of neighborhood convenience, consumer draw, and the underlying strength of the retail ecosystem. Locations that contain all tracked amenity types receive full credit for diversity, while those with fewer categories present earn proportionally less. The density component differentiates sites based on how intensively built and commercially active they are within the same amenity mix.
Notes on the Scale: The diversity index reaches 100 when all tracked amenity categories are represented within the trade area. The density index is adaptively normalized between the lowest and highest total amenity counts observed among all properties being compared, ensuring that each site’s score reflects its position within the actual range of market activity. The final score combines both effects, assigning 40% weight to diversity and 60% to density. This method ensures fair comparison across urban, suburban, and rural contexts without relying on arbitrary saturation thresholds.
- Formula:
0.50 x min(median_home_value / 6500, 100) + 0.5 x min(median_gross_rent / 50, 100) - Higher values = more desirable neighborhood
- Normalized to 0-100 scale
Interpretation: The Property Value Score represents a composite measure of market vitality that combines indicators of long-term stability and short-term spending capacity within a trade area. Median home value reflects neighborhood affluence, ownership stability, and the general desirability of the surrounding residential market. Median gross rent complements this by capturing the relative cost of occupancy and the local balance between household income and housing expense—an important proxy for retail purchasing power and economic elasticity.
By weighting home value and rent equally (50/50), the score avoids bias toward either high-income owner-occupied areas or transient high-rent districts. A higher Property Value Score therefore signals a trade area that is both financially resilient and economically active, typically corresponding to locations that can support sustainable retail rents and consistent consumer demand.
High home value and high rent → strong, affluent market with high retail viability.
High rent but low home value → possibly transient or overburdened market.
High home value but low rent → stable ownership but low circulation spending.
Notes on the Scale The divisor for home value (/6500) is a normalization factor that caps high-value markets near 100. You can tune it—if your markets are typically high-end, you might raise that to /7000 or /8000. The divisor for gross rent (/50) is similar: $50 × 100 = $5,000, roughly the upper bound for typical monthly rent, producing comparable scaling.
- Formula:
rescale(traffic_count, to = c(0, 100), from = range(all_traffic_counts)) - Higher traffic = greater retail visibility and consumer flow
- Dynamically normalized to 0–100 scale
Interpretation: The Traffic Count Score measures the retail exposure and accessibility of a location based on roadway volume. Higher traffic counts typically translate to greater visibility, impulse visits, and daily customer flow.
This score is dynamically scaled relative to the comparison group, ensuring that properties with exceptionally high or low counts remain distinguishable within each analysis set.
Notes on the Scale: The lowest observed traffic count anchors the scale at 0, and the highest at 100. When comparing sites across multiple markets, a shared range can be applied to maintain consistent interpretation across studies.
Total Score Calculation \[ \text{Total Score} = \sum_{i=1}^{5} (\text{Component Score}_i \times \text{Weight}_i) \]
Interpretation: The Total Score represents the weighted sum of five core indicators—Income, Population, Amenities, Property Value, and Traffic Count—each scaled from 0 to 100. Weights (𝑤ᵢ) control the relative importance of each factor and are defined in the document parameters. This additive framework allows the model to reflect both market potential (income, population), site quality (amenities, property value), and exposure/accessibility (traffic count).
Notes on the Scale: Each component score is dynamically normalized within its observed range to preserve proportional differences among locations. The composite score therefore expresses each site’s overall retail viability relative to all others in the analysis.
Calculate Weighted Score for Location Analysis
Combine all metrics to generate location scores.
| Rank | Sale | Total Score | Income Score | Population Score | Amenities Score | Property Value Score | Traffic Score |
|---|---|---|---|---|---|---|---|
| 1 | 7 | 69.5 | 100.0 | 66.7 | 47.1 | 88.5 | 29.5 |
| 2 | Subject | 58.2 | 7.8 | 100.0 | 58.0 | 80.4 | 60.3 |
| 3 | 6 | 55.3 | 73.6 | 0.0 | 36.3 | 95.9 | 100.0 |
| 4 | 3 | 49.8 | 3.9 | 85.2 | 83.3 | 68.0 | 39.6 |
| 5 | 5 | 47.5 | 34.0 | 53.4 | 58.6 | 79.0 | 37.5 |
| 6 | 4 | 41.4 | 18.9 | 81.9 | 49.3 | 62.6 | 0.0 |
| 7 | 2 | 39.3 | 0.0 | 63.1 | 88.0 | 52.5 | 31.6 |
| 8 | 1 | 27.7 | 24.6 | 19.7 | 20.0 | 80.3 | 21.8 |
Visualization: Scored Properties with Isochrones
Sensivity Analysis
The sensitivity analysis tests how stable each property’s ranking remains when the weighting of input factors such as income, population density, amenities, property values, and traffic counts is allowed to vary randomly within reasonable limits. This scenario analysis runs 5,000 times with alternative weighting configuration being simulated. Each configuration produces a new set of location rankings. The resulting distribution of simulated ranks for each property reflects how dependent its position is on the specific weighting assumptions used in the model.
The median simulated rank represents the property’s typical performance across all simulations, while the 5th and 95th percentiles mark its best-case and worst-case outcomes, respectively. A property with a low median rank and a narrow percentile range demonstrates consistent strength and resilience to changing assumptions. In contrast, a wide percentile range indicates that the property’s relative standing shifts considerably under different weighting scenarios, suggesting greater sensitivity to how the model prioritizes its components. Together, these measures reveal not only which locations perform best on average but also which are most robust to uncertainty in the underlying valuation logic.
The “reasonable limits” for weighting variation are defined by a distribution, which produces random, positive weights that sum to one. This distribution allows each factor including Income, Population, Amenities, Property Value, and Traffic to fluctuate broadly between near-zero and moderate dominance, representing plausible shifts in judgment without introducing unrealistic extremes.Each factor can vary between very small (near 0) and fairly large (up to ~0.7–0.8), but the average weight remains around 0.20 (1/5). The Gamma(1,1) shape parameter ensures broad variability without producing absurd or hyper-concentrated weights (like one factor getting 99% of total influence).
Each Monte Carlo run represents one hypothetical weighting configuration within those bounds. Monte Carlo error decreases approximately in proportion to the inverse of the square root of the number of simulations:
\[ \text{Error} \propto \frac{1}{\sqrt{N}} \]
This means that as the number of scenarios (N) increases, the uncertainty in the simulated results shrinks rapidly at first and then levels off:
- 100 runs → approximately 10 % uncertainty
- 1,000 runs → approximately 3 % uncertainty
- 5,000 runs → approximately 1.4 % uncertainty
In practice, 5,000 simulations represent a balanced choice—large enough to yield stable percentile and rank estimates, yet small enough to run efficiently on a standard laptop without noticeable slowdown.
Monte Carlo Variation of Simulated Ranks
Figure 5 summarizes the range of simulated outcomes for each property across all Monte Carlo trials. Each dot represents the property’s median simulated rank, while the horizontal line shows the spread between the 5th and 95th percentile of its rank outcomes. A smaller range means that the property’s position was relatively stable even as the factor weights varied, suggesting its performance is robust under different weighting scenarios. A longer range, on the other hand, indicates that the property’s relative standing fluctuated more widely depending on which factors carried greater influence in a given simulation.
From an appraisal or site-selection standpoint, this visualization conveys the stability of relative rankings under uncertainty. Properties with consistently low (leftward) and narrow intervals can be viewed as strong performers across a broad range of assumptions, implying dependable comparative strength. Conversely, properties with wider or right-shifted intervals are more sensitive to model assumptions, meaning their perceived attractiveness or competitiveness is highly dependent on the specific combination of factor weights.
Taken together, this chart provides a concise summary of ranking volatility, helping analysts gauge not just which sites tend to score best, but how confidently those conclusions hold across multiple possible weighting scenarios.
Simulated Ranking Stability Summary
Table 10 presents the statistical summary of simulated rankings for each sale across all Monte Carlo iterations. The Median Rank column represents the property’s typical position under random variations in factor weights, while the 5th and 95th Percentiles indicate the lower and upper bounds of its likely ranking range. Together, these values convey both the central tendency and the volatility of each property’s simulated performance.
A smaller gap between the 5th and 95th percentiles suggests that the property’s ranking remained relatively stable regardless of how the weights were varied, indicating a higher degree of confidence in its position. Conversely, a wider range implies that the property’s relative standing was more sensitive to the specific weighting assumptions.
In practical terms, this table quantifies the same insights illustrated in the preceding Monte Carlo variation chart. Properties with low median ranks and narrow percentile ranges appear more consistently competitive across numerous simulation scenarios, while those with broader ranges or higher median ranks demonstrate greater uncertainty in their comparative standing. This information helps analysts and appraisers assess both expected performance and model sensitivity, improving the robustness of ranking-based conclusions.
| Sale | Median Rank | 5th Percentile | 95th Percentile |
|---|---|---|---|
| 6 | 2 | 1 | 7 |
| 7 | 2 | 1 | 5 |
| Subject | 2 | 1 | 5 |
| 3 | 3 | 1 | 6 |
| 5 | 5 | 3 | 6 |
| 2 | 6 | 3 | 8 |
| 4 | 7 | 4 | 8 |
| 1 | 8 | 5 | 8 |
Histogram of Simulated Ranks
Figure 6 displays the frequency distribution of simulated rankings for each property across all Monte Carlo runs. Each panel corresponds to one sale, and the horizontal axis represents its possible rank outcomes. A tightly clustered distribution suggests that the property’s rank remained consistent despite varying factor weights, indicating a relatively stable competitive position. A broader or multi-peaked distribution reveals greater sensitivity—meaning the property’s relative standing can change noticeably depending on how much weight is assigned to each factor.
From an analytical perspective, this helps identify which properties are most robust to methodological assumptions and which are more dependent on specific weight configurations. In site-selection or appraisal applications, consistent rankings indicate locations that perform well across a wide range of weighting scenarios, while highly variable rankings point to those whose appeal hinges on particular market drivers.
Tornado Diagram of Weight Sensitivity
Figure 7 presents the distribution of simulated weights assigned to each evaluation factor across all Monte Carlo iterations. Each horizontal boxplot summarizes the spread and central tendency of one factor’s weight. The median line within each box represents the typical relative importance of that factor, while the width of the box reflects how much its weight varied from one simulation to another.
A higher median implies that, on average, the factor contributed more to the overall scores, whereas a lower median suggests it played a smaller role. A narrower spread indicates that its influence was stable across scenarios, while a wider spread denotes greater uncertainty or volatility in its importance. Together, these elements convey how sensitive the overall ranking results are to shifts in the assumed weighting of each variable.
In general, the tornado diagram complements the rank histograms by revealing why certain properties appear more stable or variable—helping analysts trace rank uncertainty back to underlying factors.
Radar Chart
The radar chart in Figure 8 illustrates how the top five locations compare across the primary scoring components of the Retail Location Analysis: income, population, amenities, property value, and traffic. Each polygon represents one property’s relative performance, with the outer edge of the chart indicating higher normalized scores. The chart provides a multidimensional view of how well each site performs across the full range of evaluation criteria rather than focusing on a single factor.
From an analytical perspective, a property with a larger and more evenly shaped polygon demonstrates balanced strength across multiple dimensions, while a property whose polygon extends sharply in only one or two directions indicates concentrated advantages but potential weaknesses elsewhere. For example, a site that scores highly on income and traffic but low on amenities or property value may perform well under certain weighting scenarios but less so when broader community attributes are emphasized.
In practice, this visualization helps appraisers and analysts understand why certain sites achieved higher overall scores or ranking stability in the Monte Carlo results. It reveals the underlying trade-offs between economic strength, consumer accessibility, and neighborhood characteristics, allowing decision-makers to assess not just which locations rank best, but how their component profiles differ and where improvement or additional investigation may be warranted.
Ranked Location map
The map in Figure 9 provides a spatial summary of the ranked retail locations. Each point represents either the subject property or one of the comparable sales analyzed in the model. The subject property is displayed in red for emphasis, while the comparable sales appear as blue points labeled with their respective ranking positions. This visual layout allows the reader to see not only how each property performed in the scoring analysis but also where those results occur geographically across the market area. Proximity patterns, clustering, or spatial dispersion of higher- or lower-ranked sites can reveal localized strengths and weaknesses that might not be evident from tabular results alone.
Amenity Density Map
The Amenity Density Map in Figure Figure 10 expands on the earlier tabular summary by showing the actual spatial distribution of each amenity type within the drive-time boundaries. Each color represents a distinct amenity category, allowing the reader to visualize not only the total number of amenities but also their composition and clustering patterns around each property. Concentrations of similarly colored dots often indicate commercial corridors or service hubs, while mixed clusters suggest diverse neighborhood environments supporting broader retail demand. This map thus provides an intuitive, spatial counterpart to the amenity count analysis, illustrating both density and diversity across trade areas.
Conclusions
Comparative analysis is defined as “the process by which a value indication is derived in the sales comparison approach. Comparative analysis may employ quantitative or qualitative techniques, either separately or in combination.”1 The Appraisal of Real Estate outlines examples of the techniques used in quantitative adjustments and qualitative analyses as shown in Table 11.2
| Quantitative Analysis | Qualitative Analysis |
|---|---|
| Paired data analysis (sales and resales of the same or similar properties) | Relative comparison analysis |
| Grouped data analysis | Ranking analysis |
| Secondary data analysis | Personal interviews |
| Statistical analysis including graphic analysis and scenario analysis | |
| Cost-related adjustments (cost to cure, depreciated cost) | |
| Capitalization of income differences | |
| Trend analysis |
When adequate data is available, quantitative analysis can be a helpful tool, but often the differences between properties makes it challenging to determine appropriate adjustments with a level of certainty. In these cases qualitative analysis or ranking can be helpful.”3 Qualitative analysis recognizes the inefficiencies of real estate markets and the difficulty of expressing adjustments with mathematical precision.”
Executive Summary Table
Table 12 consolidates the results of the Retail Location Analysis into a concise summary of comparative performance. Each property (including the subject) is ranked according to its Total Score, which integrates multiple weighted factors such as income, population, amenities, property value, and traffic conditions within the specified drive-time boundary.
The Rank column reflects the overall ordering from best to least favorable under the baseline weighting scenario, while the Total Score expresses each location’s composite index value on a standardized scale. Drive Time denotes the consistent spatial boundary used for comparison, and Price per Square Foot provides a market context for relative value.
Taken together, this table provides a high-level snapshot of how each location performs under the modeled conditions, allowing for quick identification of competitive strengths and potential trade-offs between market positioning and pricing.
| Rank | Sale | Total Score | Drive Time | Price/SF |
|---|---|---|---|---|
| 1 | 7 | 69.5 | 5 min | $466 |
| 2 | Subject | 58.2 | 5 min | |
| 3 | 6 | 55.3 | 5 min | $451 |
| 4 | 3 | 49.8 | 5 min | $392 |
| 5 | 5 | 47.5 | 5 min | $208 |
| 6 | 4 | 41.4 | 5 min | $240 |
| 7 | 2 | 39.3 | 5 min | $191 |
| 8 | 1 | 27.7 | 5 min | $151 |
Session Information
R version 4.5.0 (2025-04-11 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26200)
Matrix products: default
LAPACK version 3.12.1
locale:
[1] LC_COLLATE=English_United States.utf8
[2] LC_CTYPE=English_United States.utf8
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.utf8
time zone: America/Chicago
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.4.0 knitr_1.50 mapboxapi_0.6.2
[4] leaflet.extras_2.0.1 leaflet_2.2.3 osmdata_0.3.0
[7] plotly_4.11.0 httr_1.4.7 scales_1.4.0
[10] writexl_1.5.4 readxl_1.4.5 janitor_2.2.1
[13] tidycensus_1.7.3 sf_1.0-21 lubridate_1.9.4
[16] forcats_1.0.1 stringr_1.5.2 dplyr_1.1.4
[19] purrr_1.1.0 readr_2.1.5 tidyr_1.3.1
[22] tibble_3.3.0 ggplot2_4.0.0 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] DBI_1.2.3 s2_1.1.9 rlang_1.1.6
[4] magrittr_2.0.4 snakecase_0.11.1 e1071_1.7-16
[7] compiler_4.5.0 png_0.1-8 systemfonts_1.3.1
[10] vctrs_0.6.5 rvest_1.0.5 wk_0.9.4
[13] pkgconfig_2.0.3 crayon_1.5.3 fastmap_1.2.0
[16] magick_2.9.0 labeling_0.4.3 geojsonsf_2.0.3
[19] promises_1.3.3 rmarkdown_2.30 tzdb_0.5.0
[22] ps_1.9.1 xfun_0.53 aws.s3_0.3.22
[25] jsonlite_2.0.0 later_1.4.4 uuid_1.2-1
[28] jpeg_0.1-11 terra_1.8-70 R6_2.6.1
[31] stringi_1.8.7 RColorBrewer_1.1-3 jquerylib_0.1.4
[34] cellranger_1.1.0 Rcpp_1.1.0 base64enc_0.1-3
[37] leaflet.providers_2.0.0 timechange_0.3.0 tidyselect_1.2.1
[40] rstudioapi_0.17.1 yaml_2.3.10 codetools_0.2-20
[43] websocket_1.4.4 curl_7.0.0 processx_3.8.6
[46] lattice_0.22-7 withr_3.0.2 S7_0.2.0
[49] evaluate_1.0.5 units_0.8-7 proxy_0.4-27
[52] xml2_1.4.0 pillar_1.11.1 tigris_2.2.1
[55] KernSmooth_2.23-26 generics_0.1.4 sp_2.2-0
[58] chromote_0.5.1 hms_1.1.3 class_7.3-23
[61] glue_1.8.0 lazyeval_0.2.2 tools_4.5.0
[64] data.table_1.17.8 grid_4.5.0 slippymath_0.3.1
[67] crosstalk_1.2.2 raster_3.6-32 cli_3.6.5
[70] rappdirs_0.3.3 textshaping_1.0.3 viridisLite_0.4.2
[73] svglite_2.2.1 gtable_0.3.6 digest_0.6.37
[76] classInt_0.4-11 htmlwidgets_1.6.4 farver_2.1.2
[79] htmltools_0.5.8.1 lifecycle_1.0.4 mime_0.13
[82] aws.signature_0.6.0 protolite_2.3.1