prueba chi cuadrada para validar la uniformidad de los numeros Pseudoaleatorios.

La prueba de chi cuadrada (χ²) es una herramienta estadística ampliamente utilizada para evaluar si un conjunto de datos categóricos u observaciones proviene de una distribución teórica específica. En el contexto de la generación de números pseudoaleatorios, esta prueba resulta especialmente útil para comprobar si los valores generados siguen una distribución uniforme, que es un requisito fundamental en numerosos algoritmos y simulaciones computacionales.

Los números pseudoaleatorios se generan mediante algoritmos determinísticos que buscan imitar el comportamiento de verdaderos números aleatorios. Sin embargo, dado que son el resultado de procesos computacionales, es necesario verificar que su distribución sea lo más uniforme posible, es decir, que cada valor dentro del rango tenga la misma probabilidad de ocurrir.

La prueba de chi cuadrada compara las frecuencias observadas de los números generados en intervalos o categorías específicas con las frecuencias esperadas bajo el supuesto de uniformidad. Si las diferencias entre ambas frecuencias no son estadísticamente significativas, se concluye que los números pseudoaleatorios provienen de una distribución uniforme. De lo contrario, se podría inferir que el generador tiene sesgos o patrones no deseados.

Este procedimiento es esencial para validar la calidad de generadores de números pseudoaleatorios utilizados en campos como la simulación, criptografía, estadística y modelado matemático, donde la aleatoriedad confiable es crítica para obtener resultados precisos y reproducibles.

\[ \chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i} \]

Ejemplo

a <- 26905
c <- 2648
m <- 52316486465
X_n <- 72 # semilla
random.number<-numeric(50) # vector numérico de longitud 50
 for (i in 1:50)
   {X_n<-(a*X_n+c)%%m
   random.number[i]<-X_n/m # números en el intervalo [0,1]
   }
 random.number
##  [1] 3.707833e-05 9.975925e-01 2.274284e-01 9.605249e-01 9.211426e-01
##  [6] 3.421893e-01 6.035851e-01 4.570170e-01 4.245356e-02 2.131609e-01
## [11] 9.309826e-02 8.086873e-01 7.318673e-01 8.897906e-01 8.152735e-01
## [16] 9.338390e-01 9.372146e-01 7.579220e-01 8.905530e-01 3.284661e-01
## [21] 3.817258e-01 3.339651e-01 3.298348e-01 2.056351e-01 6.116338e-01
## [26] 7.421843e-03 6.846727e-01 1.181633e-01 1.823204e-01 3.290708e-01
## [31] 6.489014e-01 6.933025e-01 3.025337e-01 6.703926e-01 9.118971e-01
## [36] 5.904256e-01 4.006997e-01 8.242876e-01 4.576951e-01 2.877475e-01
## [41] 8.452990e-01 7.700994e-01 5.232494e-01 2.524852e-02 3.113603e-01
## [46] 1.482453e-01 5.404790e-01 5.879733e-01 4.207015e-01 9.733677e-01
library(agricolae)
histo <- hist(random.number, breaks=6)

 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(random.number)/length(obser) # Valor esperado en una uniforme es E= n/#intervalos
 cbind(lim_inf,lim_sup,obser,Ei) 
##      lim_inf lim_sup obser Ei
## [1,]     0.0     0.2     8 10
## [2,]     0.2     0.4    12 10
## [3,]     0.4     0.6     8 10
## [4,]     0.6     0.8     9 10
## [5,]     0.8     1.0    13 10
x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 0.4 0.4 0.4 0.1 0.9
  chicuad <- sum(x2)
 chicuad
## [1] 2.2
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]"

se realizo un ejercicio de chi cuadrada con una base de 50 numeros aleatorios con el objetivo de verificar si estos numeros eran uniformes o no estadisticamente uniformes para esto se realizaron varios procedimientos incluido encontrar los limites inferior y superior ademas de encontrar la frecuencia y el absoluto de los numeros esperados dando como resultado una chi2 de 2,2 que fue inferior a la prueba cui cuadrada de 9,4 por lo que se nos da a entender que los numeros son estadisticamente uniformes