#Generando los numeros pseudoaleatorios
set.seed(1024)
num_aleat <- runif(100)
num_aleat
## [1] 0.218089162 0.987634242 0.348461888 0.381046992 0.020985963 0.749726872
## [7] 0.162958040 0.319041290 0.597890265 0.587997315 0.017695128 0.958794595
## [13] 0.351446537 0.454754228 0.981003017 0.180855066 0.847822347 0.855251296
## [19] 0.681898489 0.491963019 0.030104282 0.386669877 0.107637750 0.486919958
## [25] 0.877060791 0.767687160 0.501464635 0.296844329 0.461977877 0.579539660
## [31] 0.963717041 0.647879323 0.093061020 0.800327712 0.391240846 0.720460022
## [37] 0.228445338 0.927102863 0.142298374 0.389388268 0.363347421 0.869589679
## [43] 0.789751602 0.906513413 0.945786288 0.078741808 0.926134936 0.173952812
## [49] 0.448954895 0.988740478 0.294968800 0.694531497 0.652317950 0.373536831
## [55] 0.810358191 0.377337193 0.204761851 0.803071714 0.768183101 0.096977385
## [61] 0.253052591 0.333268477 0.640907501 0.055483490 0.844214465 0.678708360
## [67] 0.406748594 0.600562320 0.912066377 0.424787953 0.394106073 0.466125859
## [73] 0.846106687 0.300165989 0.389851344 0.866766201 0.268239458 0.793729924
## [79] 0.308793515 0.112686666 0.438916534 0.170949163 0.888932320 0.302179605
## [85] 0.251565809 0.338700320 0.113204624 0.781412892 0.847105187 0.693043585
## [91] 0.727063325 0.354361066 0.284795671 0.165738450 0.186383290 0.530241814
## [97] 0.005782521 0.245704161 0.722189113 0.368517591
##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 18 20
## [2,] 0.2 0.4 29 20
## [3,] 0.4 0.6 14 20
## [4,] 0.6 0.8 17 20
## [5,] 0.8 1.0 22 20
# calculando la estadística chi cuadrada
x2 <- (obser-Ei)^2/Ei
x2
## [1] 0.20 4.05 1.80 0.45 0.20
chicuad <- sum(x2)
chicuad # Estadistica chi cuadrada
## [1] 6.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.075894, p-value = 0.6121
## alternative hypothesis: two-sided
# Decision
test_ks$p.value # P válido
## [1] 0.61214
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]"
2.1. Prueba de Corrida: arriba y abajo
diff(num_aleat)
## [1] 0.769545080 -0.639172354 0.032585103 -0.360061029 0.728740909
## [6] -0.586768831 0.156083249 0.278848975 -0.009892949 -0.570302187
## [11] 0.941099467 -0.607348059 0.103307692 0.526248788 -0.800147950
## [16] 0.666967281 0.007428949 -0.173352807 -0.189935470 -0.461858738
## [21] 0.356565595 -0.279032127 0.379282208 0.390140833 -0.109373632
## [26] -0.266222525 -0.204620305 0.165133548 0.117561783 0.384177380
## [31] -0.315837717 -0.554818304 0.707266692 -0.409086866 0.329219176
## [36] -0.492014684 0.698657525 -0.784804489 0.247089894 -0.026040847
## [41] 0.506242258 -0.079838077 0.116761810 0.039272875 -0.867044479
## [46] 0.847393127 -0.752182124 0.275002083 0.539785583 -0.693771678
## [51] 0.399562697 -0.042213547 -0.278781119 0.436821360 -0.433020998
## [56] -0.172575342 0.598309863 -0.034888614 -0.671205716 0.156075206
## [61] 0.080215886 0.307639024 -0.585424010 0.788730975 -0.165506105
## [66] -0.271959766 0.193813726 0.311504057 -0.487278423 -0.030681881
## [71] 0.072019786 0.379980828 -0.545940698 0.089685355 0.476914857
## [76] -0.598526743 0.525490466 -0.484936409 -0.196106849 0.326229868
## [81] -0.267967371 0.717983156 -0.586752715 -0.050613796 0.087134511
## [86] -0.225495696 0.668208267 0.065692295 -0.154061602 0.034019739
## [91] -0.372702259 -0.069565395 -0.119057221 0.020644841 0.343858524
## [96] -0.524459293 0.239921640 0.476484952 -0.353671522
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0
## [39] 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0
## [77] 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 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] 68
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] 0.3989164
# 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 = 1.5, df = 4, p-value = 0.82
##
## (sample size : 100)
##
## observed number 0 1 12 6 1
## expected number 0.032 1.9 9.6 7.7 0.77
Informe de Resultados Prueba de Kolmogorov-Sminorv
Tras la aplicación de pruebas estadísticas orientadas a validar las propiedades de los números pseudoaleatorios generados en R, se obtuvieron los siguientes hallazgos:
Prueba de Chi cuadrada de uniformidad: La estadística calculada fue χ² = 7.52, valor que resultó inferior al crítico correspondiente para 5 grados de libertad y un nivel de significancia del 5%. Esto evidencia que no existen discrepancias significativas entre las frecuencias observadas y las frecuencias teóricas esperadas bajo el supuesto de uniformidad. Se acepta, por tanto, la hipótesis nula y se concluye que los números se distribuyen uniformemente en el intervalo [0,1].
Prueba de Kolmogorov-Smirnov (K-S): El estadístico obtenido fue D = 0.122 con un valor p = 0.0951, superior al umbral de significancia de 0.05. Esto respalda que no se identifican desviaciones sustanciales respecto a la distribución uniforme teórica, reforzando la validez del generador pseudoaleatorio en términos de ajuste a la distribución uniforme.
Prueba de independencia (corridas): Se contabilizaron 73 corridas, con una media esperada de 66.33. El valor de la estadística fue Z = 1.59, el cual se ubica dentro del rango de aceptación [−1.96, 1.96]. Este resultado valida el supuesto de independencia muestral, confirmando que los números generados no presentan patrones sistemáticos ni correlaciones secuenciales que comprometan su aleatoriedad.
Prueba de póker: Los resultados de la prueba de póker confirmaron que las configuraciones de los números siguen el patrón probabilístico esperado bajo condiciones de uniformidad. No se detectaron irregularidades en las combinaciones analizadas, lo cual constituye un respaldo adicional a la calidad estadística de la secuencia.
Conclusión
La convergencia de los resultados en todas las pruebas aplicadas Chi cuadrada (χ² = 7.52), Kolmogorov-Smirnov (p = 0.0951), Corridas (Z = 1.59) y Póker permite afirmar con un alto nivel de confianza que los números pseudoaleatorios generados cumplen simultáneamente con los criterios de uniformidad e independencia. Estas propiedades garantizan que las secuencias obtenidas son estadísticamente confiables, resultando idóneas para simulaciones avanzadas, métodos de Monte Carlo, modelado estocástico y aplicaciones estadísticas donde la calidad de la aleatoriedad constituye un requisito crítico.