GUIÓN DE LA PRÁCTICA 3 (2a parte) 1. Generación de mixturas Las mixturas son funciones de distribución del tipo H = (1 − )F + G. Si ∈ (0, 1) es un número pequeño, H se puede interpretar como una “perturbación” o “contaminación” del modelo “central” F . Cuando G tiene una varianza mucho mayor que F (o una media muy alejada de la de F ), este modelo genera, con una probabilidad (1 − ), datos del modelo central F y con probabilidad proporciona observaciones que se pueden considerar “atı́picas” (outliers) procedentes de G. Por supuesto, cuando hay funciones de densidad f y g asociadas a F y G, la correspondiente mixtura tiene función de densidad h = (1 − )f + g. Código R para una mixtura de dos normales (o contaminación de un modelo normal): # GENERACION DE MIXTURAS mixtura = function(n,p,mu1,mu2,sigma1,sigma2) { U = runif(n) X = rnorm(n,mu1,sigma1) Ind = U>=p nI = sum(Ind) X[Ind] = rnorm(nI,mu2,sigma2) X } Ejercicios 1. Dibujar la función de densidad de la mixtura 0.9 N(0,1) + 0.1 N(15,3). mu1 = 0 ; mu2 = 15 ; sigma1 = 1 ; sigma2 = 3 ; p = 0.9 x = seq(mu1-3*sigma1,mu2+3*sigma2,0.1) M = p*dnorm(x,mu1,sigma1) + (1-p)*dnorm(x,mu2,sigma2) plot(x,M,type="l",lwd="3",col="red") 2. Generar una muestra de tamaño 1000 de una distribución 0,90 N (0, 1) + 0,10 N (15, 3). 3. Estimar la correspondiente función de densidad. Hacer lo mismo para diferentes valores de la media y la varianza de la distribución “contaminante” y de la proporción de contaminación . 4. Diseñar un pequeño estudio de simulación para analizar el comportamiento de la media muestral y la mediana muestral bajo un modelo de este tipo. En concreto, aproximar las distribuciones de ambos estimadores para muestras de tamaño 15, con el modelo indicado en el primer punto. Por ejemplo, nMC = 100 n = 15 ; p = 0.9 ; mu1 = 0 ; mu2 = 15 ; sigma1 = 1 ; sigma2 = 3 ; media = rep(0,nMC) ; mediana = rep(0,nMC) for (i in 1:nMC){ X = mixtura(n,p,mu1,mu2,sigma1,sigma2) media[i] = mean(X) mediana[i] = median(X) } layout(matrix(1:4,2,2)) ; layout.show(4) hist(media) plot(density(media,kernel="gaussian")) hist(mediana) plot(density(mediana,kernel="gaussian")) 2. Comparación de estimadores Diseñar un estudio de simulación, obteniendo muestras de diferentes tamaños (n = 10, 50, 100) de la distribución uniforme en [0, θ] para diferentes valores de θ (θ = 1, 2, 10), para comparar los errores cuadráticos medios (ECM) de los estimadores Tn = 2X̄ y Tn∗ = X(n) . Aunque en este caso es factible calcular exactamente ambos ECM, se trata de ver cómo podrı́amos actuar para comparar los estimadores si no los conociéramos (que es una situación muy frecuente en la práctica). Por ejemplo: n = 10 theta = 1 nMC = 100 ECM1 = rep(0,nMC) ; ECM2 = rep(0,nMC) for (i in 1:nMC){ X = runif(n,0,theta) T1 = 2*mean(X) T2 = max(X) ECM1[i] = (T1-theta)^2 ECM2[i] = (T2-theta)^2 } layout(matrix(1:4,2,2)) ; layout.show(4) boxplot(ECM1) boxplot(ECM2) hist(ECM1) hist(ECM2)