Skip to content

Departamento de Matematica

Sections
Personal tools
Views
  • State: visible

Generar v.a. en R

Click here to get the file

Size 2.1 kB - File type text/plain

File contents

Proba (m), clase práctica del 25/04/2013
Instrucciones de R para generar variables aleatorias

#item a)
 runif(1) #genera una v.a. uniforme en el (0,1)
 uu<-runif(1)  #genera otra v.a. uniforme en el (0,1) y la guarda con el nombre uu
 xx<-(-1/4)*log(1-uu)  #xx deberia tener dist E(4)
#item b)
 uu<-runif(50)
 xx<-(-1/4)*log(1-uu) #observar que R actua vectorialmente
# histograma
 hist(xx)
 help(hist) #muestra el help del histograma
 
 aa<-hist(xx) #guarda el resultado del grafico en un "data frame"
 aa
 
 hist(xx,probability=T) #lo estandariza para que el area total sea 1
# superponemos la densidad exponencial con lambda = 4
 ejex<-seq(from = 0,to = 1.2, by = 0.01)
 lines(ejex,dexp(ejex,4), col = 4) 

#ahora con 500 observaciones
 uu<-runif(500)
 xx<-(-1/4)*log(1-uu)
 hist(xx,probability=T)
 ejex<-seq(from=0,to=2.5,by=0.01)
 lines(ejex,dexp(ejex,4),col=4)

# el R posee una instruccion que genera a las v.a. con distrib
# exponencial directamente: rexp
 x1<-rexp(500)
 hist(x1,probability=T)

#otras densidades, por ejemplo la N(0,1)
 uu<-runif(500)
 xx<-qnorm(uu)
hist(xx, probability=T)
ejex<-seq(from=-3.5,to=3.5,by=0.01)
lines(ejex,dnorm(ejex),col=2)

#item c)
 uu<-runif(1)
 uu > 0.5 #devuelve true si es verdadero, false si es falso
 xx1<-(uu > 0.5)*1 #devuelve 1 si uu > 0.5, 0 sino
 xx2<-(uu > 0.75)*1 + (uu >0.25 & uu<= 0.5)*1

#repetimos 100 veces
 uu<-runif(100)
 uu > 0.5 #devuelve true si es verdadero, false si es falso
 xx1<-(uu > 0.5)*1 #observar que R actua vectorialmente
 xx2<-(uu > 0.75)*1 + ((uu >0.25) & (uu<= 0.5))*1

 table(xx1,xx2) #hace una tabla de 2 por 2 con las cantidades observadas
# para obtener una tabla con las frecuencias relativas observadas
 table(xx1,xx2)/100

#item d)
 uu<-runif(1)
 xx1<-(uu > 0.75)*1 #devuelve 1 si uu > 0.5, 0 sino
 xx2<-(uu > 0.5)*1 

# repetimos 1000 veces
uu<-runif(1000)
 xx1<-(uu > 0.75)*1 #devuelve 1 si uu > 0.5, 0 sino
 xx2<-(uu > 0.5)*1 

# frecuencias observadas
 table(xx1,xx2)  #totales
 table(xx1)
 table(xx2)
 table(xx1)/1000 #frecuencias
 table(xx2)/1000
 table(xx1,xx2)/1000
Created by nmsirolli
Last modified 2013-04-25 01:46 PM
 
 

Powered by Plone