Sie sind auf Seite 1von 5

SEGUNDA PRACTICA DE MODELOS LINEALES GENERALIZADOS

Inciso A
Generación de 10000 muestras de tamaño n= 100
M=10000
> n=100
> set.seed(300)
> xi=rlnorm(n,meanlog = 2,sdlog = 0.5)
> hist(xi,prob=T)
> curve(dlnorm(x,2,0.5),add=T)

Con el grafico podemos darnos cuenta que los valores que estamos estimando se
ajustan a la distribución que deseamos que en este caso es la LogNormal con
parámetros ( 2, 0,25).
Para calcular ahora Yi debemos primero calcular la ui ya que Yi se distribuye como
una gamma con parámetros (u,5)
> ui=1+2*xi
> set.seed(300)
> yi=rgamma(5,5/ui)
Y=matrix(0,100,M)
> for(i in 1:100){
+ for(j in 1:M){
+ Y[i,j]=rgamma(1,5,5/ui[i])
+ }
+}
Calculo de los estimadores de los coeficientes por MCO
> betas=matrix(0,M,2)
> for(l in 1:M){
+ betas[l,c(1,2)]=c(lm(Y[,l]~xi)$coefficients[1],lm(Y[,l]~xi)$coefficients[2])
+}

Inciso B
Sesgo
> mean(betas[,2])
[1] 2.000788
> #sesgo
> sesgo= mean(betas[,2]-2)
> sesgo
[1] 0.0007876247

Tenemos que el estimador calculado por Mínimos Cuadrados Ordinarios resulta ser
sesgado, aunque este sea pequeño se debería verificar con una muestra más
grande para poder darnos cuenta si es que podría ser correcto usar este estimador.
Varianza
> varianza=var(betas[,2])
> varianza
[1] 0.1360201

La varianza entre los mil estimadores de la pendiente que se ha calculado no resulta


ser muy grande, sin embargo, podría ser un problema en el momento de las
estimaciones.

Inciso C
Intervalos de Confianza
Se creara los intervalos con la función confint que nos debería brindar un intervalo
del 95% de confianza
intervalos.b1<-matrix(0,M,2)
> colnames(intervalos.b1)<-c("LI","LS")
> for(l in 1:M){
+ intervalos.b1[l,1]<-confint(lm(Y[,l]~xi))[2,1]
+ intervalos.b1[l,2]<-confint(lm(Y[,l]~xi))[2,2]
+}
> cobertura<-mean((2>intervalos.b1[,1])&(2<intervalos.b1[,2]))
> cobertura
[1] 0.7265

De los intervalos calculados solo el 72,65% de veces los intervalos contienen al


verdadero parámetro, por lo que diremos que no es una buena estimación el aplicar
una normal para calcular los estimadores de las betas, ya que estos no resultan ser
eficientes pues presentan sesgo y cuando se quiere calcular los estimadores estos
no llegan a contener al verdadero parámetro.

Inciso C
Para un n=500
> M=10000
> n=500
> set.seed(300)
> xi=rlnorm(n,meanlog = 2,sdlog = 0.5)
> hist(xi,prob=T)
> curve(dlnorm(x,2,0.5),add=T)
> ui=1+2*xi
> set.seed(300)
> yi=rgamma(5,5/ui)
> Y=matrix(0,500,M)
> set.seed(300)
> for(i in 1:500){
+ for(j in 1:M){
+ Y[i,j]=rgamma(1,5,5/ui[i])
+ }
+}
> betas=matrix(0,M,2)
> for(l in 1:M){
+ betas[l,c(1,2)]=c(lm(Y[,l]~xi)$coefficients[1],lm(Y[,l]~xi)$coefficients[2])
+}
> mean(betas[,2])
[1] 1.999298
> #sesgo
> sesgo= mean(betas[,2]-2)
> sesgo
[1] -0.0007022458
> #intervalo de confianza por MCO
> intervalos.b1<-matrix(0,M,2)
> colnames(intervalos.b1)<-c("LI","LS")
> for(l in 1:M){
+ intervalos.b1[l,1]<-confint(lm(Y[,l]~xi))[2,1]
+ intervalos.b1[l,2]<-confint(lm(Y[,l]~xi))[2,2]
+}
> beta2=2
> cobertura2<-mean((beta2>intervalos.b1[,1])&(beta2<intervalos.b1[,2]))
> cobertura
[1] 0.6456

El estimador para cuando utilizamos un tamaño de muestra de 500 aún sigue siendo
sesgado, aunque aún se mantiene un sesgo pequeño, en cuanto la cobertura de los
intervalos podemos apreciar que con más muestra vamos a tener más claro que
existe un gran problema al usar la distribución normal ya que no logramos que
aumente la cobertura ni siquiera aumenta el tamaño de muestra, esta cobertura solo
llega a tener un 64,56% lo cual significa un problema y se tiene que pensar en
cambiar la distribución de la cual se estimara los coeficientes.
Probemos para una muestra de tamaño 1000
> M=10000
> n=1000
> set.seed(300)
> xi=rlnorm(n,meanlog = 2,sdlog = 0.5)
> hist(xi,prob=T)
> curve(dlnorm(x,2,0.5),add=T)
> ui=1+2*xi
> set.seed(300)
> yi=rgamma(5,5/ui)
> Y=matrix(0,1000,M)
> set.seed(300)
> for(i in 1:1000){
+ for(j in 1:M){
+ Y[i,j]=rgamma(1,5,5/ui[i])
+ }
+}
> betas=matrix(0,M,2)
> for(l in 1:M){
+ betas[l,c(1,2)]=c(lm(Y[,l]~xi)$coefficients[1],lm(Y[,l]~xi)$coefficients[2])
+}

> mean(betas[,2])
[1] 2.000141
> #sesgo
> sesgo= mean(betas[,2]-2)
> sesgo
[1] 0.0001406244
> #intervalo de confianza por MCO
> intervalos.b1<-matrix(0,M,2)
> colnames(intervalos.b1)<-c("LI","LS")
> for(l in 1:M){
+ intervalos.b1[l,1]<-confint(lm(Y[,l]~xi))[2,1]
+ intervalos.b1[l,2]<-confint(lm(Y[,l]~xi))[2,2]
+}
> beta2=2
> cobertura3<-mean((beta2>intervalos.b1[,1])&(beta2<intervalos.b1[,2]))
> cobertura
[1] 0.6456

Aunque el sesgo del estimador disminuye un poco esto no significa que la situación
mejore en cuanto a la cobertura de los intervalos, pues tendremos, aunque este
problema no se soluciona, esto nos lleva a concluir que utilizar la l estimación por
mínimos cuadrados asumiendo normalidad no es la manera correcta de estimar los
parámetros puesto que estos no son útiles para la estimación y sobre todo esto es
más notorio en la estimación intervalica.

Das könnte Ihnen auch gefallen