#Generando los numeros pseudoaleatorios

set.seed(0512)
num_aleat <- runif(100)
num_aleat
##   [1] 0.385332718 0.133866657 0.456759252 0.932434121 0.643748909 0.197363489
##   [7] 0.973756709 0.829113701 0.118439177 0.505530088 0.532981734 0.723430858
##  [13] 0.302695698 0.843459381 0.322670043 0.305807254 0.130629852 0.394678888
##  [19] 0.893074873 0.780034584 0.742492169 0.154434616 0.129983495 0.849528269
##  [25] 0.890580614 0.460494310 0.487205493 0.423304268 0.570265222 0.269905365
##  [31] 0.238021984 0.488049371 0.022954686 0.513035484 0.928756605 0.777193530
##  [37] 0.783905061 0.223706750 0.545169438 0.485929492 0.505642642 0.979189705
##  [43] 0.639153061 0.335591796 0.001020950 0.763030596 0.816451296 0.034284674
##  [49] 0.447532536 0.171085865 0.176433199 0.867881457 0.577724932 0.202218479
##  [55] 0.550509226 0.831111825 0.862091613 0.286495516 0.134238321 0.967019878
##  [61] 0.402532673 0.006408498 0.414328317 0.502090935 0.534975501 0.667675793
##  [67] 0.207572686 0.384380573 0.412985173 0.645122926 0.919451525 0.767256914
##  [73] 0.019725722 0.746408582 0.455137634 0.079863865 0.054610583 0.013102404
##  [79] 0.602009954 0.900110104 0.257227482 0.904304585 0.270824655 0.042208351
##  [85] 0.850926130 0.352689165 0.530165322 0.993750111 0.096455385 0.308626359
##  [91] 0.893973380 0.555861567 0.664248638 0.027366532 0.106416008 0.557750055
##  [97] 0.226187004 0.067220743 0.575172291 0.129356841

##1. Prueba de uniformidad chi cuadrada

histo <- hist(num_aleat, breaks=6)

library(agricolae)
Tabla <- table.freq(histo) 
 lim_inf <-Tabla$Lower #limite inferior del intervalo
 lim_sup <- Tabla$Upper # limite superior del intervalo
 
 obser <- Tabla$Frequency
 Ei <- length(num_aleat)/length(obser) # Valor esperado en una uniforme es E= n/#intervalos
 cbind(lim_inf,lim_sup,obser,Ei) # visualizacion de las frecuencias observadas y esperadas en los intervalos.
##      lim_inf lim_sup obser Ei
## [1,]     0.0     0.2    23 20
## [2,]     0.2     0.4    18 20
## [3,]     0.4     0.6    25 20
## [4,]     0.6     0.8    14 20
## [5,]     0.8     1.0    20 20
# calculando la estadística chi cuadrada
  x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 0.45 0.20 1.25 1.80 0.00
 chicuad <- sum(x2)
 chicuad # Estadistica chi cuadrada
## [1] 3.7
dchi <- qchisq(0.05,length(obser)-1,lower.tail=F)# valor de la distribución chi cuadrada con k-1 grado de libertad y nivel de signiicancia 0.05
 
 # Decisión estadística
 
 ifelse(chicuad < dchi,"Los $U_i$ provienen de una distribución uniforme [0,1]", "Los $U_i no siguen una uniforme [0,1] ")
## [1] "Los $U_i$ provienen de una distribución uniforme [0,1]"

1.2 Prueba de Kolmogorov-Smirnov (Prueba K-S).

test_ks <- ks.test(num_aleat,"punif",0,1)
test_ks
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  num_aleat
## D = 0.082275, p-value = 0.5076
## alternative hypothesis: two-sided
# Decision
 test_ks$p.value # P válido
## [1] 0.5076096
ifelse(test_ks$p.value < 0.05, " Los u_i no siguen una distribución uniforme","Los u_i siguen la distribución uniforme [0,1]") # 
## [1] "Los u_i siguen la distribución uniforme [0,1]"
  1. Prueba de Independencia

2.1. Prueba de Corrida: arriba y abajo

diff(num_aleat)
##  [1] -0.251466061  0.322892595  0.475674869 -0.288685212 -0.446385419
##  [6]  0.776393220 -0.144643008 -0.710674524  0.387090912  0.027451646
## [11]  0.190449123 -0.420735159  0.540763683 -0.520789339 -0.016862788
## [16] -0.175177402  0.264049036  0.498395985 -0.113040289 -0.037542415
## [21] -0.588057553 -0.024451121  0.719544774  0.041052345 -0.430086304
## [26]  0.026711183 -0.063901225  0.146960954 -0.300359857 -0.031883381
## [31]  0.250027387 -0.465094685  0.490080799  0.415721121 -0.151563075
## [36]  0.006711532 -0.560198312  0.321462689 -0.059239947  0.019713150
## [41]  0.473547063 -0.340036643 -0.303561266 -0.334570845  0.762009645
## [46]  0.053420700 -0.782166622  0.413247862 -0.276446670  0.005347333
## [51]  0.691448258 -0.290156525 -0.375506453  0.348290747  0.280602600
## [56]  0.030979788 -0.575596097 -0.152257195  0.832781557 -0.564487205
## [61] -0.396124175  0.407919819  0.087762618  0.032884566  0.132700292
## [66] -0.460103107  0.176807887  0.028604600  0.232137753  0.274328600
## [71] -0.152194612 -0.747531191  0.726682859 -0.291270948 -0.375273769
## [76] -0.025253281 -0.041508179  0.588907550  0.298100149 -0.642882622
## [81]  0.647077103 -0.633479930 -0.228616304  0.808717779 -0.498236965
## [86]  0.177476157  0.463584789 -0.897294726  0.212170974  0.585347021
## [91] -0.338111813  0.108387071 -0.636882106  0.079049476  0.451334046
## [96] -0.331563050 -0.158966261  0.507951548 -0.445815450
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
##  [1] 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1
## [39] 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0
## [77] 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0
# devuelve 1 si el número es mayor que el anterior y 0 en caso contrario.

# Detectar cambios
cambios <- abs(diff(S))

# Contar las corridas
corridas <- sum(cambios) + 1
corridas
## [1] 59
mu = (2*length(num_aleat)-1)/3 # media espearada de corrida 
mu
## [1] 66.33333
varianza <- (16*length(num_aleat)-29)/90
 
Z <- (corridas-mu)/sqrt(varianza) # valor de la estadística  z
Z
## [1] -1.755232
# Decisión estadística 

ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"

2.2 Prueba Poker

library(randtoolbox)
## Cargando paquete requerido: rngWELL
## This is randtoolbox. For an overview, type 'help("randtoolbox")'.
poker.test(num_aleat,nbcard=5)
## 
##           Poker test
## 
## chisq stat = 9.6, df = 4, p-value = 0.048
## 
##       (sample size : 100)
## 
##  observed number  0 3 3 12 2 
##  expected number  0.032 1.9 9.6 7.7 0.77

Análisis de Resultados

Prueba de Chi-cuadrada de uniformidad: La estadística calculada fue menor al valor crítico de la distribución 𝜒², indicando que no existen diferencias significativas entre las frecuencias observadas y las esperadas. Por tanto, no se rechaza la hipótesis de que los números provienen de una distribución uniforme en [0,1].

Prueba de Kolmogorov-Smirnov (K-S): El valor p obtenido (0.5076) fue mayor a 0.05, lo que respalda que la muestra se ajusta adecuadamente a la distribución uniforme [0,1].

Prueba de independencia (corridas): La estadística Z se ubicó dentro del rango de aceptación [−1.96, 1.96], lo que indica que los números pueden considerarse independientes entre sí, sin mostrar patrones de dependencia evidentes.

Prueba de póker: A diferencia de las anteriores, esta prueba arrojó un p-value cercano a 0.05 (0.048), lo que lleva a rechazar la hipótesis nula de aleatoriedad en este caso. Esto sugiere que existe cierta irregularidad en los patrones de los números generados.

Conclusión

En general, las pruebas de uniformidad (Chi-cuadrada y K-S) y la de independencia por corridas respaldan que los números pseudoaleatorios cumplen con las propiedades básicas de aleatoriedad.

Sin embargo, la prueba de póker detecta posibles desviaciones respecto al comportamiento esperado, lo que advierte que, aunque en su mayoría los números se comportan como uniformes e independientes, no son completamente perfectos para todos los contrastes de aleatoriedad.