#Generando los numeros pseudoaleatorios

set.seed(2210)
num_aleat <- runif(100)
num_aleat
##   [1] 0.757329392 0.388637611 0.876463074 0.497115706 0.270417699 0.605573491
##   [7] 0.636188495 0.956824508 0.206033749 0.834592474 0.816646651 0.236798514
##  [13] 0.100753034 0.161890318 0.806367841 0.253760810 0.722565289 0.185468479
##  [19] 0.059901357 0.142892480 0.575050807 0.541633081 0.912031226 0.328615814
##  [25] 0.007260857 0.873773724 0.839410810 0.103341663 0.789584156 0.624814703
##  [31] 0.055379571 0.311903291 0.122893341 0.277023342 0.542721900 0.881575370
##  [37] 0.937885713 0.424989704 0.738168707 0.947875458 0.955193833 0.472524260
##  [43] 0.197855624 0.626450538 0.924921434 0.232114412 0.203186056 0.903115783
##  [49] 0.938148362 0.204677137 0.761828433 0.119111364 0.641421094 0.747472312
##  [55] 0.258506941 0.394395928 0.469668409 0.451080169 0.409912874 0.849692290
##  [61] 0.891444406 0.316596740 0.847874226 0.542886896 0.702140230 0.895819924
##  [67] 0.569864764 0.451003427 0.309382242 0.426918697 0.428766621 0.481524436
##  [73] 0.405430333 0.850096841 0.812257309 0.848680517 0.887817846 0.961301845
##  [79] 0.179147103 0.383378987 0.483864408 0.049130164 0.837065788 0.182271207
##  [85] 0.614408385 0.954837988 0.332515480 0.484955883 0.951296049 0.259561258
##  [91] 0.204437331 0.939561736 0.689259014 0.600788612 0.213801684 0.887332784
##  [97] 0.806218559 0.572756008 0.036350937 0.840630526

##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    15 20
## [2,]     0.2     0.4    20 20
## [3,]     0.4     0.6    19 20
## [4,]     0.6     0.8    15 20
## [5,]     0.8     1.0    31 20
# calculando la estadística chi cuadrada
  x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 1.25 0.00 0.05 1.25 6.05
 chicuad <- sum(x2)
 chicuad # Estadistica chi cuadrada
## [1] 8.6
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.11622, p-value = 0.1342
## alternative hypothesis: two-sided
# Decision
 test_ks$p.value # P válido
## [1] 0.134189
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.368691781  0.487825463 -0.379347369 -0.226698007  0.335155792
##  [6]  0.030615004  0.320636013 -0.750790760  0.628558726 -0.017945823
## [11] -0.579848137 -0.136045481  0.061137284  0.644477523 -0.552607031
## [16]  0.468804479 -0.537096810 -0.125567122  0.082991123  0.432158327
## [21] -0.033417726  0.370398145 -0.583415412 -0.321354957  0.866512867
## [26] -0.034362914 -0.736069147  0.686242492 -0.164769452 -0.569435132
## [31]  0.256523720 -0.189009950  0.154130001  0.265698558  0.338853470
## [36]  0.056310343 -0.512896009  0.313179003  0.209706752  0.007318375
## [41] -0.482669573 -0.274668637  0.428594914  0.298470896 -0.692807022
## [46] -0.028928356  0.699929727  0.035032579 -0.733471224  0.557151296
## [51] -0.642717069  0.522309729  0.106051219 -0.488965371  0.135888987
## [56]  0.075272481 -0.018588240 -0.041167294  0.439779416  0.041752115
## [61] -0.574847666  0.531277486 -0.304987330  0.159253334  0.193679694
## [66] -0.325955160 -0.118861337 -0.141621185  0.117536456  0.001847924
## [71]  0.052757815 -0.076094103  0.444666508 -0.037839531  0.036423207
## [76]  0.039137330  0.073483999 -0.782154742  0.204231884  0.100485421
## [81] -0.434734243  0.787935623 -0.654794581  0.432137178  0.340429603
## [86] -0.622322509  0.152440403  0.466340167 -0.691734792 -0.055123927
## [91]  0.735124405 -0.250302722 -0.088470402 -0.386986927  0.673531100
## [96] -0.081114226 -0.233462551 -0.536405071  0.804279590
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
##  [1] 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1
## [39] 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1
## [77] 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1
# 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] 60
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.515882
# 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 = 0.68, df = 4, p-value = 0.95
## 
##       (sample size : 100)
## 
##  observed number  0 2 11 6 1 
##  expected number  0.032 1.9 9.6 7.7 0.77

Análisis de resultados

  1. Distribución de frecuencias (Chi-cuadrada)

Intervalo [0.8,1.0] tuvo 31 observaciones, mucho más de las 20 esperadas.

En cambio, los intervalos [0.0,0.2] y [0.6,0.8] quedaron con solo 15 observaciones, por debajo de lo esperado.

Aunque el estadístico Chi-cuadrada (8.6) no superó el valor crítico, la concentración excesiva en el rango alto sugiere que la muestra no es perfectamente uniforme: hay una tendencia hacia valores grandes.

  1. Kolmogorov-Smirnov

El test dio un p = 0.134 > 0.05, lo cual impide rechazar la hipótesis de uniformidad.

Sin embargo, el estadístico D = 0.116 indica cierta desviación local (máxima diferencia entre distribución observada y teórica). Esto se explica por la sobrecarga de datos en [0.8,1].

  1. Prueba de corridas

Se obtuvieron 60 corridas, mientras que la media esperada es 66.3.

Aunque el valor Z (−1.51) se mantiene en el rango aceptable, el número de corridas más bajo sugiere que la secuencia tiende a formar pequeños “bloques” de números crecientes o decrecientes, lo que limita un poco la independencia.

  1. Prueba de póker

Con un p = 0.95, esta prueba no detecta irregularidades graves en los patrones.

Pero nuevamente, al cruzarlo con la chi-cuadrada, se observa que el ajuste se logra más por compensación entre categorías que por uniformidad perfecta.

Conclusión

Aunque las pruebas formales (K-S y póker) no permiten rechazar la hipótesis de uniformidad, el análisis detallado de frecuencias y corridas muestra que la muestra no es completamente balanceada: existe una acumulación significativa de valores en el rango alto [0.8,1.0] y una menor cantidad en los intervalos bajos y medios.

Esto indica que los números pseudoaleatorios generados cumplen en general con las propiedades de aleatoriedad, pero no son óptimos para experimentos que requieran una distribución estrictamente homogénea en todo el rango [0,1]. En tales casos, podría ser recomendable usar otro generador o aumentar el tamaño de la muestra para reducir los sesgos locales.