Una muestra se define como un conjunto de elementos de muestreo seleccionados entre las unidades muestrales del marco de referencia del estudio. Si los elementos de la muestra se eligen al azar, la muestra es aleatoria.
Llamamos muestreo aleatorio simple al procedimiento de obtención de la muestra que garantiza que todos los elementos muestrales tienen a priori la misma probabilidad de ser seleccionados para pasar a formar parte de la muestra.
El tamaño de la muestra se debe elegir de modo que se consiga una precisión preespecificada en la estimación del parámetro de interés. Si, por ejemplo, nuestro interés se centra en estimar la media de una variable con distribución normal, sabemos que el intervalo de confianza correspondiente a nivel \(1-\alpha\) viene dado por la expresión: \[\mu\in\left[\overline{x}\pm t_{n-1,\alpha/2}s_{\overline{x}}\right]\]
donde \(s_{\overline{x}}\) se calcula mediante:
\(s_{\overline{x}}=\frac{s}{\sqrt{n}}\) si la población es infinita.
\(s_{\overline{x}}=\frac{s}{\sqrt{n}}\sqrt{1-\frac{n}{N}}\) si la población es finita de tamaño \(N\).
Este intervalo nos indica que con una confianza \(1-\alpha\), la diferencia entre el verdadero valor de \(\mu\) (desconocido) y su estimación \(\overline{x}\) (conocido una vez que se tome la muestra) es menor que \(t_{n-1,\alpha/2}s_{\overline{x}}\). Esta cantidad, por tanto, mide la precisión de nuestra estimación.
Además, en la práctica, si la población que se muestrea no sigue una distribución normal, el intervalo anterior sigue siendo válido asintóticamente (lo que significa que solo vale si la muestra es suficientemente grande), y el valor de \(t_{n-1,\alpha/2}\) puede sustituirse por el percentil correspondiente, \(z_{1-\alpha/2}\), de la distribución normal \(N(0,1)\)
Para el cálculo del tamaño muestral necesario para estimar la media de la población con un error inferior a \(\varepsilon\) basta con igualar la anchura del intervalo anterior a \(\varepsilon\) y despejar \(n\). Es fácil comprobar que:
Si la población es infinita: \[n= \left(z_{1-\alpha/2}\frac{s}{\varepsilon}\right)^2\]
Si la población es finita: \[n=\frac{Nz_{1-\alpha/2}^{2}s^{2}}{\left(N-1\right)\varepsilon^{2}+z_{1-\alpha/2}^{2}s^{2}}\]
La siguiente función en R permite implementar ambas ecuaciones. Por defecto asume que el tamaño de la población es N=Inf
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))
}
Podemos ver algunos ejemplos. Si se quiere determinar el tamaño de muestra para estimar la estatura de los sujetos de una población con un error inferior a 2 cm sabiendo que la desviación típica es de 15 cm, y asumiendo una confianza del 95%:
n=tam.muestra(alfa=0.05,epsilon=2,s=15)
n
## [1] 217
Si no conocemos la desviación típica tomamos una muestra piloto, por ejemplo, de tamaño 10:
muestraPiloto=rnorm(10,170,15)
muestraPiloto
## [1] 157.5070 172.1191 147.3543 157.5866 149.5685 219.2205 175.1748
## [8] 181.8437 171.9252 169.9389
sdp=sd(muestraPiloto)
sdp
## [1] 20.65013
n=tam.muestra(alfa=0.05,epsilon=2,s=sdp)
n
## [1] 410
Comprobamos que una muestra de este tamaño se comporta como deseamos (produce intervalos de confianza con un error menor al indicado)
simulaMuestreo=function(n){
muestra=rnorm(n,170,15) # Generación de una muestra aleatoria
media=mean(muestra) # Media de la muestra
se=sd(muestra)/sqrt(n) # Error típico de la media
inf=media-qt(0.975,n)*se # Extremo inferior del intervalo al 95%
sup=media+qt(0.975,n)*se # Extremo superior del intervalo al 95%
return(c(media=media,inf=inf,sup=sup))
}
simulaMuestreo(n)
## media inf sup
## 169.8459 168.3934 171.2985
simulaciones=t(replicate(10000,simulaMuestreo(n)))
contiene=apply(simulaciones,1,function(fila) if (170>=fila[2]&170<=fila[3]) return(1) else return(0))
sum(contiene)/10000
## [1] 0.9511
Calculamos la anchura media de los intervalos (nos da idea de si hemos conseguido la precisión buscada)
anchuras=apply(simulaciones,1,function(fila) fila[3]-fila[2])
mean(anchuras)
## [1] 2.911806
Debemos señalar aquí que la muestra piloto puede producir un valor de desviación típica menor o mayor que la verdadera desviación típica poblacional; de ahí que al utilizar la muestra piloto, el tamaño muestral puede llegar a ser muy diferente (mayor o menor) que el tamaño ideal calculado con la desviación típica de la población. Resulta razonable, una vez iniciado el muestreo, a medida que se disponga de más datos, estimar nuevamente la desviación típica poblacional y reajustar consecuentemente el tamaño de muestra requerido.
El tamaño de muestra si sabemos que la población es finita de tamaño 500 sería:
n=tam.muestra(alfa=0.05,epsilon=2,s=15,N=500)
n
## [1] 152
Si la población es finita de tamaño 10000, prácticamente no hay diferencia con una población infinita:
tam.muestra(alfa=0.05,epsilon=2,s=15,N=10000)
## [1] 212
Comprobamos:
poblacion=rnorm(500,170,15)
simulaMuestreo=function(n,poblacion){
N=length(poblacion) # tamaño de la población
muestra=sample(poblacion,n) # Generación de una muestra aleatoria
media=mean(muestra) # Media de la muestra
se=(sd(muestra)/sqrt(n))*sqrt(1-n/N) # Error típico de la media
inf=media-qt(0.975,n)*se # Extremo inferior del intervalo al 95%
sup=media+qt(0.975,n)*se # Extremo superior del intervalo al 95%
return(c(media=media,inf=inf,sup=sup))
}
simulaMuestreo(n,poblacion)
## media inf sup
## 170.2626 168.2255 172.2997
simulaciones=t(replicate(10000,simulaMuestreo(n,poblacion)))
mu=mean(poblacion); mu
## [1] 169.8959
contiene=apply(simulaciones,1,function(fila) if (mu>=fila[2]&mu<=fila[3]) return(1) else return(0))
sum(contiene)/10000
## [1] 0.9514
Anchura media de los intervalos:
anchuras=apply(simulaciones,1,function(fila) fila[3]-fila[2])
mean(anchuras)
## [1] 4.019841