Problema tema 2: Distribución beta

Utilizando R dibuja la función de densidad y la función de distribución de una v.a. con distribución beta de parámetros \(a=3\), \(b=6\). A continuación dibuja, sobrepuestas en cada uno de los gráficos, las aproximaciones a \(F\) y \(f\) obtenidas respectivamente mediante la función de distribución empírica y un estimador kernel.

Verificar empíricamente el grado de aproximación alcanzado, en las estimaciones de \(F\) y \(f\), mediante un experimento de simulación basado en 200 muestras de tamaño 20. Es decir, considerando, por ejemplo, la estimación de \(F\), se trata de simular 200 muestras de tamaño 20; para cada una de ellas evaluar el error (medido en la norma del supremo) cometido al aproximar \(F\) por \({\mathbb F}_n\). Por último, calcular el promedio de los 200 errores obtenidos. Análogamente para la estimación de \(f\).

Solución:

Dibujamos la función de densidad y le superponemos el estimador kernel construido en base a una muestra X de tamaño n:

a = 3
b = 6
n = 20
t = seq(0,1,0.01)
densidad = dbeta(t, a, b)
X = rbeta(n,a, b, ncp = 0)
kernelest = density(X,kernel="gaussian")
M = max(max(densidad),max(kernelest$y))
par(mar=c(2,2,1,0.1)) # Ajusta el margen exterior de la figura
plot(t,densidad,type="l",lwd=2,col="tomato3",xlab="",ylab="",ylim=c(0,M),
     main="Densidad y estimador kernel",font.main=1,cex.main=1)
lines(kernelest,type="l",lwd=2,col="navyblue")
legend("topright",c("Densidad","Estimador kernel"),col=c("tomato3","navyblue"),lty=1,lwd=2)

Dibujamos la función de distribución \(F\) y le superponemos la función de distribución empírica:

fndistrib = pbeta(t, a, b)
distremp = ecdf(X)
par(mar=c(2,2,1,0.1)) # Ajusta el margen exterior de la figura
plot(t,fndistrib,type="l",lwd=2,col="tomato3",xlab="",ylab="",
     ylim=c(0,1),
     main="Funcion de distribucion poblacional y empirica",font.main=1,cex.main=1)
lines(distremp,do.points=FALSE,lwd=2,col="navyblue")
legend("bottomright",c("Poblacional","Empirica"),
       col=c("tomato3","navyblue"),lty=1,lwd=2)

Verificamos empíricamente el grado de aproximación:

nMC = 200
Supremo1 = rep(0,nMC) 
Supremo2 = rep(0,nMC)
for (i in 1:nMC){
  XMC = rbeta(n, a, b)
  kernelMC = density(XMC,kernel="gaussian")
  densidadMC = dbeta(kernelMC$x, a, b)
  Supremo1[i] = max(abs(kernelMC$y - densidadMC))
  distempMC = ecdf(XMC)
  Supremo2[i] = max(abs(distempMC(t) - fndistrib))
}
Error1 = mean(Supremo1)
Error2 = mean(Supremo2)
print(Error1)
## [1] 0.8759974
print(Error2)
## [1] 0.1802396