Cuando se extraen muestras de pequeño tamaño de una población normal para estimar la varianza poblacional, la cuasivarianza muestral estima sin sesgo ese parámetro y la varianza muestral lo subestima. Ejecútese varias veces el script para observar esta propiedad.
#INICIO -------------------------
rm(list=ls(all=TRUE))
#Si existe un gráfico previo lo eliminamos
dev.off()
#Introducir n (nº de muestras extraídas) y m (tamaño muestral)
#Para observar bien el efecto m debe ser grande (por ejemplo, alrededor de 1000) y n pequeño (alrededor de 10)
n<-1000; m<-10
#Extraemos n muestras de tamaño m de una población normal de media 10 y varianza 9
x<-replicate(n,rnorm(m,10,sqrt(9)))
#Calculamos las cuasivarianzas muestrales (función 'var')
z1<-apply(x,2,var)
#Calculamos las varianzas muestrales (función 'varmues' que construimos)
varmues<-function(x) var(x)*(m-1)/m
z2<-apply(x,2,varmues)
#Preparamos un gráfico dividido en dos subgráficos, superior e inferior
split.screen(c(2,1))
#Establecemos el color del fondo del gráfico
par(bg='antiquewhite')
split.screen(c(2,1))
#Establecemos el color del fondo del gráfico
par(bg='antiquewhite')
screen(1)
xlim<-c(0,15);ylim<-c(-1,1)
plot(NA,xlim=xlim,ylim=ylim,axes=F,ann=F)
#Dibujamos los diferentes elementos del subgráfico superior
abline(h=0,lwd=4)
segments(0,-0.1,0,0.1,lwd=3);arrows(14,0,15.6,0,lwd=4)
arrows(9,0.5,9,0,lwd=2)
text(9,0.6,'Varianza poblacional = 9',pos=3)
text(4,1.025,'- La cuasivarianza muestral estima sin sesgo la varianza poblacional',font=2)
arrows(mean(z1),-0.5,mean(z1),0,col='blue',lwd=3)
text(mean(z1),-0.8,paste('Media de las cuasivarianzas muestrales =',round(mean(z1),2)),pos=3)
screen(2)
xlim<-c(0,15);ylim<-c(-1,1)
plot(NA,xlim=xlim,ylim=ylim,axes=F,ann=F)
#Dibujamos los diferentes elementos del subgráfico inferior
abline(h=0,lwd=4)
segments(0,-0.1,0,0.1,lwd=3);arrows(14,0,15.6,0,lwd=4)
arrows(9,0.5,9,0,lwd=2)
text(9,0.6,'Varianza poblacional = 9',pos=3)
#La varianza muestral subestima la varianza poblacional
text(4,1.025,'- La varianza muestral estima con sesgo la varianza poblacional',font=2)
arrows(mean(z2),-0.5,mean(z2),0,col='red',lwd=3);
text(mean(z2),-0.8,paste('Media de las varianzas muestrales =',round(mean(z2),2)),pos=3)
#FIN --------------------
#FIN --------------------
No hay comentarios:
Publicar un comentario