Consideramos la v.a. \(X\) = cantidad de contaminación por mercurio (en p.p.m.) en los peces capturados en los ríos norteamericanos Lumber y Wacamaw (véase el fichero Datos-mercurio.txt).
a) Representa un estimador de la función de densidad de \(X\). Compara esta densidad estimada con la densidad normal de igual media y desviación típica (representada en la misma gráfica). En vista de las dos funciones ¿dirías que la función de densidad de \(X\) es aproximadamente normal?
b) Calcula un intervalo de confianza de nivel 0.95 para la media de \(X\). ¿Se puede considerar fiable este intervalo a pesar de la posible no-normalidad de \(X\)?
c) ¿Qué tamaño muestral habría que tomar para estimar la contaminación media con un margen de error máximo de 0.06?
d) Calcula ahora un intervalo de confianza de nivel 0.99 para la media de \(X\). Compáralo con el intervalo obtenido en (b).


Solución:

a) El código para generar el gráfico pedido y el propio gráfico se pueden ver debajo. Es evidente que la densidad de \(X\) no se debe suponer gaussiana.

X = read.table("http://verso.mat.uam.es/~amparo.baillo/MatEstI/Datos-mercurio.txt")
ContHg = X$V5
plot(density(ContHg,kernel="gaussian"))
t = seq(-0.5,4.1,0.01)
m = mean(ContHg)
desv = sd(ContHg)
lines(t,dnorm(t,mean=m,sd=desv),type="l",lwd=2,col="red")

b) Como \(X\) no es gaussiana, debemos usar el IC aproximado para \(\mu=\mathbb E X\) obtenido con el TCL \[ \left( \bar x \mp z_{\alpha/2} \frac{s}{\sqrt{n}} \right), \] que podemos calcular con R:

norm.interval = function(datos, varianza = var(datos), nivel.conf = 0.95) 
{
  z = qnorm((1 - nivel.conf)/2, lower.tail = FALSE)
  m = mean(datos)
  dt = sqrt(varianza/length(datos))
  c(m - z * dt, m + z * dt)
}

norm.interval(ContHg)
## [1] 1.077595 1.305914

c) Buscamos \(n\) tal que

\[ z_{0.025} \frac{s}{\sqrt{n}} \leq 0.06. \] Sustituimos \(s\) por la desviación típica de las 171 observaciones de \(X\): \[ 1.96 \frac{0.76}{\sqrt{n}} \leq 0.06 \] Despejamos \(n\geq 617\).

d) El intervalo al 99% de confianza es más amplio que al 95%:

norm.interval(ContHg,nivel.conf = 0.99)
## [1] 1.041723 1.341786