Foro de debate

Función y graficar función

Función y graficar función

de victor lopez -
Número de respuestas: 5

Tengo este codigo y me gustaria poder hacer diferentes simulaciones a la vez, he pensado en crear un bucle for, pero no he encontrado la manera de hacerlo.

Aver si me podeis hechar una manita alguna alma caritativa :)

Muchas gracias


dinero <- 10
q <- 0.52
tiempo <- 1
historialdinero <- c(dinero)
apuesta <- 1

while(historialdinero[tiempo] > 0 & tiempo < 10000)
    {
    tiempo <- tiempo + 1
    ruleta <- runif(1)
    if(ruleta > q)
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] + apuesta
        apuesta <- 1
        }
    else
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] - apuesta
        apuesta <- apuesta*2
        }
    }

historialdinero
plot.ts(historialdinero, lwd=3)
abline(h=mean(historialdinero),col="red", lty=3)
abline(h=max(historialdinero), col="blue")

En respuesta a victor lopez

Re: Función y graficar función

de Manuel Muñoz Márquez -

Buenas:

En primer lugar podemos convertir tu código en una función:

simulacion <- function(dinero, q, tiempo, historialdinero, apuesta)

{

while(historialdinero[tiempo] > 0 & tiempo < 10000)
    {
    tiempo <- tiempo + 1
    ruleta <- runif(1)
    if(ruleta > q)
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] + apuesta
        apuesta <- 1
        }
    else
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] - apuesta
        apuesta <- apuesta*2
        }
    }

historialdinero
plot.ts(historialdinero, lwd=3)
abline(h=mean(historialdinero),col="red", lty=3)
abline(h=max(historialdinero), col="blue")

}

El bucle podría ser

for(i in 1:100)

{

Inicializar los valores dinero, q, tiempo, historialdinero, apuesta

simulacion(dinero, q, tiempo, historialdinero, apuesta)

}


Ya sólo faltan un par de cosas:

  • El código tal como está iría haciendo una gráfica tras otra, sería interesantes guardarlas en ficheros ¿no? Mira la función png
  • No verías los valores de la variable historialdinero. ¿Añades cat o print para imprimirlos?


Saludos.



En respuesta a Manuel Muñoz Márquez

Re: Función y graficar función

de victor lopez -


No es del todo lo que necessitaria, pero muchissimas gracias Manuel.

Si puediera ser, lo que me gustaria seria que me fuera haciendo cada una de las simulaciones graficadas todas en el mismo grafico; para asi poder comparar las ganancias maximas o la duración de la partida, etc..

Me suena haverlo visto alguna vez, por lo que creo yo que se podria hacer.

Estoy atento por si tienes el interes de mirarlo. Te estaria plenamente agradecido.
Saludos
En respuesta a victor lopez

Re: Función y graficar función

de Manuel Muñoz Márquez -
Entonces te puede resultar útil la función lineplot del paquete RcmdrMisc.

Otra alternativa es pintar la primera gráfica con plot y luego añadir las restantes líneas con la función lines.

Saludos.
En respuesta a Manuel Muñoz Márquez

Re: Función y graficar función

de victor lopez -

Nada, me mirado las opciones que me has dicho y no encuentro la manera de como lo podria poner...

Me desespero ya..Pff..

En respuesta a victor lopez

Re: Función y graficar función

de Manuel Muñoz Márquez -

Buenas:

Básicamente se me ocurren dos opciones:

* Usando lineplot tendrías que almacenar los diferentes vectores historialtiempo y modificar bastante el código.

* Usando plot y luego lines:

** Haz una iteración del bucle inicial que acabe pintando el vector historialtiempo con la función plot

** A continuación ejecuta el bucle y dentro de cada iteración pinta el nuevo vector historialtiempo con la función lines.

Saludos.