set.seed(1108)
num_aleat <- runif(100)
hist(num_aleat, breaks=6)
library(agricolae)
histo <- hist(num_aleat, breaks=6)
Tabla <- table.freq(histo)
lim_inf <-Tabla$Lower
lim_sup <- Tabla$Upper
obser <- Tabla$Frequency
Ei <- length(num_aleat)/length(obser)
cbind(lim_inf,lim_sup,obser,Ei)
## lim_inf lim_sup obser Ei
## [1,] 0.0 0.2 11 20
## [2,] 0.2 0.4 16 20
## [3,] 0.4 0.6 24 20
## [4,] 0.6 0.8 30 20
## [5,] 0.8 1.0 19 20
x2 <- (obser-Ei)^2/Ei
x2
## [1] 4.05 0.80 0.80 5.00 0.05
chicuad <- sum(x2)
chicuad
## [1] 10.7
dchi <- qchisq(0.05,length(obser)-1,lower.tail=F)
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 no siguen una uniforme [0,1] "
test_ks <- ks.test(num_aleat,"punif",0,1)
test_ks
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: num_aleat
## D = 0.15459, p-value = 0.0168
## alternative hypothesis: two-sided
test_ks$p.value
## [1] 0.01679633
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 no siguen una distribución uniforme"
diff(num_aleat)
## [1] -0.296022594 0.323322006 -0.051292908 0.026436191 -0.471806538
## [6] 0.716038840 -0.320271107 0.303051497 -0.191794201 -0.238792034
## [11] -0.443761185 0.482481691 -0.226033298 0.646209610 -0.078217113
## [16] -0.084661939 -0.761923028 0.008023647 0.665641375 -0.106456756
## [21] -0.210542301 -0.191679491 0.395369401 -0.119953075 0.427886152
## [26] -0.179393654 -0.540003335 0.171489982 0.380720654 -0.154099335
## [31] -0.204598176 -0.017548546 0.026808657 0.064292964 0.336184422
## [36] -0.126744113 -0.054966354 -0.154005064 -0.236395898 -0.005361969
## [41] -0.106751518 0.672298369 -0.688295183 0.343117071 0.145897465
## [46] 0.038099046 -0.559066521 0.785039295 -0.418383857 -0.131686146
## [51] 0.155869941 0.308633935 -0.041551510 -0.575722417 0.760250683
## [56] 0.025809376 -0.289090188 -0.174132716 0.209044795 -0.285866635
## [61] 0.258109941 -0.066059827 -0.493051479 0.655533786 0.146066058
## [66] -0.572666624 0.564829031 -0.483445588 0.428300050 -0.351374588
## [71] 0.076437065 -0.433733908 0.428000062 -0.336967660 -0.127709130
## [76] 0.455827523 -0.126252871 -0.172473820 -0.094390574 0.812407542
## [81] -0.103593234 -0.378460634 0.015157660 0.189609858 0.039746463
## [86] -0.046310626 -0.150363620 0.411759289 -0.214451669 -0.356825642
## [91] 0.383276078 -0.398152333 0.268992622 0.258310341 -0.165189294
## [96] -0.500464816 0.060039325 0.161682322 0.348337256
S<-ifelse(diff(num_aleat) > 0, 1, 0)
S
## [1] 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0
## [39] 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1
## [77] 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1
cambios <- abs(diff(S))
corridas <- sum(cambios) + 1
corridas
## [1] 60
mu = (2*length(num_aleat)-1)/3
mu
## [1] 66.33333
varianza <- (16*length(num_aleat)-29)/90
Z <- (corridas-mu)/sqrt(varianza)
Z
## [1] -1.515882
ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"
library(DescTools)
RunsTest(S)
##
## Runs Test for Randomness
##
## data: S
## z = 1.9664, runs = 60, m = 55, n = 44, p-value = 0.04926
## alternative hypothesis: true number of runs is not equal the expected number
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 = 0.57, df = 4, p-value = 0.97
##
## (sample size : 100)
##
## observed number 0 1 10 8 1
## expected number 0.032 1.9 9.6 7.7 0.77
INFORME
Se generaron 100 números pseudoaleatorios con runif(100) en R y se evaluó su aleatoriedad y uniformidad mediante varias pruebas:
Chi-cuadrado y Kolmogorov-Smirnov: indicaron ligeras desviaciones de uniformidad, es decir, los números no siguen perfectamente una distribución uniforme.
Prueba de corridas (Run Test): mostró que la secuencia es aproximadamente independiente, confirmando aleatoriedad en el orden de los números.
Prueba de Poker: validó que las combinaciones de dígitos cumplen con la aleatoriedad esperada, con un valor p alto (0.97).
Conclusión: Los números pseudoaleatorios generados son aceptablemente aleatorios, con pequeñas irregularidades en la uniformidad, pero cumplen las pruebas de independencia y de Poker.