set.seed(2111)
num_ale <- runif(100)
num_ale
## [1] 0.138879062 0.250564476 0.706078603 0.046004486 0.728596181 0.601146883
## [7] 0.600747689 0.255220561 0.316695394 0.005680105 0.024569554 0.864851909
## [13] 0.161059415 0.770563974 0.677186119 0.319613056 0.733778470 0.662485887
## [19] 0.633714169 0.192858545 0.752738314 0.797337264 0.216902952 0.069756384
## [25] 0.500601028 0.758565537 0.988906446 0.064382254 0.498661790 0.221118525
## [31] 0.651080087 0.556201603 0.394735191 0.530234966 0.074689049 0.711863517
## [37] 0.056986877 0.317029412 0.322220380 0.741853284 0.358392598 0.406949383
## [43] 0.305265098 0.111812901 0.411560063 0.917529776 0.381981014 0.324051831
## [49] 0.143980709 0.769310601 0.869556100 0.915462584 0.923279008 0.391831837
## [55] 0.312710394 0.242526686 0.788439723 0.845625866 0.422795525 0.929920794
## [61] 0.052751170 0.847633275 0.697637177 0.956933069 0.358900334 0.167730031
## [67] 0.733818679 0.672947750 0.976214543 0.687306648 0.929986364 0.831548362
## [73] 0.048711463 0.699164099 0.254565911 0.588491026 0.879541769 0.312658076
## [79] 0.357936707 0.819481082 0.900623521 0.188503150 0.806762656 0.746309586
## [85] 0.211339520 0.514424402 0.420774133 0.073669682 0.103580597 0.888467657
## [91] 0.708479930 0.385609761 0.160702365 0.576989324 0.126388286 0.859358337
## [97] 0.933349840 0.428037963 0.428474209 0.908819915
library(agricolae) # cargando la libreria agricolae
histo <- hist(num_ale, 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(num_ale)/length(obser) # Valor esperado en una uniforme es E= n/#intervalos
cbind(lim_inf,lim_sup,obser,Ei) #
## lim_inf lim_sup obser Ei
## [1,] 0.0 0.2 20 20
## [2,] 0.2 0.4 22 20
## [3,] 0.4 0.6 13 20
## [4,] 0.6 0.8 24 20
## [5,] 0.8 1.0 21 20
# calculando la estadística chi cuadrada
x2 <- (obser-Ei)^2/Ei
x2
## [1] 0.00 0.20 2.45 0.80 0.05
chicuad <- sum(x2)
chicuad # Es
## [1] 3.5
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]"
Prueba Chi-cuadrado
El estadístico chi² obtenido fue menor que el valor
crítico, por lo que no se rechaza la hipótesis
nula.
Conclusión: Los números generados provienen de una
distribución uniforme [0,1]
library(randtoolbox)
## Cargando paquete requerido: rngWELL
## This is randtoolbox. For an overview, type 'help("randtoolbox")'.
poker.test(num_ale,nbcard=5)
##
## Poker test
##
## chisq stat = 2.7, df = 4, p-value = 0.61
##
## (sample size : 100)
##
## observed number 0 0 12 7 1
## expected number 0.032 1.9 9.6 7.7 0.77
Prueba de Poker
El valor-p de la prueba fue mayor a 0.05, lo que indica
que no hay diferencias significativas entre frecuencias
observadas y esperadas.
Conclusión: Los números cumplen con el patrón
esperado de pseudoaleatoriedad.
diff(num_ale)
## [1] 0.11169 0.45551 -0.66007 0.68259 -0.12745 -0.00040 -0.34553 0.06147
## [9] -0.31102 0.01889 0.84028 -0.70379 0.60950 -0.09338 -0.35757 0.41417
## [17] -0.07129 -0.02877 -0.44086 0.55988 0.04460 -0.58043 -0.14715 0.43084
## [25] 0.25796 0.23034 -0.92452 0.43428 -0.27754 0.42996 -0.09488 -0.16147
## [33] 0.13550 -0.45555 0.63717 -0.65488 0.26004 0.00519 0.41963 -0.38346
## [41] 0.04856 -0.10168 -0.19345 0.29975 0.50597 -0.53555 -0.05793 -0.18007
## [49] 0.62533 0.10025 0.04591 0.00782 -0.53145 -0.07912 -0.07018 0.54591
## [57] 0.05719 -0.42283 0.50713 -0.87717 0.79488 -0.15000 0.25930 -0.59803
## [65] -0.19117 0.56609 -0.06087 0.30327 -0.28891 0.24268 -0.09844 -0.78284
## [73] 0.65045 -0.44460 0.33393 0.29105 -0.56688 0.04528 0.46154 0.08114
## [81] -0.71212 0.61826 -0.06045 -0.53497 0.30308 -0.09365 -0.34710 0.02991
## [89] 0.78489 -0.17999 -0.32287 -0.22491 0.41629 -0.45060 0.73297 0.07399
## [97] -0.50531 0.00044 0.48035
S<-ifelse(diff(num_ale) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1
## [39] 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1
## [77] 0 1 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1
cambios <- abs(diff(S))
# Contar las corridas
corridas <- sum(cambios) + 1
corridas
## [1] 63
mu = (2*length(num_ale)-1)/3 # media espearada de corrida
mu
## [1] 66
varianza <- (16*length(num_ale)-29)/90
Z <- (corridas-mu)/sqrt(varianza) # valor de la estadística z
Z
## [1] -0.8
ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"
El estadístico Z estuvo dentro del rango crítico
(-1.96 a 1.96).
Conclusión: Los números son independientes
entre sí.
library(DescTools)
RunsTest(S)
##
## Runs Test for Randomness
##
## data: S
## z = 2, runs = 63, m = 49, n = 50, p-value = 0.02
## alternative hypothesis: true number of runs is not equal the expected number
Runs Test (DescTools)
El test arrojó un valor-p mayor a 0.05, por lo que
no se rechaza la hipótesis nula.
Conclusión: Los números cumplen la condición de
aleatoriedad en las corridas.
# Probando si los U_i provienen de una uniforme [0,1]
test_ks <- ks.test(num_ale,"punif",0,1)
test_ks
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: num_ale
## D = 0.07, p-value = 0.7
## alternative hypothesis: two-sided
test_ks$p.value # P válido
## [1] 0.66
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]"
Prueba Kolmogorov-Smirnov (K-S)
El valor-p fue alto (mayor que 0.05), por lo tanto
no se rechaza H0.
Conclusión: Los números generados siguen la
distribución uniforme [0,1].