Introduction to Small Area Estimation
Rajesh Majumder
07-12-2025
Definition
Small
Area Estimation (SAE) refers to statistical methods used to produce reliable
estimates for small geographic areas (e.g., districts, blocks, villages) or
small population subgroups (e.g., by age, sex, occupation) where sample sizes
from surveys are too small to yield direct reliable estimates.
A small area does
not always mean geographically small; it can also mean small subpopulations.
The main purpose is
to borrow strength from related areas or auxiliary information (like census
data, administrative records, or satellite data) to improve estimation.
Why SAE is
Needed?
National surveys are
typically designed to give accurate estimates at national or
state/provincial level.
For
local planning and policy decisions, estimates at the district,
sub-district, or demographic subgroup level are required.
Direct
estimates (based only on local sample data) are unreliable because of high
variance (small n).
SAE
provides more precise estimates by combining survey data with auxiliary
sources and statistical models.
Types of Small Area Estimation
Techniques
SAE
techniques are generally divided into two categories:

1.
Direct Estimation
(Design-based)
Based only on sample
data from the target area.
Example: Using
weighted means or proportions for the district sample.
Limitation: If sample
size is small, estimates are unstable (large standard error).
Direct methods are
rarely useful for very small domains.
2.
Indirect (Model-based)
Estimation
These
methods borrow strength across areas by linking small areas using models and
auxiliary data. There is various type of modelling strategies:

A.
Synthetic Estimation
Idea:
Apply relationship observed at a larger area (e.g., state level) to smaller
areas.
Example:
If state-level survey shows 20% prevalence of diabetes, assume each district
has the same prevalence.
Limitation:
Ignores local variations → may be biased if
small areas differ substantially.
B.
Regression Synthetic
Estimation
Uses
regression models linking survey outcome to auxiliary variables (from
census/administrative data).
Predicted
values for small areas are taken as estimates.
Limitation:
Doesn t account for small area random effects, so still may be biased.
C.
Composite Estimation
Combines
direct survey estimate and synthetic estimate with weights.
Example: ![]()
where
weight
depends on sample size/variance.
Advantage:
Balances between unbiased direct estimate and stable synthetic estimate.
D. Model-Based
SAE (Hierarchical / Mixed Models)
This
is the most widely used category.
a.
Area-level Models
(Fay-Herriot Model)
Developed
by Fay & Herriot (1979) for estimating per-capita income in small places in
the U.S.
It
is an area-level model, meaning it works with direct survey estimates at the
area level (not unit-level data).
Widely
used in official statistics because many national surveys release only
area-level direct estimates and their variances.
Suppose
we want to estimate a parameter (e.g., mean income, disease prevalence) for
small areas ![]()
From a sample survey,
we have:
Direct
estimate for area ![]()
Its
known sampling variance: ![]()
We
also have auxiliary information (from census, admin records, etc.):
Covariates:
(vector of predictors for area
)
Fay Herriot
Model is a two-level model (hierarchical / mixed model):
Level
1: Sampling model (measurement error model)
![]()
: direct survey estimate for area ![]()
: true small area mean (unknown)
: sampling error,
variance
(assumed known from
survey design)
Level
2: Linking model (area-level regression)
![]()
: regression
component (fixed effect of covariates)
: area-specific
random effect, accounts for unexplained area heterogeneity
: variance of random
effects (unknown, to be estimated)
Combined
Model
![]()
This
is a linear mixed model with two sources of error:
Sampling
error (
)
Area
effect (
)
Estimation
I.
Parameters
(
)
Estimated by Maximum
Likelihood (ML)
or Restricted
Maximum Likelihood (REML).
Some
applications use Method of Moments for
.
II.
Small
Area Predictions
The
Empirical Best Linear Unbiased Predictor (EBLUP) of
is:
![]()
Where
![]()
is a shrinkage
factor:
If
area sample size is large →
small →
→ estimate relies mostly on direct survey
data.
If
area sample size is small →
large →
→ estimate relies mostly on model
predictions.
Thus,
EBLUP is a weighted compromise between direct and synthetic estimates.
Mean
Squared Error (MSE)
MSE of
is estimated using
analytical formulas or bootstrap.
Confidence intervals
can be constructed accordingly.
b.
Unit-level Models (Battese-Harter-Fuller Model)
Why
Unit-Level Models?
Unit-level
models are used when:
We
have micro-data (individual or household records).
We
want small area means/totals, but sample sizes in each area are small.
Auxiliary
variables are available for every unit in the population, or at least their
area-level means are known.
Unlike
Fay Herriot (which uses area-level aggregates), BHF directly models the
unit-level responses.
The
Model Structure
For
each sampled unit j in area i, the
model is:
![]()
Where:
|
Component |
Meaning |
|
|
Observed
unit-level response (income, yield, etc.) |
|
|
Unit-level
auxiliary covariates |
|
|
Fixed-effect
regression parameters |
|
|
Area-level
random effect |
|
|
Unit-level
residual error |
Distributional
Assumptions
Area
effects (between-area variation):
![]()
Unit
errors (within-area variation):
![]()
Both
independent of each other.
What
Does the Model Capture?
✔ Between-area
variation
captures differences
among areas (e.g., districts, villages).
✔ Within-area
individual variation
captures variation
among individuals inside a given area.
✔ Uses complete
micro-data
This
allows more precision than area-level models.
The
Target: Predict the Area Mean
We
want to estimate the small area mean:

But
we only observe part of the area (small samples).
The
EBLUP Under the BHF Model
The
Best Linear Unbiased Predictor (BLUP) for the area mean is:
![]()
Where:
is the population
mean of auxiliary variables (known or estimated).
is the fixed-effect
estimate (from lmer).
is the predicted
random effect:
![]()
Here:
= sample mean in area
![]()
= sample mean of
covariates in area ![]()
= unit-level
shrinkage weight
Shrinkage
Weight in BHF Model
![]()
Where:
= sample size in area
![]()
Interpretation:
|
Case |
Meaning |
|
Large
|
Shrinkage
low → direct estimator
dominates |
|
Small
|
Shrinkage
high → model-based
prediction dominates |
|
Large
|
High
between-area variation → random effect more
important |
|
Large
|
High
within-area noise → shrink more toward
synthetic |
Connection
to Composite Estimator
The
BHF predictor is equivalent to:
![]()
So:
✔ It is a composite of
direct and model-based predictions
✔ Automatically
weights them based on model variances
✔ No need to manually
compute composite weights (unlike FH)
Advantages
of Unit-Level (BHF) Model
Uses full micro-data,
not just area means
Much more efficient
than FH.
Handles individual
covariates
Allows rich modeling (age, education, land size, etc.).
Natural mixed-model
structure
Estimation via REML
is straightforward.
Provides EBLUP
automatically
No manual composite
estimator required.
What
You Need to Apply BHF
You
need:
Unit-level
survey data (sample)
Population
totals or means of auxiliary variables
Unit-
and area-level covariates
Mixed
model software (like lmer())
c.
Hierarchical Bayesian (HB)
Models
Extends
Fay-Herriot and unit-level models using Bayesian framework.
Prior
distributions are assumed for parameters, and posterior distributions are used
for inference.
Advantages:
o
Produces
full probability distributions (credible intervals).
o
Flexible
to include spatial correlations, non-linear effects.
E.
Empirical Bayes Methods
A
frequentist version of Bayesian approach.
Area
estimates are shrunk towards regression predictions depending on reliability
of survey data.
Example:
If a district has large sample size, direct estimate is given more weight; if
small sample size, synthetic estimate dominates.
F.
Spatial Small Area
Estimation
Incorporates
spatial correlation among neighboring areas.
Example:
Disease prevalence in one district may resemble neighboring
districts.
Spatial
Fay-Herriot models and Conditional Autoregressive (CAR) priors are often used.
G. Advanced
Methods (AI/ML)
M-quantile
Models: Robust alternative to mixed models, less sensitive to outliers.
Machine
Learning SAE: Random Forest, Gradient Boosting applied with auxiliary data.
Model-assisted
approaches: Combine survey design weights with regression models.
Applications of SAE
References for Further Reading
Packages for R and Python
R Packages
Sae
sae2
hbsae
saeRobust
rstanarm / brms / INLA
emdi (excellent for
poverty SAE)
survey (for direct
estimators)
mboost / ranger (ML-assisted SAE)
Josae (Johannes
Breidenbach). Unit and area-level EBLUP estimators including also
heteroscedasticity.
hbsae (Harm Jan
Boonstra): Hierarchical Bayes methods for basic area-level and unit-level
models (also REML fitting).
BayesSAE (Chengchun Shi) Bayesian methods for a variety of models,
including unmatched models and spatial models.
saeeb (Rizki
Ananda Fauziah, Ika Yuni Wulansari): EB estimators under small area models for
counts.
rsae (Tobias Schoch).
Robust methods for area and unit-level models.
saeRobust (Sebastian
Warnhol): Robust EBLUP under area-level models, including models with spatial
and temporal correlation.
saeSim (Sebastian Warnholz,
Timo Schmid): Simulation and model fitting in SAE.
saery (M.D. Esteban, D.
Morales, A. Perez): EBLUP for temporal area-level Rao-Yu model.
mme (E. Lopez-Vizcaino,
M.J. Lombardia and D. Morales). Multinomial
area-level models for small area estimation of proportions, including models
with temporal correlation.
saeME (Muhammad Rifqi
Mubarak, Azka Ubaidillah): SAE under measurement error of covariates.
emdi (Sylvia Harmening,
Ann-Kristin Kreutzmann, Soeren Pannier, Natalia Rojas-Perilla, Nicola Salvati,
Timo Schmid, Matthias Templ, Nikos Tzavidis, Nora Wurz):
Functions that support estimating, assessing and mapping regional disaggregated
indicators.
Python
PyMC (Bayesian SAE)
Statsmodels (limited but usable)
Simulation example in R
rm(list=ls())
library(dplyr)
library(survey)
library(sae)
library(mgcv)
library(randomForest)
###############################################
# COMPLETE WORKING SMALL AREA ESTIMATION
DEMO
###############################################
set.seed(123)
#
##############################
### 1. SIMULATE POPULATION
##############################
m= 20 # Number of small areas
Ni= sample(80:150, m, replace = TRUE) # Population size in each area
# Area-level covariate
x_area= rnorm(m, 50, 10)
# True area means (unknown in practice)
beta0= 5
beta1= 0.4
sigma_u= 4
u_area= rnorm(m, 0, sigma_u)
theta_true= beta0 + beta1 * x_area + u_area #
True but unknown
##################################
### 2. GENERATE POPULATION DATA
##################################
population= data.frame(
area = rep(1:m, times = Ni),
x_area
= rep(x_area, times
= Ni)
)
# Auxiliary unit-level covariate
population$x_unit= rnorm(sum(Ni), 0, 1)
# Unit-level model: y = θ_i
+ β * x_unit + error
beta_unit1= 2
sigma_e= 5
population$y= theta_true[population$area] +
beta_unit1 * population$x_unit +
rnorm(sum(Ni), 0, sigma_e)
##########################################
### 3. DRAW SAMPLE (MIMICS A REAL SURVEY)
##########################################
sample_indices= unlist(
lapply(1:m, function(a) {
which(population$area == a) |>
sample(size = sample(8:15, 1))
})
)
sample_data= population[sample_indices,
]
###############################################
### 4. COMPUTE DIRECT ESTIMATES (θ_hat_D)
###############################################
library(dplyr)
direct_df= sample_data %>%
group_by(area) %>%
summarise(
theta_direct
= mean(y),
D = var(y) / n(), # sampling variance of direct estimate
x_area
= mean(x_area)
) %>% data.frame()
##################################################
### 5. FIT FAY HERRIOT MODEL (AREA LEVEL)
##################################################
library(sae)
fh_model= mseFH(theta_direct ~ x_area,
data
= direct_df,
vardir = D, method="ML")
FH_EB= fh_model$est$eblup #
Model-based EB estimator
###############################################
### 6. UNIT-LEVEL BHF MODEL (Battese-Harter)
###############################################
# population-level mean of x_unit per area
meanxpop= population %>%
group_by(area) %>%
summarise(mean_xunit_pop
= mean(x_unit))
# population-size
popnsize= population %>%
group_by(area) %>%
summarise(Ni = n())
# Fit BHF model
bhf_model= pbmseBHF(
formula = y ~ x_unit,
dom
= area,
data = sample_data,
meanxpop
= meanxpop,
popnsize
= popnsize,
method = "REML"
)
BHF_pred= bhf_model$est$eblup
###################################################################################
# 7. FIT FAY HERRIOT MODEL (AREA LEVEL) with
simple Weighted Least Square Technique
###################################################################################
# Weighted regression = Fay-Herriot fixed
effects
fh_lm= lm(theta_direct ~ x_area, data
= direct_df,
weights = 1/direct_df$D)
#summary(fh_lm)
## The classical Fay Herriot EB shrinkage
factor is: B_i= A/(A+D_i)
## where A = variance of area random
effects.
## A simple estimator (Prais Winsten type):
# estimate FH random-effect variance A
A_hat= max(0, var(residuals(fh_lm)) - mean(direct_df$D))
#A_hat
## Compute EBLUP (Manually)
# model predictions
theta_model= predict(fh_lm)
# shrinkage factor
B_i= A_hat / (A_hat + direct_df$D)
# EB estimators (same as Composite Estimates
)
FH_EB_lm= B_i * direct_df$theta_direct + (1 - B_i) * theta_model
#############################################################################
### 8. UNIT-LEVEL BHF MODEL (Battese-Harter) with simple Mixed effect Model
#############################################################################
bhf_lmer= lmer(y ~ x_unit + (1 | area), data = sample_data)
# Predict summary(bhf_lmer)
##
Predict Small-Area Means (Manual BHF EBLUP)
# population mean of x_unit
in each area
meanx_pop= population %>% group_by(area) %>%
summarise(mx = mean(x_unit))
# fixed effects
beta_hat= fixef(bhf_lmer)
# random effects
u_hat= ranef(bhf_lmer)$area[,1]
# Extract variance components
sigma_u2 = as.numeric(VarCorr(bhf_lmer)$area[1])
sigma_e2 = attr(VarCorr(bhf_lmer), "sc")^2
# Sample size per area
n_i= table(sample_data$area)
## Synthetic estimator = Model-based
prediction ignoring area sample mean
synthetic_unit= beta_hat[1] + beta_hat[2] * meanx_pop$mx
# BHF predictor
BHF_pred_lme4= synthetic_unit + u_hat
############################################################
### 9. Function for calculate composite etimats' weights
############################################################
get_composite_weights= function(
method = c("FH_area", "FH_unit"),
D = NULL,
A = NULL,
sigma_u2 = NULL,
sigma_e2 = NULL,
n_i
= NULL
) {
method= match.arg(method)
if (method == "FH_area") {
if (is.null(D) | is.null(A))
stop("FH_area
requires D (direct variances) and A (FH random-effect variance).")
#
Fay Herriot shrinkage weights
w= A / (A + D)
return(w)
}
if (method == "FH_unit") {
if (is.null(sigma_u2) | is.null(sigma_e2) | is.null(n_i))
stop("FH_unit
requires sigma_u2, sigma_e2, and n_i (sample sizes
per area).")
#
Unit-level shrinkage weights (BHF-type)
w= sigma_u2 / (sigma_u2 + sigma_e2 / n_i)
return(w)
}
}
## Composite etimats'
weights for Area-Level Fay Herriot model
w_FH_area= get_composite_weights(method = "FH_area",D
= direct_df$D,A
= A_hat)
## Composite etimats'
weights for Unit-Level BHF model
w_FH_unit= get_composite_weights(method = "FH_unit",sigma_u2 = sigma_u2,sigma_e2 = sigma_e2,n_i = as.numeric(n_i))
##########################################
### 10. Calculating Composite Estimates
##########################################
## Composite etimates
for Area-Level Fay Herriot model
theta_composite= w_FH_area * direct_df$theta_direct +(1 - w_FH_area) * predict(fh_lm)
theta_composite_unit= w_FH_unit * direct_df$theta_direct + (1 - w_FH_unit) * synthetic_unit
###########################################
## 11. GAM (Generalized Additive Model)
##########################################
# Fit GAM on sampled units
# using smooth term for x_unit
and linear for area-level covariate x_area
gam_fit= gam(y ~ s(x_unit) + x_area, data
= sample_data,
method = "REML")
# Predict at population unit level and then
compute area synthetic means
population$pred_gam= predict(gam_fit, newdata = population)
synthetic_gam_area= population %>%
group_by(area) %>%
summarise(syn_gam
= mean(pred_gam)) %>%
arrange(area)
## Composite Estimates for GAM
Synthetic ##
direct_and_syn_gam= direct_df %>%
arrange(area) %>%
left_join(synthetic_gam_area, by
= "area")
# Composite GAM estimate
composite_gam_unit= w_FH_unit * direct_and_syn_gam$theta_direct +
(1 - w_FH_unit) * direct_and_syn_gam$syn_gam
############################################################
## 12 RANDOM FOREST SYNTHETIC + COMPOSITE
ESTIMATES (RF)
############################################################
library(randomForest)
set.seed(2026)
## 1. FIT RANDOM FOREST ON SAMPLE DATA
rf_fit= randomForest(y ~ x_unit + x_area,
data
= sample_data,
ntree = 500,
mtry = 2,
importance
= TRUE)
#
## 2. SYNTHETIC PREDICTION FOR ENTIRE
POPULATION
population$rf_pred= predict(rf_fit, newdata
= population)
#
## 3. SYNTHETIC AREA-LEVEL MEANS (RF)
rf_synthetic_area= population %>%
group_by(area) %>%
summarise(RF_synthetic
= mean(rf_pred)) %>%
arrange(area)
#
## 4. MERGE WITH DIRECT ESTIMATES
direct_rf= direct_df %>%
arrange(area) %>%
left_join(rf_synthetic_area, by = "area")
#
## 6. COMPOSITE ESTIMATES USING RF SYNTHETIC
MEANS
Composite_RF= w_FH_unit * direct_rf$theta_direct +
(1 - w_FH_unit) * direct_rf$RF_synthetic
###############################################
### 13. COLLECT ALL RESULTS TOGETHER
###############################################
final_results= data.frame(area=1:m,
true_theta= theta_true,
direct= direct_df$theta_direct,
Fay_Herriot= FH_EB,
Fay_Herriot_area_by_WLS= FH_EB_lm,
BHF_unit_level= BHF_pred$eblup,
BHF_unit_level_by_GLMM= BHF_pred_lme4,
Composite_Estimate_Area= theta_composite,
Composite_Estimate_Unit= theta_composite_unit,
GAM_synthetic_area= direct_and_syn_gam$syn_gam,
Composite_GAM_Unit= composite_gam_unit,
RF_synthetic_area= direct_rf$RF_synthetic,
Composite_RF_Unit= Composite_RF)
####################
### 14. Plotting
####################
par(mfrow=c(2,2))
plot(final_results$area, final_results$true_theta,
type =
"b", pch
= 1,cex=2,
ylim
= range(final_results[,c("true_theta","direct","Fay_Herriot","Fay_Herriot_area_by_WLS","Composite_Estimate_Area")], na.rm=TRUE),
xlab
= "Area", ylab
= "Estimate", main = "Area level
Fay Herriot")
lines(final_results$area, final_results$direct,
type =
"b", col = "blue", pch
= 17)
lines(final_results$area, final_results$Fay_Herriot,
type =
"b", col = "purple", pch
= 15)
lines(final_results$area, final_results$Fay_Herriot_area_by_WLS,
type =
"b", col = "green", pch
= 13)
lines(final_results$area, final_results$Composite_Estimate_Area,
type =
"b", col = "red", pch
= 11)
legend("bottomright",
legend = c("True","Direct","Fay
Herriot(by sae package)","Fay Herriot(by
WLS)","Area
level Composite estimate"),
col = c("black","blue","purple","green","red"),
pch
= c(1,17,15,13,11))
plot(final_results$area, final_results$true_theta,
type =
"b", pch
= 1,cex=2,
ylim
= range(final_results[,c("true_theta","direct","BHF_unit_level","BHF_unit_level_by_GLMM","Composite_Estimate_Unit")], na.rm=TRUE),
xlab
= "Area", ylab
= "Estimate", main = "Unit level BHF")
lines(final_results$area, final_results$direct,
type =
"b", col = "blue", pch
= 17)
lines(final_results$area, final_results$BHF_unit_level,
type =
"b", col = "purple", pch
= 15)
lines(final_results$area, final_results$BHF_unit_level_by_GLMM,
type =
"b", col = "green", pch
= 13)
lines(final_results$area, final_results$Composite_Estimate_Unit,
type =
"b", col = "red", pch
= 11)
legend("bottomright",
legend = c("True","Direct","BHF(by
sae package)","BHF(by GLMM)","Unit level Composite
estimate"),
col = c("black","blue","purple","green","red"),
pch
= c(1,17,15,13,11))
plot(final_results$area, final_results$true_theta,
type =
"b", pch
= 1,cex=2,
ylim
= range(final_results[,c("true_theta","direct","GAM_synthetic_area","Composite_GAM_Unit","BHF_unit_level","Composite_Estimate_Unit")], na.rm=TRUE),
xlab
= "Area", ylab
= "Estimate", main = "Unit level GAM")
lines(final_results$area, final_results$direct,
type =
"b", col = "blue", pch
= 17)
lines(final_results$area, final_results$GAM_synthetic_area,
type =
"b", col = "purple", pch
= 15)
lines(final_results$area, final_results$Composite_GAM_Unit,
type =
"b", col = "green", pch
= 13)
lines(final_results$area, final_results$BHF_unit_level,
type =
"b", col = "skyblue", pch
= 11)
lines(final_results$area, final_results$Composite_Estimate_Unit,
type =
"b", col = "red", pch
= 10)
legend("bottomright",
legend = c("True","Direct","GAM
synthetic","Unit level GAM Composite Estimate","BHF (by sae
package)","Unit
level Composite estimate"),
col = c("black","blue","purple","green","skyblue","red"),
pch
= c(1,17,15,13,11,10))
plot(final_results$area, final_results$true_theta,
type =
"b", pch
= 1,cex=2,
ylim
= range(final_results[,c("true_theta","GAM_synthetic_area","direct","RF_synthetic_area","Composite_RF_Unit","BHF_unit_level","Composite_Estimate_Unit")], na.rm=TRUE),
xlab
= "Area", ylab
= "Estimate", main = "Unit level Random
Forest")
lines(final_results$area, final_results$direct,
type =
"b", col = "blue", pch
= 17)
lines(final_results$area, final_results$RF_synthetic_area,
type =
"b", col = "purple", pch
= 15)
lines(final_results$area, final_results$Composite_RF_Unit,
type =
"b", col = "green", pch
= 13)
lines(final_results$area, final_results$BHF_unit_level,
type =
"b", col = "skyblue", pch
= 11)
lines(final_results$area, final_results$Composite_Estimate_Unit,
type =
"b", col = "red", pch
= 10)
legend("bottomright",
legend = c("True","Direct","Random
Forest synthetic","Unit
level Random Forest Composite Estimate","BHF
(by sae package)","Unit level Composite
estimate"),
col = c("black","blue","purple","green","skyblue","red"),
pch
= c(1,17,15,13,11,10))
par(mfrow=c(1,1))
Output:
|
Area |
True theta |
Direct |
Fay Herriot |
Fay Herriot area by WLS |
BHF unit level |
BHF unit level by GLMM |
Composite Estimate Area |
Composite Estimate Unit |
GAM Synthetic Area |
Composite GAM
Unit |
RF Synthetic Area |
Composite RF Unit |
|
1 |
23.30 |
24.96 |
24.95 |
24.94 |
25.02 |
25.03 |
24.94 |
25.02 |
24.71 |
24.94 |
25.42 |
25.01 |
|
2 |
15.83 |
17.24 |
18.07 |
18.13 |
17.25 |
17.33 |
18.13 |
17.85 |
21.57 |
17.55 |
17.60 |
17.26 |
|
3 |
30.76 |
29.42 |
28.41 |
28.47 |
29.37 |
29.32 |
28.47 |
29.11 |
22.63 |
28.87 |
28.66 |
29.36 |
|
4 |
27.33 |
26.87 |
26.55 |
26.58 |
27.74 |
27.72 |
26.58 |
26.75 |
23.22 |
26.45 |
26.05 |
26.78 |
|
5 |
13.76 |
14.34 |
15.02 |
15.11 |
15.10 |
15.19 |
15.11 |
15.19 |
18.54 |
14.66 |
14.90 |
14.39 |
|
6 |
26.74 |
27.91 |
28.06 |
27.97 |
27.98 |
27.96 |
27.97 |
27.75 |
29.16 |
28.00 |
28.79 |
27.97 |
|
7 |
23.75 |
23.44 |
24.07 |
24.01 |
24.20 |
24.21 |
24.01 |
23.75 |
26.54 |
23.83 |
25.65 |
23.72 |
|
8 |
23.57 |
23.51 |
23.26 |
23.32 |
23.81 |
23.83 |
23.32 |
23.68 |
20.78 |
23.27 |
22.33 |
23.41 |
|
9 |
29.68 |
28.58 |
28.77 |
28.69 |
28.60 |
28.57 |
28.69 |
28.35 |
31.10 |
28.80 |
29.80 |
28.69 |
|
10 |
27.72 |
27.95 |
27.78 |
27.67 |
26.95 |
26.94 |
27.67 |
27.70 |
27.40 |
27.89 |
25.28 |
27.67 |
|
11 |
23.71 |
26.29 |
26.02 |
26.03 |
25.47 |
25.47 |
26.03 |
26.22 |
24.41 |
26.11 |
24.98 |
26.16 |
|
12 |
28.41 |
29.81 |
29.69 |
29.57 |
29.79 |
29.74 |
29.57 |
29.50 |
29.45 |
29.78 |
30.17 |
29.83 |
|
13 |
33.99 |
34.56 |
33.02 |
32.87 |
33.26 |
33.18 |
32.87 |
33.66 |
29.54 |
34.03 |
32.09 |
34.30 |
|
14 |
27.38 |
26.22 |
26.90 |
26.74 |
26.83 |
26.82 |
26.74 |
26.18 |
29.24 |
26.60 |
28.49 |
26.51 |
|
15 |
33.82 |
32.83 |
31.57 |
31.45 |
32.69 |
32.63 |
31.45 |
32.29 |
28.58 |
32.50 |
31.42 |
32.72 |
|
16 |
21.02 |
20.98 |
21.84 |
21.76 |
21.34 |
21.40 |
21.76 |
21.32 |
28.06 |
21.49 |
22.73 |
21.10 |
|
17 |
27.09 |
27.81 |
27.59 |
27.58 |
27.75 |
27.73 |
27.58 |
27.62 |
25.55 |
27.60 |
26.43 |
27.68 |
|
18 |
24.27 |
24.89 |
24.77 |
24.78 |
24.90 |
24.90 |
24.78 |
24.94 |
24.24 |
24.83 |
24.16 |
24.83 |
|
19 |
24.34 |
22.19 |
22.45 |
22.45 |
21.90 |
21.94 |
22.45 |
22.53 |
23.93 |
22.37 |
23.86 |
22.37 |
|
20 |
23.74 |
23.93 |
23.73 |
23.79 |
23.77 |
23.79 |
23.79 |
24.07 |
22.59 |
23.80 |
24.79 |
24.01 |
