La validación de números pseudoaleatorios es un aspecto fundamental en el ámbito de la simulación, la estadística y la computación, ya que muchas aplicaciones dependen de que dichos números sigan una distribución uniforme. Una de las herramientas más utilizadas para verificar esta propiedad es la prueba de bondad de ajuste chi-cuadrado ( 𝜒2χ2), la cual permite contrastar, a través de un enfoque estadístico, si la secuencia generada se ajusta a la distribución teórica esperada. En este caso, el interés radica en comprobar si los valores generados provienen de una distribución uniforme, es decir, que todos los intervalos tengan la misma probabilidad de ocurrencia. La prueba se basa en comparar las frecuencias observadas de los números dentro de ciertos rangos con las frecuencias teóricas esperadas bajo la hipótesis de uniformidad, para posteriormente calcular un estadístico que, al contrastarse con un valor crítico, permite aceptar o rechazar la hipótesis nula de uniformidad.
la prueba estadistica \[ \chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i} \]
Donde:Oi: Frecuencia observada en la clase Ei: Frecuencia esperada en la clase k: Número de intervalos o clases en los que se divide el rango de los números pseudoaleatorios.
En el contexto de la uniformidad, 𝐸𝑖=𝑛𝑘Ei =kn, siendo 𝑛n el total de números generados y 𝑘k el número de intervalos.
ejemplo
a <- 15807
c <- 1147
m <- 204783647
X_n <- 60 # 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.004636928 0.295924435 0.677546889 0.983684430 0.099785014 0.301715503
## [7] 0.216956831 0.436625982 0.746905474 0.334838524 0.792546687 0.785488428
## [13] 0.215589920 0.829865326 0.681215449 0.972604937 0.966237885 0.322256894
## [19] 0.914727190 0.092699609 0.302724563 0.167169266 0.444596521 0.737211976
## [25] 0.109705806 0.119677203 0.737546236 0.393355027 0.762917788 0.441481458
## [31] 0.497408184 0.531172623 0.245663190 0.198051332 0.597405881 0.194762676
## [37] 0.613618127 0.461745854 0.816722153 0.927072126 0.229101721 0.410912508
## [43] 0.294020626 0.584034183 0.828338798 0.551385121 0.744614798 0.126121863
## [49] 0.608288517 0.216598491
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 9 10
## [2,] 0.2 0.4 12 10
## [3,] 0.4 0.6 10 10
## [4,] 0.6 0.8 11 10
## [5,] 0.8 1.0 8 10
x2 <- (obser-Ei)^2/Ei
x2
## [1] 0.1 0.4 0.0 0.1 0.4
chicuad <- sum(x2)
chicuad # Estadistica chi cuadrada
## [1] 1
En este trabajo se implementó la prueba de bondad de ajuste chi-cuadrado para validar si una serie de números pseudoaleatorios generados mediante un generador lineal congruencial sigue una distribución uniforme. Para ello, se construyó una tabla de frecuencias dividiendo los datos en intervalos y se calcularon tanto las frecuencias observadas como las frecuencias esperadas bajo la hipótesis de uniformidad. Posteriormente, se aplicó la fórmula del estadístico chi-cuadrado 𝜒 2 χ 2 , obteniendo un valor que permite contrastar con el valor crítico de la distribución teórica para decidir si se acepta o rechaza la hipótesis nula.
Este procedimiento permitió evidenciar la relación entre los números pseudoaleatorios obtenidos y el comportamiento esperado de una distribución uniforme, brindando un método estadístico objetivo para validar su calidad.