Methodology
What this is not
This is a modeled estimate, not an appraisal or a quote from any specific seller. It combines government data (energy prices, climate, heating-fuel prevalence) with published state surveys and carries a wide, honestly-stated uncertainty range — actual local prices vary by species, seasoning, delivery distance, and season. It is not a substitute for getting an actual quote from a local firewood seller.
Where a county's estimate is influenced by user-submitted data, remember that submissions are self-reported and unverified — Wood Heat Index doesn't independently confirm any individual price.
The model, in plain language
Every county starts from a structural prior: a formula relating firewood price to heating degree days (colder climates, more demand) and the local share of homes that heat with wood (more wood-heat demand, more of a local market). Where a real price observation exists for that county's state, the estimate shifts toward it — the more observations and the more precisely they're measured, the more weight they get, following a standard closed-form Bayesian shrinkage rule (no simulation, no per-county hand-tuning).
0 counties are observed (a real, county-resolved price observation dominates the estimate), 26 are state-anchored (influenced by a real observation, but only at state resolution), and 3118 — the large majority — are structural-only: theory alone, no observation anywhere informs the number. That imbalance is the honest state of available data, not a bug to be tuned away.
Evidence tiers
| Tier | Meaning | Counties |
|---|---|---|
| Observed | A real, county-resolved observation dominates this estimate — either a county-level survey, or at least 3 independent user submissions for that county. | 0 |
| State-anchored | Influenced by a real observation, but not enough to dominate: the observation is at state or regional resolution only, or there are county-specific user submissions but fewer than 3 of them. | 26 |
| Structural-only | No observation anywhere informs this number; it is theory (structural prior) alone. | 3118 |
Published prices are also rounded to a precision the underlying evidence actually justifies — wide, structural-only estimates round to the nearest $25; well-supported ones to the nearest $5. An interval whose top is more than double its bottom is flagged "wide uncertainty" rather than shown with normal visual weight.
User submissions
Every county page has a form for sharing a real price you paid. A human reviews every submission before it can affect any published estimate — there is no automatic acceptance path.
Accepted submissions for one county are pooled, not averaged in the naive sense: the estimate uses the median of that county's accepted prices, so a single mistaken or unusual submission can't single-handedly move the number. The pooled evidence also 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 for a county are treated as roughly equivalent to one state-level survey observation, not five.
A county needs at least 3 independent submissions before user-submitted evidence alone can move it into the observed tier — one or two submissions still count (they can move a county from structural-only to state-anchored), but aren't enough on their own to claim the estimate is well-supported. This threshold, like the model's other declared coefficients below, is a stated judgment call, not something derived from data — there isn't yet enough submission history to derive it from.
Model coefficients
fitted means solved from a real anchor (with a stated degrees of freedom); every other basis is a stated, undisguised assumption — declared and documented, not derived.
| Coefficient | Value | Basis |
|---|---|---|
| base_usd_per_cord | 403.99 | fitted |
| hdd_elasticity | 0.15 | declared_unfitted |
| hdd_floor | 100.0 | declared |
| hdd_reference | 6000.0 | declared |
| markup_multiplier | 37.34 | derived_descriptive |
| min_submissions_for_observed_tier | 3.0 | declared |
| observation_variance | 0.05 | declared_lower_bounded |
| structural_prior_variance | 0.16 | declared_conservative |
| stumpage_usd_per_cord | 10.82 | observed_descriptive |
| user_submission_max_effective_n | 5.0 | declared_conservative |
| user_submission_variance | 0.25 | declared_conservative |
| wood_share_elasticity | -0.05 | declared_unfitted |
| wood_share_floor | 0.001 | declared |
| wood_share_reference | 0.02 | declared |
Data sources
| Source | Accessed |
|---|---|
| bls_cpi_ppi | 2026-08-14 |
| census_acs_b25040_county | 2026-08-14 |
| census_gazetteer_counties | 2026-08-14 |
| census_gazetteer_zcta | 2026-08-14 |
| census_zcta_county_rel | 2026-08-14 |
| eia_electricity_retail | 2026-08-14 |
| eia_natural_gas_residential | 2026-08-14 |
| eia_propane_heating_oil | 2026-08-14 |
| fs_tpo_export_manifest | 2026-08-14 |
| heat_constants | 2026-08-14 |
| hud_crosswalk | 2026-08-14 |
| masswoods_stumpage_survey | 2026-08-14 |
| me_firewood_survey | 2026-08-14 |
| nh_firewood_survey | 2026-08-14 |
| noaa_station_hdd_normal | 2026-08-14 |
| user_submissions | 2026-08-14 |
Known limits
- The two real observation anchors (Maine, New Hampshire) are both New England — validation against them is a sanity check, not a real out-of-sample error estimate.
- A county-level price is, for the large majority of counties, a state or purely structural number applied uniformly across every county in that state or region — it is not a county-specific appraisal.
- Firewood price varies by species, seasoning, delivery distance, and season in ways this model does not observe.