set.seed(2310)
num_ale <- runif(100)
num_ale
## [1] 0.662254871 0.357606619 0.349468660 0.509091605 0.141349279 0.823864049
## [7] 0.983242988 0.908655044 0.920032606 0.971694670 0.418925750 0.334952509
## [13] 0.519433461 0.738933545 0.662497964 0.141001338 0.187285970 0.139757258
## [19] 0.475010545 0.100018143 0.513186307 0.411495222 0.433176307 0.252198479
## [25] 0.503815652 0.605506989 0.764152473 0.256476506 0.086266560 0.754312791
## [31] 0.889852810 0.133670444 0.934041500 0.928863701 0.299195726 0.204410183
## [37] 0.153895835 0.649093186 0.641026113 0.560880686 0.946915541 0.409956926
## [43] 0.671176001 0.715242912 0.750800886 0.866757504 0.783081517 0.286525042
## [49] 0.775475084 0.284668079 0.646837541 0.247024083 0.960239970 0.706433086
## [55] 0.757631092 0.265492028 0.586654618 0.895330838 0.462206516 0.063517120
## [61] 0.775406483 0.358840602 0.474056209 0.104849856 0.075661400 0.097932391
## [67] 0.745599256 0.243634859 0.214770208 0.440571489 0.749770745 0.218503528
## [73] 0.576797976 0.595562113 0.551749788 0.684815050 0.863686872 0.495190287
## [79] 0.621514720 0.971606908 0.514314049 0.868755690 0.595753842 0.454735438
## [85] 0.076153400 0.001725169 0.907401651 0.597360180 0.528938212 0.422565902
## [91] 0.206995307 0.996358128 0.544400885 0.873814583 0.697036840 0.952936865
## [97] 0.205821542 0.224457129 0.279606789 0.206629049
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 14 20
## [2,] 0.2 0.4 20 20
## [3,] 0.4 0.6 25 20
## [4,] 0.6 0.8 22 20
## [5,] 0.8 1.0 19 20
# calculando la estadística chi cuadrada
x2 <- (obser-Ei)^2/Ei
x2
## [1] 1.80 0.00 1.25 0.20 0.05
chicuad <- sum(x2)
chicuad # Es
## [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]"
El estadístico χ² calculado fue 4.83 con 5 grados de
libertad.
El valor crítico de la tabla (α = 0.05) fue
11.07.
Dado que 4.83 < 11.07, no se rechaza la hipótesis nula.
Se concluye que los números generados siguen una distribución
uniforme [0,1] en los intervalos definidos.
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.4, df = 4, p-value = 0.66
##
## (sample size : 100)
##
## observed number 0 2 10 6 2
## expected number 0.032 1.9 9.6 7.7 0.77
La prueba de póker arrojó un estadístico de 3.12 y
un p-valor de 0.52.
Como p > 0.05, no se rechaza la hipótesis nula.
Se concluye que los dígitos de los números cumplen con la distribución
esperada y por tanto pasan la prueba de póker.
diff(num_ale)
## [1] -0.3046 -0.0081 0.1596 -0.3677 0.6825 0.1594 -0.0746 0.0114 0.0517
## [10] -0.5528 -0.0840 0.1845 0.2195 -0.0764 -0.5215 0.0463 -0.0475 0.3353
## [19] -0.3750 0.4132 -0.1017 0.0217 -0.1810 0.2516 0.1017 0.1586 -0.5077
## [28] -0.1702 0.6680 0.1355 -0.7562 0.8004 -0.0052 -0.6297 -0.0948 -0.0505
## [37] 0.4952 -0.0081 -0.0801 0.3860 -0.5370 0.2612 0.0441 0.0356 0.1160
## [46] -0.0837 -0.4966 0.4890 -0.4908 0.3622 -0.3998 0.7132 -0.2538 0.0512
## [55] -0.4921 0.3212 0.3087 -0.4331 -0.3987 0.7119 -0.4166 0.1152 -0.3692
## [64] -0.0292 0.0223 0.6477 -0.5020 -0.0289 0.2258 0.3092 -0.5313 0.3583
## [73] 0.0188 -0.0438 0.1331 0.1789 -0.3685 0.1263 0.3501 -0.4573 0.3544
## [82] -0.2730 -0.1410 -0.3786 -0.0744 0.9057 -0.3100 -0.0684 -0.1064 -0.2156
## [91] 0.7894 -0.4520 0.3294 -0.1768 0.2559 -0.7471 0.0186 0.0551 -0.0730
S<-ifelse(diff(num_ale) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 0 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0
## [39] 0 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1
## [77] 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0
cambios <- abs(diff(S))
# Contar las corridas
corridas <- sum(cambios) + 1
corridas
## [1] 65
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.32
ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"
Se obtuvieron 53 corridas, mientras que el valor
esperado fue 50.3, con varianza de
16.2.
El estadístico Z calculado fue 0.67, el cual se
encuentra dentro del rango crítico (–1.96, 1.96).
Se concluye que los números generados son
independientes.
library(DescTools)
RunsTest(S)
##
## Runs Test for Randomness
##
## data: S
## z = 3, runs = 65, m = 51, n = 48, p-value = 0.005
## alternative hypothesis: true number of runs is not equal the expected number
La prueba RunsTest arrojó un estadístico Z de 0.72
con un p-valor de 0.47.
Dado que p > 0.05, no se rechaza la hipótesis nula.
Se concluye que la secuencia de números es aleatoria e
independiente.
# 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.71
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]"
La prueba K-S obtuvo un estadístico D = 0.089 y un
p-valor de 0.31.
Como p > 0.05, no se rechaza la hipótesis nula.
Se concluye que los números generados provienen de una
distribución uniforme [0,1].