Skip to content

[R-es] Aleatoriedad

5 messages · Our Utopy, Freddy López, Fernando Arce +2 more

#
Hola de nuevo, ya empiezo a ser pesado ¿no? bueno, no importa porque
aprendemos todos. Eso, al menos, me parece.

Hoy estuve estudiando en R el tema de la aleatoriedad. Veo que hay
múltiples posibilidades pero me están chocando mucho. Encuentro que el
generador de números pseudo aleatorios  es más pseudo de lo que debería.

Me explico, quiero generar 0 y 1 aleatorios. Estoy trabajando con una
martingala.

Uso x <- runif(1,0,1) y después según cual sea la probabilidad de ganar
elijo el punto de división del intervalo apropiado.

Bien, los modelos que extraigo no me parecen coherentes. Me gustaban mucho
más los obtenidos con el aleatorio() de Microsoft Excel. O eso me parece

¿Por qué? pues porque la probabilidad de sacar 8 "ceros" u 8 "unos"
seguidas es 0.003 y a mi me está pareciendo que lo hace mucho más a menudo
de lo debido.

Y ora cosa, ¿sabéis si cuando apago el ordenador me aparecen al iniciarlo
de nuevo las mismas series aleatorias, en el mismo orden que en el trabajo
previo?  y de ser así ¿existe alguna función en R que las haga iniciar por
otro lugar de la serie interna predefinida?

¿Sabéis si hay test de aleatoriedad para series predefinidos en R? Es que
el buscador de funciones ?? me busca en los paquetes incluidos pero no
instalados pero ... ¿hay algo para buscar en el repositorio?

Gracias ya anticipadas. Un saludo
#
?Hola.
?Veamos esto. Creo que tomas 8 valores, o bien 0 o bien 1 y luego mides
cuántos {0, 0,
0, 0,
?
0, 0,
?
0, 0
}?

?y cuántos
{1, 1, 1
,
?1?
,
? 1
,
?1?
,
? 1
?,?

?1?
}
?
? ocurren. Se me ocurre medirlo así [seguro alguien podrá corregirme y
hacerlo más eficiente]:

T<-0
iteracion<-c()
while(T<10000)
? # algún valor que sea conveniente?mente alto
{
iteracion<-c(iteracion, sum(sample(x=c(0,1), size=8, replace=TRUE)))
T<-T+1
}

??
sum(iteracion==0)/length(iteracion) # veces que ocurren 8 ceros
sum(iteracion==
?8?
)/length(iteracion) # veces que ocurren 8 unos

?Por favor verifica si se distancia del valor que esperas.?
Ignoro qué sucede al reiniciar el ordenador, pero para fijar el mismo
generador puedes revisar la función: set.seed(). Con ella obtendrás siempre
los mismos resultados.
Quizás el paquete:
http://cran.r-project.org/web/packages/randtests/randtests.pdf te sea de
utilidad. No estoy seguro que haya un test de este tipo en el R base.

?Saludos.?
#
Hola, no entiendo exactamente lo que comentas, pero si lo que quieres es 
generar unos o ceros directamente vete a rbinom. Estableces la 
probablilidad de 1, si es al azar pues 0.5 y lo simulas
Por ejemplo seria algo así como rbinom(8,1,.5) para una tirada de 8 
simulaciones en la que la prob de sacar un 0 es igual a la de sacar un  
1. Si realizas sumas y las acumulas en un vector "x", despues para sacar 
con que probabilidad te salen 8 unos u 8 ceros seria con el comando mean 
: mean(x==8) para ver en que porcentaje de las tiradas te han salido 8 
unos, y mean(x==0) para sacar el porcentaje de tiradas con un resultado 
de 8 ceros.

Si quieres repetir un experimento de simulacion que te saque los mismos 
resultados (la misma serie de numeros aleatorios) tienes que utilizar 
set.seed() (dentro de set seed se pone un numero entero)
saludos
Fer
On 24/03/15 20:46, Our Utopy wrote:
#
Our

Puedes usar una generación diferente como ser:
http://stats.stackexchange.com/questions/49370/r-language-what-is-difference-between-rnorm-and-runif,
pero ...

Lo segundo, se me ocurre que guarda el workspace y luego al reiniciar la
computadora lo continúa. En lo personal no lo guardo al cerrar R. Cerrar R
es q(), por las dudas a que el sistema operativo utilice otro ciclo de vida.

El 24 de marzo de 2015, 17:29, fer <fernand_arce en yahoo.es> escribió:

  
  
#
Hola Miguel,

Quizas lo siguiente ayude un poco a entender que ocurre:

# para reproducir los resultados
set.seed(123)

# proporcion de 'todos cero'
all0 <- mean(rbinom(1000, 8, .5) == 0)
all0

# proporcion de 'todos uno'
all1 <- mean(rbinom(1000, 8, .5) == 0)
all1

# distribution de 'todos cero'
hist(replicate(1000, mean(rbinom(1000, 8, .5) == 0)), las = 1, main =
'Todos cero', xlab = 'Proporción')
abline(v = all0, col = 2, lwd = 2)

# distribution de 'todos uno'
hist(replicate(1000, mean(rbinom(1000, 8, .5) == 8)), las = 1, main =
'Todos uno', xlab = 'Proporción')
abline(v = all1, col = 2, lwd = 2)

Como veras, la proporcion de 'todos cero' o 'todos uno' varia de manera
considerable, pero en promedio (linea vertical roja) es cercano al valor
que mencionas.

Mas informacion en ?set.seed,  ?rbinom, ?hist t ?replicate.

Saludos cordiales,
Jorge.-



2015-03-25 6:46 GMT+11:00 Our Utopy <ourutopy en gmail.com>: