← How the estimate works

Technical notes

This page documents the model behind every county estimate, for readers who want to check it or reproduce it. The plain-language summary is on the methodology page.

The model

Every county starts from a structural prior: a formula relating the price of a delivered cord to the county's heating degree days (colder climates, more demand) and the share of its homes that heat with wood (more wood heat, a thicker and more competitive local market):

prior price = base price × (heating degree days ÷ reference climate)climate effect × (wood-heat share ÷ reference share)wood-heat market effect

Where real price observations exist, the estimate moves toward them by a standard closed-form Bayesian shrinkage rule (Fay-Herriot style): no simulation, and no per-county hand-tuning. On the log scale, with the prior's variance τ² (model uncertainty) and each observation's variance σ²:

estimate = γ × observed log price + (1 − γ) × prior log price,   where γ = (n ÷ σ²) ÷ (n ÷ σ² + 1 ÷ τ²)

γ is the weight the evidence earns: near 0 with no or weak evidence, near 1 when observations are many and precise. When sources differ in precision, each observation is weighted by its own 1 ÷ σ². The published range is the 90% credible interval of the result.

The published product is a full cord (128 cubic feet, stacked 4 × 4 × 8 ft) of seasoned, cut-and-split firewood, delivered. That matches the Maine survey's definition, the anchor closest to what a household actually buys.

Evidence tiers and rounding

Each county carries one of three evidence tiers. The county page shows it as a plain label; the JSON API keeps the tier name.

Tier (API value)MeaningCounties
County evidence (observed)A real, county-resolved observation dominates the estimate: either a county-level survey, or at least 3 independent county-specific sources combined (reader submissions and/or firewood-vendor websites).0
Some evidence (state_anchored)A real observation informs the estimate but doesn't dominate it: the observation is at state or regional resolution only, or the county has reader or vendor prices from fewer than 3 independent sources combined.26
Model only (structural_only)No observation anywhere informs the number; it is the structural prior alone.3,118

That imbalance is the honest state of the available data, not a bug to be tuned away.

Published prices are rounded to a precision the evidence justifies: to the nearest $25 when γ is below 0.3, to $10 up to 0.7, and to $5 above that. The range is rounded outward to the same step. A range whose top is more than double its bottom (measured before rounding) is flagged as wide uncertainty rather than shown with normal visual weight.

Reader submissions

Every county page has a form for sharing a real price paid. Every submission is reviewed before it can affect any published estimate: an AI agent checks it in moderation sessions the operator runs and oversees, anything that fails an automatic check or that the agent is unsure of goes to a person, and the operator spot-checks a random sample of the agent's decisions every session. Nothing is accepted by code alone.

A county's accepted submissions are pooled by their median, so one mistaken or unusual price can't move the number on its own. The pool counts for less than an equivalent state government survey: submissions from one county tend to share a season and self-select (someone surprised by a high quote is more likely to submit than someone who paid a typical price), so five independent submissions count as much as one state-level survey observation, and more than five never count for more.

A county needs at least 3 independent submissions before reader evidence alone can make it county evidence. One or two still count, and can move a county out of model-only, but aren't enough to claim the estimate is well supported. Like the model's other declared values below, this threshold is a stated judgment call; there isn't yet enough submission history to derive it.

Vendor-collected prices

Wood Heat Index also collects advertised prices that firewood vendors publish on their own business websites: a hand-curated, growing list, collected politely and legally. It never uses marketplaces or login-walled content, and always honors each site's robots.txt. A vendor's listing contributes a delivered price for every area its own page says it serves: ZIP codes or, as often, named counties. A price is never attributed more widely than the vendor's own words. Delivery fees are added when the vendor publishes a computable schedule and recorded as unknown otherwise. Every row is tagged with its real source; a vendor price is never labeled or treated as a reader submission.

Before it can affect any estimate, an AI agent checks each price against the vendor's live page in the same operator-overseen moderation sessions. A price from a vendor whose first extraction a person hasn't yet confirmed, or that trips a collection alarm, or that looks unusual against the county's estimate, goes to a person instead. Nothing is accepted automatically here either.

These are asking prices, not transacted prices: a vendor's own number, published to attract customers, and likely skewed toward established, higher-overhead dealers and away from the informal market. That bias is treated as disclosed extra uncertainty (the same wider variance as a reader submission), never as a silent downward adjustment to the number.

Pooling mirrors the submission rule with one addition: one vendor's price published for several ZIP codes is still one vendor's pricing decision. Pooling and the 3-source threshold both count distinct vendors, never the ZIP codes one listing reaches. Five independent vendors count as much as one state-level survey observation, and more never count for more, matching submissions exactly.

Collection is restricted by policy to vendors with their own business website. Marketplace listings (Craigslist, Facebook Marketplace and similar) are permanently out of scope, whatever their real prices. That skews the frame toward larger, more established operations and away from the informal, cash, word-of-mouth market that much firewood selling still is. The pooling treatment does not correct for this; it is a disclosed limit of the source.

What we publish from reader and vendor prices

Reader and vendor prices are published only as counts: how many distinct contributors and how many prices inform a county. A pooled reader or vendor price is never published, at any count, because a median of a few prices is one contributor's own price. Vendors are never named. State survey prices are published, named sources, and the county estimate itself is always published.

Why wood's CO2 is reported separately

County pages report the CO2 from burning wood on its own line and never subtract it from, or offset it against, anything else. Burning wood releases carbon the tree absorbed recently; fossil fuels release carbon locked away for millions of years. Whether that makes wood heat carbon neutral depends on whether the harvested forest regrows and how it is managed, and EPA's own science advisors say neutrality is a conclusion to reach case by case, not an assumption. EPA's emission-factor tables say only that wood's CO2 may not raise atmospheric CO2. EPA's corporate emissions guidance, following the Greenhouse Gas Protocol, requires biomass CO2 to be reported separately from fossil emissions for the same reason. So Wood Heat Index never calls wood heat carbon neutral or zero-emission.

The tree-seedling-year figure on county pages (EPA's estimate of what one young urban tree absorbs in a year) is used only to give the scale of each fossil fuel's own emissions. It is never used to suggest that burning wood is offset by trees.

Model coefficients

"Fitted" means solved from a real anchor. Every other value is a stated assumption: declared and documented, not derived from data.

CoefficientWhat it doesValueBasisKey
Base priceThe price per cord for a county at the reference climate and wood-heat share.403.99Fitted to the Maine and New Hampshire surveysbase_usd_per_cord
Climate effectHow much colder climates raise the price (in log terms).0.15Set by judgment; too little data to fithdd_elasticity
Climate floorThe smallest heating degree days used; affects only a few Hawaii counties.100.0Set by judgmenthdd_floor
Reference climateThe heating degree days at which the climate adjustment is neutral.6000.0Set by judgmenthdd_reference
Stumpage-to-retail markupBase price divided by the standing-timber price. Shown for context only.37.34Calculated from the two prices abovemarkup_multiplier
Local-evidence thresholdIndependent local prices a county needs before local evidence can dominate it.3.0Set by judgmentmin_submissions_for_observed_tier
Survey uncertaintyHow far one state survey price may sit from a county's true price.0.05Set by judgment, no lower than measuredobservation_variance
Model uncertaintyHow far a county's true price may sit from the model's starting point.0.16Set by judgment, deliberately cautiousstructural_prior_variance
Standing-timber priceWhat a landowner is paid per cord for uncut wood. Shown for context only.10.82Taken from a published surveystumpage_usd_per_cord
Reader-price capThe most reader prices that count toward the weight, however many a county has.5.0Set by judgment, deliberately cautioususer_submission_max_effective_n
Reader-price uncertaintyHow far one reader-submitted price may sit from the county's true price.0.25Set by judgment, deliberately cautioususer_submission_variance
Vendor-price capThe most distinct vendors that count toward the weight, however many a county has.5.0Set by judgment, deliberately cautiousvendor_website_max_effective_n
Vendor-price uncertaintyHow far one vendor's advertised price may sit from the county's true price.0.25Set by judgment, deliberately cautiousvendor_website_variance
Wood-heat market effectHow much a larger wood-heating market lowers the price (in log terms).-0.05Set by judgment; too little data to fitwood_share_elasticity
Wood-heat share floorThe smallest share used, for counties where the Census reports zero.0.001Set by judgmentwood_share_floor
Reference wood-heat shareThe share of homes heating with wood at which that adjustment is neutral.0.02Set by judgmentwood_share_reference

Data sources

SourceAccessedID
Bureau of Labor Statistics price indexes2026-10-01bls_cpi_ppi
Census American Community Survey: home heating fuel2026-10-01census_acs_b25040_county
Census Gazetteer: counties2026-10-01census_gazetteer_counties
Census Gazetteer: ZIP code areas2026-10-01census_gazetteer_zcta
Census ZIP-area-to-county relationship file2026-10-01census_zcta_county_rel
EIA residential electricity prices2026-10-01eia_electricity_retail
EIA residential natural gas prices2026-10-01eia_natural_gas_residential
EIA propane and heating oil prices2026-10-01eia_propane_heating_oil
USDA Forest Service Timber Product Output2026-10-01fs_tpo_export_manifest
Fuel heat content and emission factors (EPA, EIA)2026-10-01heat_constants
HUD USPS ZIP-to-county crosswalk2026-10-01hud_crosswalk
Southern New England Stumpage Price Survey2026-10-01masswoods_stumpage_survey
Maine Governor's Energy Office firewood prices2026-10-01me_firewood_survey
New Hampshire Department of Energy firewood prices2026-10-01nh_firewood_survey
NOAA U.S. Climate Normals: heating degree days2026-10-01noaa_station_hdd_normal
Reader price submissions2026-10-01user_submissions

Validation and known limits

  • Only two states anchor the model. Maine and New Hampshire are the only real price anchors, and they fit exactly one number, the base price (one degree of freedom). Both are in New England, so checking the model against them is a sanity check, not an out-of-sample error estimate.
  • The two anchors measure different products. New Hampshire publishes green, log-length wood, which its own notes say costs about half as much as cut-and-split. We don't apply that rough factor, so the base price is in effect an average across two product forms. That is a reason to keep the model's stated uncertainty wide.
  • The climate effect points the wrong way on the one comparison we have. Maine is colder than New Hampshire but cheaper. The wood-heat market effect outweighs it, so the model gets the direction right, but it explains only about a tenth of the real 19% gap. Neither effect is fitted; with two anchors, a fit would be an artifact.
  • Most county numbers are not county-specific. For most counties the estimate is a state or purely structural number applied across every county in the state or region. It is not an appraisal of that county.
  • Firewood varies in ways the model doesn't see. Species, seasoning, delivery distance and season all move the price. Get two quotes.