#Generando los numeros pseudoaleatorios

set.seed(1112)
num_aleat <- runif(100)
num_aleat
##   [1] 0.784559811 0.525363322 0.336503466 0.513569792 0.522688434 0.556803159
##   [7] 0.761325964 0.577995331 0.056204017 0.188059696 0.724821904 0.566918969
##  [13] 0.888450785 0.267708887 0.377685119 0.862388274 0.417126729 0.262432235
##  [19] 0.356209516 0.601248325 0.629161347 0.053317989 0.970090016 0.373877446
##  [25] 0.314822399 0.693641783 0.958711715 0.211243664 0.624516790 0.975125207
##  [31] 0.459168585 0.988588394 0.218946912 0.627828202 0.540916223 0.377212750
##  [37] 0.481457248 0.222966626 0.395345880 0.290400088 0.742878315 0.283583241
##  [43] 0.058488777 0.537946040 0.020401099 0.193746319 0.845025202 0.969641460
##  [49] 0.725047073 0.235143366 0.916525238 0.198104928 0.145567171 0.609833519
##  [55] 0.577907335 0.476176694 0.914799937 0.141251577 0.950830659 0.676313576
##  [61] 0.751362139 0.322147438 0.454838556 0.312840370 0.215238950 0.784573205
##  [67] 0.119197641 0.937291820 0.005935506 0.524035011 0.463469386 0.480715631
##  [73] 0.477850030 0.535351967 0.879402712 0.949070945 0.126933314 0.025967141
##  [79] 0.556964901 0.785154669 0.481177230 0.544555286 0.104550248 0.901138622
##  [85] 0.999650217 0.390442154 0.547752605 0.894751204 0.696966953 0.206094198
##  [91] 0.099546489 0.453653037 0.783610256 0.403742939 0.687336911 0.355553899
##  [97] 0.659933611 0.342595645 0.090320354 0.501981953

##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    16 20
## [2,]     0.2     0.4    22 20
## [3,]     0.4     0.6    26 20
## [4,]     0.6     0.8    19 20
## [5,]     0.8     1.0    17 20
# calculando la estadística chi cuadrada
  x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 0.80 0.20 1.80 0.05 0.45
 chicuad <- sum(x2)
 chicuad # Estadistica chi cuadrada
## [1] 3.3
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.062005, p-value = 0.8367
## alternative hypothesis: two-sided
# Decision
 test_ks$p.value # P válido
## [1] 0.8366788
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.259196489 -0.188859856  0.177066326  0.009118642  0.034114725
##  [6]  0.204522806 -0.183330634 -0.521791313  0.131855679  0.536762208
## [11] -0.157902936  0.321531816 -0.620741898  0.109976232  0.484703155
## [16] -0.445261545 -0.154694494  0.093777281  0.245038809  0.027913022
## [21] -0.575843358  0.916772026 -0.596212569 -0.059055048  0.378819385
## [26]  0.265069932 -0.747468051  0.413273126  0.350608417 -0.515956621
## [31]  0.529419808 -0.769641482  0.408881290 -0.086911979 -0.163703473
## [36]  0.104244498 -0.258490622  0.172379254 -0.104945793  0.452478227
## [41] -0.459295074 -0.225094464  0.479457263 -0.517544940  0.173345219
## [46]  0.651278883  0.124616258 -0.244594387 -0.489903707  0.681381872
## [51] -0.718420309 -0.052537757  0.464266347 -0.031926184 -0.101730640
## [56]  0.438623242 -0.773548360  0.809579083 -0.274517083  0.075048563
## [61] -0.429214702  0.132691119 -0.141998186 -0.097601420  0.569334255
## [66] -0.665375564  0.818094178 -0.931356313  0.518099505 -0.060565626
## [71]  0.017246245 -0.002865601  0.057501937  0.344050745  0.069668233
## [76] -0.822137631 -0.100966173  0.530997760  0.228189768 -0.303977439
## [81]  0.063378056 -0.440005038  0.796588374  0.098511595 -0.609208063
## [86]  0.157310451  0.346998599 -0.197784251 -0.490872755 -0.106547709
## [91]  0.354106548  0.329957219 -0.379867316  0.283593972 -0.331783012
## [96]  0.304379713 -0.317337966 -0.252275291  0.411661600
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
##  [1] 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1
## [39] 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0
## [77] 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 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] 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.6, df = 4, p-value = 0.8
## 
##       (sample size : 100)
## 
##  observed number  0 3 7 9 1 
##  expected number  0.032 1.9 9.6 7.7 0.77

Análisis de Resultados

Tras realizar las pruebas estadísticas para verificar 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 resultó menor al valor crítico de la distribución 𝜒 2 χ 2 , lo cual indica que no existen diferencias significativas entre las frecuencias observadas y las esperadas. En consecuencia, se acepta la hipótesis de que los números provienen de una distribución uniforme en el intervalo [ 0 , 1] [0,1].

Prueba de Kolmogorov-Smirnov (K-S): El valor 𝑝 p fue mayor a 0.05, lo cual respalda nuevamente que los datos se ajustan adecuadamente a una distribución uniforme.

Prueba de independencia (corridas): El valor de la estadística 𝑍 Z se encontró dentro del rango de aceptación [ − 1.96 , 1.96] [−1.96,1.96], indicando que los números son independientes entre sí, es decir, no presentan patrones sistemáticos que rompan el supuesto de aleatoriedad.

Prueba de póker: El resultado de la prueba de póker también confirmó que los números no presentan irregularidades y siguen el patrón esperado bajo una distribución uniforme.

Conclusión

Todas las pruebas aplicadas coinciden en que los números pseudoaleatorios generados cumplen con las condiciones de uniformidad e independencia, por lo cual pueden considerarse válidos y confiables para ser usados en simulaciones y aplicaciones estadísticas.