# Alejandro Pozo Pazos # Boletín 1 - Ejercicio 4 # Estimación covarianza entre U y Exp(U) con U=U(0,1). #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Con una única réplica. #-#-#-#-#-#-#-#-#-#-#-#-# n<-1000000 U<-runif(n,0,1) E_U<-sum(U)/n E_ExpU<-sum(exp(U))/n Cov<-sum((U-E_U)*(exp(U)-E_ExpU))/n err<-abs(Cov-(3-exp(1))/2) show(list("covarianza"=Cov,"error"=err)) # Gráfica con el ajuste de (U-E_U)*(exp(U)-E_ExpU) a la # función (x-1/2)*(exp(x)-exp(1)+1). #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# n<-500 U<-runif(n,0,1) E_U<-sum(U)/n E_ExpU<-sum(exp(U))/n Cov<-sum((U-E_U)*(exp(U)-E_ExpU))/n plot(0,0,xlim=c(0,1),ylim=c(0,1),pch=20,col="white", xlab="U",ylab="(U-E_U)*(exp(U)-E_ExpU)") points(U,(U-E_U)*(exp(U)-E_ExpU),col="red",pch=20,cex=1.5) curve((x-1/2)*(exp(x)-exp(1)+1),0,1,add=TRUE,lwd=2) # Con varias réplicas. #-#-#-#-#-#-#-#-#-#-#-# n<-10000 m<-1000 Cov<-numeric(m) for (i in 1:m) { U<-runif(n,0,1) E_U<-sum(U)/n E_ExpU<-sum(exp(U))/n Cov[i]<-sum((U-E_U)*(exp(U)-E_ExpU))/n } err<-abs(mean(Cov)-(3-exp(1))/2) show(list("covarianza"=mean(Cov),"error"=err)) summary(Cov) # Gráfica con el ajuste de las distintas estimaciones de # de la covarianza a la covarianza exacta. #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# n<-10000 m<-100 Cov<-numeric(m) for (i in 1:m) { U<-runif(n,0,1) E_U<-sum(U)/n E_ExpU<-sum(exp(U))/n Cov[i]<-sum((U-E_U)*(exp(U)-E_ExpU))/n } plot(0,0,xlim=c(0,m),ylim=c(0,0.2),pch=20,col="white") points(c(1:m),Cov,col="red",pch=20,cex=1.5) curve((3-exp(1))/2+x*0,0,m,add=TRUE,lwd=2) # Con una única réplica, usando un generador lineal. #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# GenLin<-function(n,a,c,m,sem){ z<-numeric(n) z[1]<-sem%%m for (i in 2:n) { z[i]<-(a*z[i-1]+c)%%m } newsem<-z[n] u<-z/m return(u) } n<-100000 U<-GenLin(n,a=16807,c=0,m=2^31-1,1) E_U<-sum(U)/n E_ExpU<-sum(exp(U))/n Cov<-sum((U-E_U)*(exp(U)-E_ExpU))/n err<-abs(Cov-(3-exp(1))/2) show(list("covarianza"=Cov,"error"=err))