Vous êtes sur la page 1sur 21

Examen de Estadstica Computacional

Problema 1.
Write R code to compare the performances of de Monte Carlo estimators of
2

x
2

e 2 dx
1

One choice of Monte Carlo estimator should sample from a uniform(1,2)


distribution, while another should sample from a standard normal distribution.
As additional choices, you can consider importance sampling (Investigate)
using an alternative to the normal kernel (remember that it should be heavy
tailed(example Cauchy(1,2))). Try two or three additional importance sampling
distributions (they could be within the same family of distributions).
Simulations sizes should be based on 100 runs and 10000 runs. You should
include both graphical and numerical comparisons.
Parte A. Estimacin usando la distribucin uniforme (1,2) y la N (0,1)
n
100
10000

U(1,2)

Normal(0
,1)

0.143960
2
0.135507
1

0.315208
8
0.281534
3

Cdigo en R para simulacin


Nsim<-10000
###para n=100 y Nsim<-10000
###para n=100 y
10000
10000
u<-runif(Nsim,1,2)
u<-rnorm(Nsim,0,1)
par(mar=c(2,2,2,1),mfrow=c(2,1))
par(mar=c(2,2,2,1),mfrow=c(2,1))
fx<-function(x){(exp(fx<-function(x){exp((x^2)/2))/sqrt(2*pi) }
(x^2)/2)/sqrt(2*pi)}
restima<-mean(fx(u))
restima<-mean(fx(u))

Parte B. Estimacin usando importance


distribuciones candidatas o envolventes.

sampling

Cdigo en R para simulacin


Nsim=10^4
y=rcauchy(Nsim,1,2)

Nsim=10^2
y=rweibull(Nsim,1,5)

con

tres

p<-exp((-y^2)/2)*2*pi*(1+((y1)/2)^2)/sqrt(2*pi)
estint<-cumsum(p)/(1:Nsim)
esterr=sqrt(cumsum((p-estint)^2))/(1:10^4)
plot(estint,xlab="Iterations",ty="l",lwd=2,mai
n="Candidata Cauchy(1,2)",
ylab="",lty=2)
r<-pnorm(2,lower.tail=T)pnorm(1,lower.tail=T)
abline(a=r,b=0,col="red")
mean(p)

p<-(exp((-y^2)/2)/sqrt(2*pi))*(((1/5)*exp(y/5))^(-1))
estint<-cumsum(p)/(1:Nsim)
esterr=sqrt(cumsum((p-estint)^2))/(1:Nsim)
plot(estint,xlab="Iterations",ty="l",lwd=2,mai
n="Candidata weibull(1,5)",
ylab="",lty=2)
r<-pnorm(2,lower.tail=T)pnorm(1,lower.tail=T)
abline(a=r,b=0,col="red")
mean(p)

Cdigo en R para simulacin


Nsim=10^4
y=rlnorm(Nsim,0,0.5)
p<-(exp((-y^2)/2)/sqrt(2*pi))*(((exp((log(y))^2)/(2*(0.5^2)))/(0.5*y*sqrt(2*pi)))^(1))
estint<-cumsum(p)/(1:Nsim)
esterr=sqrt(cumsum((p-estint)^2))/(1:Nsim)
plot(estint,xlab="Iterations",ty="l",lwd=2,main
="Candidata lognormal(0,0.5)",
ylab="",lty=2)
par(new=T)
r<-pnorm(2,lower.tail=T)-pnorm(1,lower.tail=T)
abline(a=r,b=0,col="red")
mean(p)

n
100
10000

n=100

Cauchy(1 Weibull(1 lognormal(0,


,2)
,5)
0.5)
0.532545
1.000143
0.1474135
2
0.986047 0.500251
0.1495728
3
6

n=10000

Como puede observarse en cuanto se elige una distribucin que envuelva lo

ms prximo a la funcin que se tiene inters en conocer el rea bajo la


curva que representa, el muestreo por importancia estima un valor ms
cercano al valor de la integral expresada y que deseamos conocer. La
distribucin lognormal(0,0.5) se acerca ms a dicho valor de 0.135905122,
est ltima es de 0.1495 para una tamao n=10000.

Problema 2. Write a program to generate random deviates from a normal


distribution using the rejection method. Using the logistic function

f ( x )=

With

e{ x}

( 1+e { x } )
c=

,< x< .

4
2 . The program should allow the user to specify the number of

deviates. The output list should contain the vector of normal deviates and the
proportion of acceptances.
Cdigo R
target<-function(x){exp(-x^2/2)/sqrt(2*pi)} ##es la funcin de inters
propousal<-function(x){(exp(x)/(1+exp(x))^2)*(4/sqrt(2*pi))}
n=100000
sample.x<-rlogis(n)
accept=c()
for(i in 1:length(sample.x)){
U=runif(1,0,1)
if((propousal(sample.x[i])*U)<=target(sample.x[i]))
{
accept[i]="Yes"
}
else if ((propousal(sample.x[i])*U)>target(sample.x[i]))
{
accept[i]="No"
}
}
T=data.frame(sample.x,accept=factor(accept,levels=c("Yes","No")))
hist(T[,1][T$accept=="Yes"],breaks=seq(-5,5,0.3),freq=FALSE,main="Histogram of X",xlab="X")
x<-seq(-5,5,0.01)
lines(x,dnorm(x,0,1))
library(ggplot2)
print(qplot(sample.x,data=T,geom="density",color=accept))
print(qplot(sample.x,data=T,geom="histogram",fill=accept,binwidth=0.01))
colnames(T)<-c('valor','dec')

T
r<-as.matrix(subset(T,dec=='Yes'))
proporcion<-sum(nrow(r))/n

Grficos

En cuanto a un histograma apilado de todos los valores incluidos en la muestra


juntos, realmente puede ver la cantidad de datos perdidos que hay en este
ejemplo. De hecho, hay 62448 aceptados y 37552 rechazados. Probablemente
podra haber elegido un mejor valor para la distribucin uniforme, pero lo ideal
del muestreo de rechazo es que utiliza una distribucin conocida que es slo un
poco diferente de la distribucin desconocida que estamos tratando de estimar.
La proporcin de datos aceptados es 0.62448.

Problema 3.
Kennedy abd Gentle(1980) studied the following algorithm to generate
Poisson deviates using the well-known relationship between exponential waiting times and Poisson counts:
1.- Set L = exp{-}, x=0,p=1
2.- Generate u from Unif(0,1) and set p=pu.
3.- If p L, set x = x+1 and repeat step 2.Otherwise, output x.
Explain why this algorithm generates Poisson deviates. Hint: If N Pois(), and
n

X1, are iid Exp(1/), show that

N=n X i 1
i=1

n+1

and

X i>1
i=1

Write a second program to generate Poisson deviates using Kennedy and


Gentles approach in the above problem. The program should allow the user to
specify the number of deviates and the Poisson mean. The output vector
should contain the Poisson deviates.

Cdigo en R

poiss<- function(n,lambda)
{
xv<- matrix(0,nrow=n,ncol=1)
l=exp(-lambda)
for (i in 1:n)
{
x=0
p=1
u<- runif(1,0,1)
p=p*u
while (p>=l)
{
x=x+1

u<- runif(1,0,1)
p=p*u
}
xv[i]=x
}
par(mfrow=c(1,2))
y<-rpois(n,lambda)
hist(xv)
hist(y)
return(xv)
}
poi<- poiss(10000,4)

El histograma xv es referido a nmeros aleatorios simulados usando el


algoritmo del Kennedy and Gentle(1980) , comparando con el de la derecha
que es de los nmeros aleatorios generados directamente de la funcin en R,
rpois, muestran similitud entre ambos procedimientos. Lo cual explica la
relacin existente entre la exponencial de los tiempos de espera y los conteos
poisson. Esto demuestra que en cuanto ms crezca el valor de n surge el hecho
de (n=N).

Problema 4.
Suppose we want to simulate from the bivariate normal density.

(( ) (

'
( X , Y ) N 0 , 1 0.9
0 0.9 1

))

Using the gibbs Sampler

X y N ( y ,(12 ) ) ,

Y x N ( x ,(1 2) ) .

a) Verify that the conditional probability of moving from X=x* to X=x (a


two-step process) is:

x , x

xy 2

2(12 )

y x2

2(12 )

e
P

Cdigo en R
gibbs<-function(n,rho)
{
xy<-matrix(nrow=n,nco=2)
x=0
y=0
c=sqrt(1-rho^2)
xy[1,]<-c(x,y)
for (i in 2:n){
x<-rnorm(1,rho*y,c)
y<-rnorm(1,rho*x,c)
xy[i,]<-c(x,y)
}
xy
}

xyn<-gibbs(10000,0.9)
par(mfrow=c(1,1))
plot(xyn,col=1:10000)
plot(xyn,type="l")
plot(ts(xyn[,1]))
plot(ts(xyn[,2]))
hist(xyn[,1],40,main="Distri
bucion condicional x")
hist(xyn[,2],40,,main="Distri
bucion condicional y")
par(mfrow=c(1,1))

La ecuacin de arriba nos indica el kernel de transicin a usar para la


cadena Xi . Donde Xi es condicionalemente simulada solo en xi-1 , {Xi} es una
cadena de Markov. La distribucin invariante de X i es la distribucin marginal

f X ( x ) = f ( x , y)dy

. Como deseamos simular de una normal bivariada con

matriz de varianza-covarianzas expresada arriba, y conocemos la condicionales


usando el Gibbs Sampler.
Una de las ventajas importantes del algoritmo de Gibbs Sampler es
que todas las simulaciones son aceptadas, y en cada transicin se obtiene un
punto diferente de la cadena. Esto se debe a que la probabilidad de aceptacin
basado en el algoritmo de Metropolis-Hastings es 1 en todo momento. Adems,
las simulaciones slo se realizan a travs de las densidades condicionales
totales. El hecho de que stas sean densidades unidimensionales representa
una ventaja computacional.
Como el algoritmo est basado en una cadena de Markov , la teora menciona
que dicha Cadena con kernel de transicin K satisface la condicin de balance
si existe un funcin f que cumple:

K(y,x)f(y)=K(x,y)f(x)
Luego si se supone una cadema de Markov con kernel de transicin K satisface
la condicin de balance detallado como una funcin de densidad de
probabilidad f. Entonces:
La densidad f es una densidad invariante de la cadena.
La cadena es reversible.

A continuacin se muestra los grficos de la convergencia de la cadena:

Convergencia de la cadena e histograma para la condicional de x

Convergencia de la cadena e histograma para la condicional de y

b) Show

that

this

conditional

X x N ( 2 x,(1 4 ) )

distribution

simplifies

so

that

Problema 5.
The Michaelis-Menten model is popular for growth-curve data, where Y is the
response, and X, the covariate, is some measure of age or fime:

Y i=

1 X i
,i=1, , n
2 + X i

a) Fit the Michaelis-Menten model to the following data representing the


length in mm(Y) and age in years(X) of largemouth bass:
Length<c(190,199,200,209,213,215,216,230,235,238,257,264,265,272,285,286,
289,295,295,301,301,305,234,310,326,329,340,343,380,38
1,382,384,
400,401,341,375,383,456,415,436,436,459,470,470,502,45
1,455,530)
Age<-c(rep(1,12),rep(2,10),rep(3,12),rep(4,4),rep(5,4),6,6,6,7,7,10)

Formula: Y ~ t1 * X/(t2 + X)
Parameters:
Estimate Std. Error t value Pr(>|t|)
t1 592.5090 25.8936 22.882 < 2e-16 ***
t2 1.9141
0.2147 8.914 1.38e-11 ***
--Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 34.27 on 46 degrees of freedom
Number of iterations to convergence: 9
Achieved convergence tolerance: 1.108e-06

b) Use bootstrap program to resample the residuals obtained from fitting


the Michaelis-Menten model to the data, then construct a 90% pointwise
confidence band for the nonlinear regression based on B=1000
bootstrap samples. The general approach that I used for the loess
bootstrap demonstration should work. The nls function can be used to
find a solution to the Michaelis-Menten model. Besides a formula, you
should only need to provide start values for 1 and 2; they can be
selected by studying Y as X goes to infinity (for 1) , and then studying
E(Y) at X=1 for (2). You can retrieve the residuals from your model
using the resid function; residuals are not a nls model attribute
otherwise.

Realizando el remuestreo de los residuales del modelo se obtiene una


banda de confianza al 90%: [-1.287831 16.62684], esto conjuntamente
con el histograma para la medias del remuestreo indican que si
deseamos probar la hiptesis de que los residuales ajustan a una
distribucin normal parece indicar que est no se rechaza debido a que
dentro de la banda de confianza incluye el cero y observando el
histograma la distribucin marcada dentro del mismo parece indicar que
la media es prxima en cero.

A continuacin se presenta el grfico para las bandas de confianza para cada


punto de los residuales del modelo usando bootstrap:

Cdigo en R
Y<-c(190,199,200,209,213,215,216,230,235,238,257,264,265,272,285,286,
289,295,295,301,301,305,234,310,326,329,340,343,380,381,382,384,
400,401,341,375,383,456,415,436,436,459,470,470,502,451,455,530)
X<-c(rep(1,12),rep(2,10),rep(3,12),rep(4,4),rep(5,4),6,6,6,7,7,10)
n=length(X)
modelo.nl<-nls(Y ~ t1*X/(t2+X),start=list(t1=5,t2=2) )
summary(modelo.nl)
###obtencin de los residuales del modelo
residuales<-resid(modelo.nl)
#bootstrap sampling de los residuales
cboot<-matrix(0,1,1000)
boot.mean<-function(residuales,nboot)
{
n<-length(residuales)
cboot<-numeric(nboot)
s<-matrix(0,nrow=1000,ncol=1)
for(i in 1:nboot)
{
id<-sample(1:n,size=n,replace=T)
cboot[i]<-mean(residuales[id])
s[i]<-var(residuales[id])
}
media.ord<-sort(cboot)
s.ord<-sort(s)
ICI<-media.ord[50]-qt(0.05,n-1,lower.tail=T,log.p=F)*sqrt(s[50])/sqrt(n)
ICS<-media.ord[950]+qt(0.95,n-1,lower.tail=T,log.p=F)*sqrt(s[950])/sqrt(n)
#int<-return(cbind(ICI,ICS,n))
dat<-return(cbind(media.ord,s.ord))
}
test<-boot.mean(residuales,1000)
m<-test[,1]
med<-mean(m)
var<-test[,2]
var<-var
hist(m,main="Medias usando el bootstrap")
#intervalo de confianza al 90%
# Calculo y graficacion de bandas de confianza para la media #
ICA<- sort(m+qt(0.05, n-1,lower.tail = T, log.p = F)*sqrt(var)/sqrt(n)
ICB<- sort(m-qt(0.05, n-1,lower.tail = T, log.p = F)*sqrt(var)/sqrt(n)
###GRAFICANDO
plot(ICA, type='l', lty=1, main='Banda de confianza al 90% para los residuales', ylab='Residual', col=3)
lines(ICB, type='l',lty=1, col=2)
#lines(sort(residuales), type='l',lty=2, col=4)
lines(m, type='l',lty=2, col=4)

Problema 6.
Suppose you have n data points X 1,,Xn that are assumed to come from a
Poisson() distribution. Carry out a Monte Carlo simulation study to find out
about the coverage of the nominal asymptotic 95% confidence interval (

^1.96

s
, ^ +1.96 s / n
), where
n

is the sample mean and s is the sample

standard deviation and n is the sample size. (A nominal 95% confidence


interval is one that is supposed to have 95% coverage. It may not necessarily
have 95% coverage in reality which is why you are doing this study!).
Investigate two escenaries:
a) =3, n=15.
b) =20 n=100.
In each case pick your Monte Carlo sample size M large enough so that your
Monte Carlo standard error for the coverage probabilities is small. You have to
do the following:
i)
ii)
iii)

Submit your R code on angel


Report your estimated coverage probability in each case and whether
you would use the 95% confidence interval for this scenario
In each case report the M you used an the Monte Carlo standard error
and confidence interval for your estimate of the coverage probability.
Poisson(n,3)
Error
Lmite
n
estandar
Inferior
15
0.4459882
1.112794
30
0.3157156
1.888003
50
0.2443006
1.984047
10
0
0.1737116
2.296074

n
15
30
50
10

Error
estndar
1.154147
0.8154018
0.6312396
0.4474374

Poisson(n,20)
Lmite
Inferior
15.35043
16.83783
17.64403
18.16005

Limite
superior
4.652221
4.156
3.96072
3.667015

Lmite
superior
24.3427
22.92145
22.45158
21.72111

Cdigo en R
poisson<-function(n,lambda)
{
#mu.0<-0
#s.0<-0
mu<-matrix(0,nrow=100000,ncol=1)
s<-matrix(0,nrow=100000,ncol=1)
for(i in 1:100000)
{
x<-rpois(n,lambda)
mu[i]<-mean(x)
s[i]<-sqrt(var(x))
}
mu.0<-sort(mu)
s.0<-sort(s)
ESM<-sqrt(var(mu))
ICI<-mu.0[2500]-1.96*s[2500]/sqrt(n)
ICS<-mu.0[97500]+1.96*s[97500]/sqrt(n)
return(cbind(ICI,ICS,n,ESM))
}
poisson(15,3)
poisson(30,3)
poisson(50,3)
poisson(100,3)
poisson(100,20)
Puede notarse que al incrementar el tamao de muestra el error estndar va
disminuyendo. Y lo que se espera que la cobertura vaya aumentando.

Los histogramas muestran que a medida que el tamao de muestra crece se


asemeja mas a la distribucin normal ya que por el teorema central del lmite,
para valores grandes de , una variable aleatoria Poisson X puede aproximarse
por otra normal dado que el cociente

Y=

Converge a una distribucin normal de media nula.


El histograma de la izquierda es para las medias de una Poisson(15,3) y a la
derecha para las medias de la Poisson(100,20).
Y adems se sigue cumpliendo que el valor para la media y la varianza es igual
a 2.999835 y 19.99941. Lo cual indica que la simulacin por mtodo Monte
Carlo, cumple con una cobertura para funcin de densidad muy alta.

Vous aimerez peut-être aussi