Skip to main content
Every pyFIA estimate comes with a measure of uncertainty. This page explains how that standard error is calculated, why FIA’s formula looks different from a textbook one, and how closely pyFIA matches the official EVALIDator tool.

EXPNS is not a survey weight

The key to FIA variance is the expansion factor EXPNS:
Unlike a standard survey weight, EXPNS already contains the inverse of the sample size (1/n_h). That single fact is why FIA’s variance formula differs from the stratified-sampling formulas in most textbooks.

The domain-total variance formula

For tree-based estimates (volume, biomass, tree count, growth, mortality, removals), pyFIA uses the stratified domain total variance: V(Y^)=∑hwh2 syh2 nhV(\hat{Y}) = \sum_h w_h^2 \, s^2_{yh} \, n_h where for each stratum hh:
  • whw_h = EXPNS (acres per plot)
  • syh2s^2_{yh} = sample variance of the plot-level values (with ddof=1)
  • nhn_h = number of plots
Multiplying by nhn_h looks backwards compared to a textbook mean-variance formula that divides by it. It’s correct here because EXPNS already carries 1/nh1/n_h, and we’re estimating a total, not a mean. The per-acre standard error is then derived as SE_total / total_area.

Two principles that keep it unbiased

  1. Include every plot, with zeros. Plots without any trees in your domain still contribute — as zeros — to the stratum variance. Dropping them biases the result. pyFIA joins all evaluation plots and fills missing values with zero before computing variance.
  2. Single-plot strata contribute no variance. Variance is undefined for nh=1n_h = 1, so those strata are set to zero variance rather than dropped.

Reading the output

Every estimate includes standard-error columns (suffix _SE) — for example VOLCFNET_TOTAL_SE for volume or AREA_SE for area. Pass variance=True to additionally get the matching variance columns (suffix _VARIANCE), each equal to the corresponding standard error squared. Standard errors are always returned; the variance columns are opt-in and behave the same way across every estimator:
There are no separate confidence-interval columns — construct one from the estimate and its standard error (for a 95% interval, ±1.96 × SE).

Validation against EVALIDator

EVALIDator is the official USFS estimation tool and pyFIA’s reference for correctness. Validated against Georgia (EVALID 132301 / 132303): Standard errors typically land within 1-3% of EVALIDator. Differences come from rounding, finite-population corrections, and edge cases like single-plot strata. You can run this comparison yourself — see validate_pyfia_estimate().

A note on temporal methods

FIA defines several temporal estimators. pyFIA implements TI (Temporally Indifferent) — using all available data in an evaluation — which is EVALIDator’s default. Annual and moving-average methods (SMA, LMA, EMA) are not currently implemented.

References

  • Bechtold, W.A. & Patterson, P.L. (2005). The Enhanced FIA Program. Gen. Tech. Rep. SRS-80, Chapter 4. DOI: 10.2737/SRS-GTR-80
  • Westfall, J.A.; Patterson, P.L.; Coulston, J.W. (2011). Post-stratified estimation: within-strata and total sample size recommendations. Can. J. For. Res. 41(5): 1130-1139.
  • USDA Forest Service (2018). Population Estimation User Guide.