miércoles, 30 de marzo de 2016

6-Muestra aleatoria discreta (dos funciones)

La siguiente función sirve para generar el valor discreto que provenga de una variable aleatoria con distribución discreta. En este caso, primero hay que generar un número aleatorio u=runif(1).

#u= numero en [0,1].
#probas= vector de pesos que sumen 1.
###################################################
escoge=function(u,probas){
Res=0; i=0
  while(Res==0){
    i=i+1
    Res=i*(u<=cumsum(probas)[i])
    #if(u<=cumsum(probas)[i]){Res=i}
    #else{Res=0}
  }
Res}
###################################################
###EJEMPLO##
u=runif(1)
escoge(u,c(.3,.3,.4))

La siguiente función utiliza la función "escoge" para generar una muestra aleatoria de tamaño "n".

#n= elementos de la muestra deseada.
#probas= vector de pesos que sumen 1.
####################################################
GenDis=function(n,probas){
muestra=numeric(n); U=runif(n)
for(i in 1:n){muestra[i]=escoge(U[i],probas)}
muestra}
####################################################
###EJEMPLO 1##
GenDis(8,c(.3,.3,.4))
############

###EJEMPLO 2##
sop=0:10
v=dbinom(sop,10,.3)
plot(sop,v)
a=GenDis(1000,v)-1
b=rbinom(1000,10,.3)
hist(a,freq=F,add=T,col="yellow")
hist(b,freq=F,add=T,col="green")

No hay comentarios:

Publicar un comentario