Does Harbor Freight Target Tradespeople? A Spatial Data Deep Dive

This is a modified version of my Geography 409 Quantitative methods in GIS final project I did at least a year ago. The purpose of this project was to do a statistical analysis of something geographical. Most people in the class used census data to determine locations of things like airports, train stations, water treatment facilities, schools, amazon warehouses, hiking areas, fire stations so on and so forth. I was determining how statistically significant Harbor Freight location decisions are in the USA. Those of you who have ever stepped foot inside a harbor freight know the vibe: cheap tools, strange employees, and that weird burning rubber smell every store seems to have. Naturally, you’d assume corporate location planners sit down with a giant map and ask: "Where are all the plumbers, mechanics, construction workers, and machinists living? Let's put a store right next to them!"

I decided to test this exact hypothesis using U.S. Census data, spatial mapping tools, and logistic regression. Here is how I set up the project, what data went into it, and what the stats actually said.

The Setup:

To test if store locations target blue-collar/trades populations, I had to assemble a huge dataset covering every neighborhood in the entire country.

The Harbor Freight Locations (Points)
Instead of manually copying addresses off their website, I extracted all verified store locations using OpenStreetMap (OSM) via Overpass Turbo. This gave me precise latitude and longitude points for stores across the continental U.S.

The Census Data (Polygons & Demographics)
I pulled raw demographic numbers for all ~83,400 U.S. Census Tracts (local neighborhoods averaging ~4,000 residents) from the American Community Survey (ACS) 5-Year Estimates (Table C24010 - Sex by Occupation) via the U.S. Census Bureau API.

To measure the local "trades" workforce, I aggregated workers across major Standard Occupational Classification (SOC) categories:

Then, I calculated the Trades Ratio for every single neighborhood:

Trades Ratio = Total Blue-Collar & Trades Workers / Total Employed Civilian Population

Spatial Modeling Pipeline:

With the data pulled, I built a Python spatial analysis script using geopandas, shapely, and statsmodels:

The Statistical Models & Results:

Running a basic linear regression yields false positives because stores will naturally cluster near overall population density. I ran a regression model to see if a neighborhood's Trades Ratio predicts store placement after controlling for total population size.

Model 1 results: Population density + Trades ratio:

==============================================================================
Dep. Variable: has_store                  No. Observations: 83466
Method: MLE                               Pseudo R-squ.: 0.007490
LLR p-value: 5.555e-20                    Log-Likelihood: -5875.1
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept     -8.6320      0.492    -17.537      0.000      -9.597      -7.667
trades_ratio   0.4762      0.403      1.182      0.237      -0.313       1.266
log_pop        0.5692      0.063      8.970      0.000       0.445       0.694
==============================================================================
Odds Ratios: trades_ratio = 1.61 | log_pop = 1.77
        

Model 2 results: Population only:

==============================================================================
Dep. Variable: has_store                  No. Observations: 83466
Method: MLE                               Pseudo R-squ.: 0.007373
LLR p-value: 9.374e-21                    Log-Likelihood: -5875.8
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept     -8.4822      0.474    -17.894      0.000      -9.411      -7.553
log_pop        0.5575      0.063      8.918      0.000       0.435       0.680
==============================================================================
Odds Ratio: log_pop = 1.75
        

What Does This Actually Mean?

Conclusion:

Harbor Freight isn't using specialized demographic maps to hunt down blue collar-heavy neighborhoods. Instead, they operate like most mainstream retail chains: they drop stores where there are enough overall people to drive retail foot traffic.