Datanalytics
Inicio > probabilidad, r > Cosa prodigiosa, sin palabras (I)

Cosa prodigiosa, sin palabras (I)

Jueves, 12 de enero de 2012 Dejar un comentario Ir a comentarios

Hoy voy a hacer mención a una cosa prodigiosa. Pero sin palabras. Voy a regalar a mis lectores tres pedazos de código que son este

jugar <- function( n, make.step ){
  tmp <- rep( 0L, n)
  for( i in 2:n )
    tmp[i] <- make.step( tmp[i-1] )
  tmp
}
 
juego.s <- function( x, prob.perder = 0.51 ){
  x + ifelse( runif(1) < prob.perder, -1L, 1L )
}
 
res.juego.s <- replicate( 1000, jugar( 1000, juego.s )[1000] )
hist( res.juego.s )
fivenum( res.juego.s )

este

juego.c <- function( x ){
  prob.perder <- ifelse( x %% 3 == 0, 0.905, 0.255 )
  juego.s( x, prob.perder )
}
 
res.juego.c <- replicate( 1000, jugar( 1000, juego.c )[1000] )
 
hist( res.juego.c )
fivenum( res.juego.c )

y este otro

juego.fin <- function( x ){
  sample( c( juego.c, juego.s), 1 )[[1]](x)
}
 
res.juego.fin <- replicate( 1000, jugar( 1000, juego.fin )[1000] )
 
hist( res.juego.fin )
fivenum( res.juego.fin )

Es una cosa tan maravillosa que no les voy a robar la oportunidad de averiguar por sí mismos en qué consiste. La semana que viene, en la segunda entrega, comentaré el código anterior y explicaré a qué se refiere y, si nadie lo ha dado a conocer antes, dónde reside lo miraculoso del asunto.

Y en la tercera, la última, ofreceré referencias y plantearé un problema que no sé si alguien podrá resolver (y si lo resuelve en la dirección que sospecho, habrá encontrado un sorprendente bug donde menos cabría esperarlo).

Be Sociable, Share!
Categories: probabilidad, r Tags: ,
  1. Jose Luis
    Jueves, 12 de enero de 2012 a las 12:19 | #1

    Hola.

    Una pregunta un poco tonta. ¿ Por qué el uso de la L en 1L ,por ejemplo?

  2. Jueves, 12 de enero de 2012 a las 13:43 | #2

    Hola.

    Tengo la misma pregunta que Luis. No entendio el uso de ‘L’.
    -
    Si no me equivoco, jugar(x,make.step) describe un camino como: x<-x+make.step
    Con juego.s, es el usual camino aleatorio: x<-x+1 con probabilitad 1/2 y x<-x-1 con probabilidad 1/2
    Con juego.c, el paso depiende de x:
    si x=3k, x<-x+1
    si x=3k+1, x<-x-1 con probabilidad 0.905, si no, x<-x+1
    si x=3k+2, x<-x-1 con probabilidad 0.255, si no, x<-x+1
    Con juego.fin, el paso viende de juego.c o juego.s con probabilidad 1/2

    Los resultados son el final position despues 1000 pasos.
    Pero no se que es tan maravillosa. Las tres distribuciones son muy differentes:
    p<-ggplot(
    data.frame(
    endPoint=c(res.juego.c,res.juego.s,res.juego.fin),
    juego=rep(c("juego.c","juego.s","juego.fin"),1,each=1000)))
    p<-p+geom_density(aes(x=endPoint,fill=juego),alpha=0.3)
    print(p)

    ¡Tengo muchas ganas de conocerlo!

  3. Jueves, 12 de enero de 2012 a las 16:58 | #3

    @ChrisL @Jose Luis Voy a hacer una entrada sobre lo de la L. Pero pensaba que era conocido. Mirad, sin ir más lejos, el código de la función “sample” y, dentro de él, el primer “if”.

  1. Jueves, 19 de enero de 2012 a las 08:35 | #1
  2. Martes, 31 de enero de 2012 a las 08:50 | #2