El muestreo aleatorio estratificado es una técnica de muestreo que se utiliza cuando en la población se pueden distinguir subgrupos o subpoblaciones claramente identificables. Mediante este método de muestreo, la selección de los elementos que van a formar parte de la muestra se realiza por separado dentro de cada estrato, sin dejar ningún estrato sin muestrear. En la práctica esta técnica presenta dos ventajas importantes:
Puede facilitar la implementación física del muestreo (organización de la campaña de toma de datos, lugares a visitar, etc.)
Permite aplicar el esfuerzo de muestreo de forma “inteligente”, tomando muestras de mayor tamaño en aquellos estratos que así lo requieran, y menos en donde no haga falta. Por poner un ejemplo extremo, si todos los sujetos de un estrato son clónicos, posiblemente bastaría con medir a uno de ellos para tener toda la información necesaria. Si los sujetos de un estrato son extremadamente heterogéneos, habrá que tomar una muestra grande para poder captar bien el efecto de esa variabilidad.
Este tipo de muestreo es adecuado cuando:
Disponemos de una población dividida en \(K\) subpoblaciones (estratos) disjuntos.
Si la población es infinita, se conocen las proporciones \(\phi_{1},\phi_{2},\dots,\phi_{K}\) de elementos de la misma dentro de cada estrato, siendo \(\sum_{i=1}^{K}\phi_{i}=1\).
Si la población es finita de tamaño \(N\), se conocen los tamaños de los distintos estratos, \(N_{1},N_{2},\ldots,N_{K}\), siendo \(N=\sum_{i=1}^{K}N_{i}\). En este caso, la proporción de elementos de la población dentro del \(i-\)ésimo estrato es, obviamente, \(\phi_{i}=\frac{N_{i}}{N}\).
En el estrato \(i\) la media de la variable de interés es \(\mu_{i}\) y su desviación típica es \(\sigma_{i}\).
En las condiciones citadas en el punto anterior, la media global de la población puede expresarse como: \[\mu=\sum_{k=1}^{K}\phi_{k}\mu_{k}\] {#eq:mediaGlobal} (esto es, la media ponderada de las medias dentro de cada estrato)
Si en cada estrato \(k\) se toma una muestra de tamaño \(n_{k}\), el estimador de la media en ese estrato sería: \[\overline{x}_{k}=\frac{1}{n_{k}}\sum_{i=1}^{n_{k}}x_{ki}\]
Si en la ecuación (@eq:mediaGlobal), sustituimos la media \(\mu_k\) de cada estrato por su estimador \(\overline{x}_{k}\), la media poblacional puede entonces estimarse como la media ponderada de las medias de todos los estratos: \[ \overline{x}=\sum_{k=1}^{K}\phi_{k}\overline{x}_{k} \] {#eq:mediaGlobal} Suponiendo que las observaciones dentro de cada estrato se realizan independientemente, la varianza de la media estimada de esta forma es: \[ Var\left(\overline{x}\right)=\sum_{k=1}^{K}\phi_{k}^{2}Var\left(\overline{x}_{k}\right) \]
Cuando la población es infinita, \(Var\left(\overline{x}_{k}\right)=\frac{\sigma_{k}^{2}}{n_{k}}\), por lo que: \[ Var\left(\overline{x}\right)=\sum_{k=1}^{K}\phi_{k}^{2}\frac{\sigma_{k}^{2}}{n_{k}} \] {#eq:varPobInfinita}
Cuando la población es finita, \(Var\left(\overline{x}_{k}\right)=\frac{\sigma_{k}^{2}}{n_{k}}\left(1-\frac{n_{k}}{N_{k}}\right)\), por lo que en este caso: \[ Var\left(\overline{x}\right)=\sum_{k=1}^{K}\phi_{k}^{2}\frac{\sigma_{k}^{2}}{n_{k}}\left(1-\frac{n_{k}}{N_{k}}\right) \] {#eq:varPobFinita}
Como la varianza \(\sigma_{k}^{2}\) dentro de cada estrato habitualmente no se conoce, sino que se estima mediante la correspondiente varianza muestral \(s_{k}^{2}\), el estimador de la varianza de la media muestral global se obtendría a partir de las expresiones (@eq:varPobInfinita) y (@eq:varPobFinita) anteriores simplemente como:
\[ s_{\overline{x}}^{2}=\begin{cases} \sum_{k=1}^{K}\phi_{k}^{2}\frac{s_{k}^{2}}{n_{k}} & \textrm{Si la población es infinita}\\ \sum_{k=1}^{K}\phi_{k}^{2}\frac{s_{k}^{2}}{n_{k}}\left(1-\frac{n_{k}}{N_{k}}\right) & \textrm{Si la población es finita} \end{cases} \] {#eq:se2}
Como ya sabemos, el intervalo de confianza para la media de una población con \(n\) grande es: \[ \mu\in\left[\overline{x}\pm z_{1-\alpha/2}s_{\overline{x}}\right] \] Para estimar \(\mu\) con un error menor o igual que \(\varepsilon\) con una confianza \(1-\alpha\), el tamaño de muestra se obtiene resolviendo:
\[ \varepsilon=z_{1-\alpha/2}s_{\overline{x}} \] {#eq:ezs}
Para resolver esta ecuación, en primer lugar hemos de decidir como repartir el tamaño muestral (global) \(n\) en los tamaños muestrales \(n_{1},n_{2},\dots,n_{K}\) que han de tomarse en cada estrato. Tres son las formas que se emplean habitualmente para ello:
Afijación uniforme: (menos utilizada). Consiste en repartir el tamaño muestral \(n\) en \(K\) partes iguales, esto es, \(n_{i}=\frac{n}{K}\). En todos los estratos, por tanto, se sacarían muestras del mismo tamaño.
Afijación proporcional: consiste simplemente en repartir el tamaño global \(n\) proporcionalmente al tamaño de cada estrato. De esta forma, la muestra a tomar en el estrato \(i\) sería de tamaño: \[ n_{i}=n\cdot\frac{N_{i}}{N}=n\cdot\phi_i \] (donde obviamente, el valor de \(n_{i}\) debe redondearse por exceso)
Afijación óptima: consiste en repartir el tamaño global \(n\) proporcionalmente a la variabilidad en cada estrato; de esta forma, estratos con poca varianza (estratos más homogéneos) requerirán un tamaño de muestra menor, mientras que los estratos más heterogéneos requerirán una muestra mayor. El tamaño de muestra óptimo en este sentido para el estrato \(i\) es: \[ n_{i}=n\cdot\frac{N_{i}s_{i}}{\sum_{k=1}^{K}N_{k}s_{k}}=n\cdot\frac{\phi_{i}s_{i}}{\sum_{k=1}^{K}\phi_{k}s_{k}} \]
En los tres casos, el tamaño de la muestra a tomar en cada estrato es de la forma \(n_{i}=n\cdot w_{i}\) donde: \[ w_{i}=\begin{cases} \frac{1}{K},\,\,\,\forall i & \textrm{Afijación uniforme}\\ \frac{N_{i}}{N} & \textrm{Afijación proporcional}\\ \frac{N_{i}s_{i}}{\sum_{k=1}^{K}N_{k}s_{k}} & \textrm{Afijación óptima} \end{cases} \] {#eq:wi}
Para calcular ahora el tamaño de muestra global \(n\) volvemos a la expresión (@eq:ezs). Suponiendo que la población es de tamaño finito \(N\), teniendo en cuenta (@eq:se2), dicha expresión es de la forma: \[ \varepsilon=z_{1-\alpha/2}\sqrt{\sum_{i=1}^{K}\phi_{i}^{2}\frac{s_{i}^{2}}{n_{i}}\left(1-\frac{n_{i}}{N_{i}}\right)} \] Sustituyendo \(n_{i}=n\cdot w_{i}\) nos queda: \[ \varepsilon=z_{1-\alpha/2}\sqrt{\sum_{i=1}^{K}\phi_{i}^{2}\frac{s_{i}^{2}}{nw_{i}}\left(1-\frac{nw_{i}}{N_{i}}\right)}=z_{1-\alpha/2}\sqrt{\sum_{i=1}^{K}\phi_{i}^{2}s_{i}^{2}\left(\frac{1}{nw_{i}}-\frac{1}{N_{i}}\right)} \] de donde: \[ \left(\frac{\varepsilon}{z_{1-\alpha/2}}\right)^{2}=\sum_{i=1}^{K}\phi_{i}^{2}s_{i}^{2}\left(\frac{1}{nw_{i}}-\frac{1}{N_{i}}\right)=\sum_{i=1}^{K}\phi_{i}^{2}s_{i}^{2}\frac{1}{nw_{i}}-\sum_{i=1}^{K}\phi_{i}^{2}s_{i}^{2}\frac{1}{N_{i}} \] \[ \left(\frac{\varepsilon}{z_{1-\alpha/2}}\right)^{2}=\frac{1}{n}\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{w_{i}}-\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{N_{i}} \] \[ \frac{1}{n}\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{w_{i}}=\left(\frac{\varepsilon}{z_{1-\alpha/2}}\right)^{2}+\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{N_{i}} \] \[ n=\frac{\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{w_{i}}}{\left(\frac{\varepsilon}{z_{1-\alpha/2}}\right)^{2}+\sum_{i=1}^{K}\frac{\phi_{i}^{2}s_{i}^{2}}{N_{i}}} \] y teniendo en cuenta que en poblaciones finitas \(\phi_{i}=\frac{N_{i}}{N}\), la expresión anterior se reduce a: \[ n=\frac{\sum_{i=1}^{K}\left(\frac{N_{i}}{N}\right)^{2}\frac{s_{i}^{2}}{w_{i}}}{\left(\frac{\varepsilon}{z_{1-\alpha/2}}\right)^{2}+\frac{1}{N}\sum_{i=1}^{K}\frac{N_{i}}{N}s_{i}^{2}} \] {#eq:nFinita} Si la población fuese de tamaño infinito, el segundo témino del denominador de la ecuación (@eq:nFinita) desaparece, y el tamaño de muestra resultante sería: \[ n=\left(\frac{z_{1-\alpha/2}}{\varepsilon}\right)^{2}\sum_{i=1}^{K}\phi_{i}^{2}\frac{s_{i}^{2}}{w_{i}} \] {#eq:nInfinita} donde hemos sustituido \(\phi_{i}=\frac{N_{i}}{N}\) , ya que aunque la población sea infinita, sí que debemos conocer a priori qué proporción de la misma pertenece a cada estrato, esto es, debemos conocer los valores \(\phi_{1},\phi_{2},\dots,\phi_{K}.\)
Por tanto, y a modo de resumen, el procedimiento para determinar el tamaño de muestra en cada estrato sería el siguiente:
Fijar la confianza \(1-\alpha\) y el margen de error \(\varepsilon\).
Obtener aproximaciones iniciales de las varianzas \(s_{i}^{2}\) en cada estrato.
Utilizar las ecuaciones (@eq:nFinita) u (@eq:nInfinita) según que la población sea finita o infinita para determinar el tamaño global \(n\) de la muestra.
Determinar el método de afijación, calcular conforme al mismo los factores de ponderación, \(w_{i}\) descritos en (@eq:wi) y calcular el tamaño de muestra en cada estrato mediante el redondeo por exceso del valor \(nw_{i}\)
Para comprobar la ventaja de hacer muestreo estratificado, simulamos una población con cinco estratos, bajo el supuesto de que cada estrato tiene un tamaño distinto y distintos valores medios y varianzas.
nis=c(1000,2000,5000,8000,10000)
mu=c(25,35,50,10,20)
sigma=c(4,6,8,2,3)
#mu=c(25,25,25,25,25)
#sigma=c(8,8,8,8,8)
estrato=list(
e1=rnorm(nis[1],mu[1],sigma[1]),
e2=rnorm(nis[2],mu[2],sigma[2]),
e3=rnorm(nis[3],mu[3],sigma[3]),
e4=rnorm(nis[4],mu[4],sigma[4]),
e5=rnorm(nis[5],mu[5],sigma[5]))
poblacion=unlist(estrato)
Mostramos el tamaño de la población, así como su media y desviación típica:
N=sum(nis)
mu.pob=mean(poblacion)
sigma.pob=sd(poblacion)
N
## [1] 26000
mu.pob
## [1] 24.02551
sigma.pob
## [1] 15.01304
Buscamos en primer lugar el tamaño óptimo para estimar \(\mu\) con una precisión de 0.5 unidades y confianza 0.95 si se lleva a cabo un muestreo aleatorio simple.
La siguiente función permite calcular el tamaño de muestra necesario si se lleva a cabo un muestreo aleatorio simple:
tam.muestra=function(alfa,epsilon,s,N=Inf)
{
za2=qnorm(1-alfa/2)
if (N==Inf) n=(s*za2/epsilon)^2
else n=N*((za2*s)^2)/((N-1)*epsilon^2+(za2*s)^2)
return(ceiling(n))
}
Utilizaremos esta función para determinar el tamaño de muestra para estimar la media de la población anterior mediante muestreo aleatorio simple sin tener en cuenta la estratificación presente en la población.
Primero se extrae una pequeña muestra para estimar sigma (que no se conoce):
n.piloto=10
muestra.piloto=sample(poblacion, size=n.piloto, replace=F)
s=sd(muestra.piloto)
muestra.piloto
## e52817 e42205 e1935 e44989 e58208 e32930 e43889
## 17.699320 10.832364 24.131205 9.832304 15.332274 49.888356 7.969721
## e46306 e45464 e32165
## 11.636574 9.512889 47.194537
s
## [1] 15.5901
Con ese valor piloto determinamos el tamaño de muestra requerido para un muestreo aleatorio simple:
alfa=0.05
epsilon=0.5
n.pobfin=tam.muestra(alfa,epsilon,s,N=N)
n.pobinf=tam.muestra(alfa,epsilon,s)
n.pobfin
## [1] 3266
n.pobinf
## [1] 3735
Se saca una muestra de ese tamaño y se estima la media:
n=n.pobfin
muestra=sample(poblacion, size=n, replace=T)
mu.est=mean(muestra)
za2=qnorm(1-alfa/2)
errtip=(sd(muestra)/sqrt(n))*sqrt(1-n/N)
intervalo.mu=mu.est+c(-1,1)*za2*errtip
Se muestran el tamaño muestral utilizado, y la media y el intervalo de confianza obtenidos:
n
## [1] 3266
mu.est
## [1] 24.2162
intervalo.mu
## [1] 23.73211 24.70029
Iteramos este proceso nsim veces y contamos cuántos intervalos contienen a la media
nsim=10000
nc=0
fc=sqrt(1-n/N)
for (i in 1:nsim)
{
muestra=sample(poblacion, size=n)
mu.est=mean(muestra)
intervalo.mu=mu.est+c(-1,1)*za2*(sd(muestra)/sqrt(n))*fc
if ((mu.pob>=intervalo.mu[1])&(mu.pob<=intervalo.mu[2])) nc=nc+1
}
nc
## [1] 9478
nc/nsim
## [1] 0.9478
Así pues, podemos confirmar que el muestreo aleatorio simple consigue estimar la media de la población con la confianza (0.95) y precisión (0.5) requeridas. Ahora bien, ello ha requerido el esfuerzo de tomar una muestra de tamaño ¡¡¡ 3266!!!
Repetimos el ejercicio anterior, pero ahora con muestreo estratificado.
Para ello se requiere una estimación piloto de la varianza en cada estrato:
s2=rep(0,5)
for (j in 1:5)
{
n.piloto=10
muestra.piloto=sample(estrato[[j]], size=n.piloto, replace=F)
s2[j]=var(muestra.piloto)
}
s2
## [1] 12.444138 25.603465 74.285442 7.647746 12.434680
Para calcular el tamaño de muestra en cada estrato, en primer lugar construimos una función para ello:
La función recibe como argumentos los valores del error máximo a cometer, la confianza, las \(\phi_i\), las \(s_i\), el tipo de afijación a realizar (1: uniforme, 2:proporcional, 3:óptima) y el tamaño N de la población.
Como resultado, la función devuelve el tamaño muestral en cada estrato.
nMuestreoEstratificado=function(epsilon,confianza,phi,s,afijacion=3,N=inf){
K=length(phi) # Número de estratos
alfa=1-confianza
za=qnorm(1-alfa/2)
w=if (afijacion==1) rep(1/K,K) else if (afijacion==2) phi else phi*s/sum(phi*s)
if (N!=Inf) n=sum(phi^2*s^2/w)/((epsilon/za)^2+(1/N)*sum(phi*s^2))
else n=(za/epsilon)^2*sum(phi^2*s^2/w)
ni=ceiling(n*w)
return(ni)
}
Aplicamos ahora nuestra función para el cálculo del tamaño muestral en cada estrato del ejemplo anterior.
niUnif=nMuestreoEstratificado(epsilon=0.5,confianza=0.95,phi=nis/N,s=sqrt(s2),afijacion=1,N=N)
niUnif
## [1] 84 84 84 84 84
sum(niUnif)
## [1] 420
niProp=nMuestreoEstratificado(epsilon=0.5,confianza=0.95,p=nis/N,s=sqrt(s2),afijacion=2,N=N)
niProp
## [1] 14 28 70 112 140
sum(niProp)
## [1] 364
niOpt=nMuestreoEstratificado(epsilon=0.5,confianza=0.95,p=nis/N,s=sqrt(s2),afijacion=3,N=N)
niOpt
## [1] 10 26 111 57 91
sum(niOpt)
## [1] 295
Comprobamos ahora mediante simulación el resultado que se consigue al estimar la media poblacional con estos tamaños muestrales mediante muestreo estratificado. Para ello tengamos en cuenta que, de acuerdo con (@eq:mediaGlobal), el estimador de la media poblacional a partir de la media de cada estrato es: \[\overline{x}=\sum_{k=1}^{K}\phi_{k}\overline{x}_{k}\] y si queremos construir un intervalo de confianza deberemos utilizar la fórmula \(\left[\overline{x}\pm z_{1-\alpha/2}s_{\overline{x}}\right]\) donde \(s_{\overline{x}}\) viene dada por la expresión (@eq:se2). Por tanto, para población finita:
\[s_{\overline{x}}=\sqrt{\sum_{k=1}^{K}\phi_{k}^{2}\frac{s_{k}^{2}}{n_{k}}\left(1-\frac{n_{k}}{N_{k}}\right)}\]
Veamos los resultados obtenidos por simulación:
mediaEstrato=vector("numeric",5) # Vector donde se guardará la media estimada en cada estrato
s2Estrato=vector("numeric",5) # Vector donde se guardará la varianza estimada en cada estrato
for (j in 1:5)
{
muestra=sample(estrato[[j]], size=niUnif[j])
mediaEstrato[j]=mean(muestra)
s2Estrato[j]=var(muestra)
}
phi=nis/N
media=sum(phi*mediaEstrato) # Estimación de la media poblacional
sx=sqrt(sum(phi^2*(s2Estrato/niUnif)*(1-niUnif/nis))) # Error estándar de la media
intervalo=media+c(-1,1)*qnorm(0.975)*sx # Intervalo de confianza al 95%
sum(niUnif) # Tamaño total de la muestra
## [1] 420
media
## [1] 23.93666
intervalo
## [1] 23.50689 24.36643
mediaEstrato=vector("numeric",5)
s2Estrato=vector("numeric",5)
for (j in 1:5)
{
muestra=sample(estrato[[j]], size=niProp[j])
mediaEstrato[j]=mean(muestra)
s2Estrato[j]=var(muestra)
}
phi=nis/N
media=sum(phi*mediaEstrato) # Estimación de la media poblacional
sx=sqrt(sum(phi^2*(s2Estrato/niProp)*(1-niProp/nis))) # Error estándar de la media
intervalo=media+c(-1,1)*qnorm(0.975)*sx # Intervalo de confianza al 95%
sum(niProp) # Tamaño total de la muestra
## [1] 364
media
## [1] 24.06569
intervalo
## [1] 23.59814 24.53323
mediaEstrato=vector("numeric",5)
s2Estrato=vector("numeric",5)
for (j in 1:5)
{
muestra=sample(estrato[[j]], size=niOpt[j])
mediaEstrato[j]=mean(muestra)
s2Estrato[j]=var(muestra)
}
phi=nis/N
media=sum(phi*mediaEstrato) # Estimación de la media poblacional
sx=sqrt(sum(phi^2*(s2Estrato/niOpt)*(1-niOpt/nis))) # Error estándar de la media
intervalo=media+c(-1,1)*qnorm(0.975)*sx # Intervalo de confianza al 95%
sum(niOpt) # Tamaño total de la muestra
## [1] 295
media
## [1] 24.36329
intervalo
## [1] 23.90482 24.82176
Como vemos, hemos sido capaces de estimar la media con la misma precisión que con el muestreo aleatorio simple, pero con tamaños de muestra muchísimo menores.