Prueba CHI Cuadrada para validar la uniformidad de los numeros pesudoaleatorios.

Introducción

En el análisis estadístico de números pseudoaleatorios es indispensable comprobar que dichos valores se distribuyan de manera uniforme dentro del intervalo considerado. Esto se debe a que gran parte de los métodos de simulación y modelado probabilístico asumen que los números generados tienen la misma probabilidad de aparecer, sin presentar sesgos hacia determinadas regiones.

Para validar esta propiedad se emplea la prueba de bondad de ajuste Chi-cuadrado (χ²), la cual contrasta la distribución empírica de los números con la distribución teórica uniforme. El procedimiento consiste en dividir el rango en varios intervalos, calcular la frecuencia observada en cada uno y compararla con la frecuencia esperada bajo la hipótesis de uniformidad.

De esta forma, la prueba permite determinar estadísticamente si existen diferencias significativas entre lo observado y lo esperado. Si no se encuentran evidencias en contra de la hipótesis nula, se acepta que los números pseudoaleatorios se comportan como una distribución uniforme; de lo contrario, se concluye que el generador no es adecuado para aplicaciones que requieran aleatoriedad confiable.

En la validación de números pseudoaleatorios es esencial comprobar si los datos generados siguen una distribución uniforme en el intervalo

[0,1) [0,1). Esto garantiza que todos los valores tengan la misma probabilidad de ocurrencia, condición necesaria en simulaciones, modelos estadísticos y métodos de Monte Carlo.

Para ello se utiliza la prueba de bondad de ajuste Chi-cuadrado (χ²). El procedimiento se basa en dividir el rango en 𝑘k intervalos de igual tamaño, donde se registran las frecuencias observadas 𝑂𝑖Oi​ y se comparan con las frecuencias esperadas 𝐸𝑖Ei​, calculadas bajo la hipótesis de uniformidad:

Formula:

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

Formula de la frecuencia esperada en cada intervalo:

\[ E_i = \frac{n}{k}, \quad i = 1,2,\dots,k \]

Ejemplo

a <- 16500
c <- 2240
m <- 2147483546
X_n <- 40 # 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] 0.0003083795 0.0882635447 0.3484889397 0.0675063333 0.8545003967
##  [6] 0.2565468718 0.0233859869 0.8687843190 0.9412639644 0.8554137066
## [11] 0.3261603551 0.6458606943 0.7014568595 0.0381827540 0.0154423814
## [16] 0.7992943924 0.3574749587 0.3368202440 0.5340274295 0.4525880703
## [21] 0.7031603389 0.1455929889 0.2843173114 0.2356385710 0.0364223475
## [26] 0.9687350778 0.1287846775 0.9471804987 0.4782292064 0.7819069455
## [31] 0.4646020669 0.9341040837 0.7173821149 0.8048973354 0.8060352142
## [36] 0.5810354116 0.0842920256 0.8184231741 0.9823733485 0.1602518104
## [41] 0.1548722534 0.3921828466 0.0169691982 0.9917719323 0.2368840017
## [46] 0.5860293898 0.4849322212 0.3816512101 0.2449676874 0.9668431955
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) # visualizacion de las frecuencias observadas y esperadas en los intervalos.
##      lim_inf lim_sup obser Ei
## [1,]     0.0     0.2    13 10
## [2,]     0.2     0.4    11 10
## [3,]     0.4     0.6     7 10
## [4,]     0.6     0.8     6 10
## [5,]     0.8     1.0    13 10
 x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 0.9 0.1 0.9 1.6 0.9
 chicuad <- sum(x2)
 chicuad # Estadistica chi cuadrada
## [1] 4.4
 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]"

Hallazgos

Se hicieron los calculos debidos con la funcion chi2 para los calculos respectivos por medio de los numeros aleatorios lo cual nos da que provienen de una distribucion uniforme, dando a entender de lo que hicimos en el excel fue un exito el estudio.
La estadística calculada de la prueba Chi-cuadrado resultó menor al valor crítico, lo que indica que no se rechaza la hipótesis nula; por lo tanto, los números pseudoaleatorios generados se comportan de manera consistente con una distribución uniforme en el intervalo [0,1).