#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]"
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.