###Generando los números pseudoaleatorios
set.seed(0406)
num_aleat <- runif(100)
num_aleat
## [1] 0.975024477 0.482414313 0.900322715 0.151461975 0.816540639 0.804645282
## [7] 0.311658392 0.849782526 0.995237855 0.550179826 0.903522257 0.344169704
## [13] 0.833371560 0.739442580 0.310338548 0.235696761 0.408215868 0.172868326
## [19] 0.987795013 0.573283752 0.230617943 0.707418497 0.009400878 0.411365366
## [25] 0.848279703 0.581446675 0.170190012 0.867113273 0.544146809 0.919835806
## [31] 0.351546468 0.295079955 0.050586257 0.080183724 0.029199322 0.810698461
## [37] 0.859541087 0.799319855 0.192563605 0.850557138 0.804613270 0.384933305
## [43] 0.159316195 0.115074477 0.262554222 0.925488295 0.108042076 0.966426580
## [49] 0.022911098 0.697449934 0.055551510 0.842855772 0.384928189 0.876619091
## [55] 0.800965530 0.197020303 0.528579205 0.183671294 0.897809082 0.175198453
## [61] 0.201982813 0.568356235 0.153310520 0.584965656 0.309438834 0.442822085
## [67] 0.803822582 0.546303160 0.550578076 0.978408683 0.270274441 0.800199117
## [73] 0.510716792 0.554292236 0.932304715 0.483961267 0.893121110 0.135676623
## [79] 0.057855349 0.041825130 0.522600933 0.476134737 0.071075365 0.323974498
## [85] 0.044590757 0.896192254 0.627909602 0.052354291 0.714292969 0.878825814
## [91] 0.973796004 0.863548733 0.279835722 0.097735769 0.550669037 0.495563551
## [97] 0.015561760 0.507717983 0.627468498 0.943521878
library(agricolae) # cargando la libreria agricolae
histo <- hist(num_aleat, breaks=6)
Tabla <- table.freq(histo)
lim_inf <-Tabla$Lower #limite inferior del intervalo
lim_sup <- Tabla$Upper # limite superior del intervalo
*Informe chi2:
La prueba Chi-cuadrado mostró que las frecuencias observadas en los intervalos del histograma no difieren de manera significativa de las frecuencias esperadas bajo una distribución uniforme, por lo que se concluye que los números generados se distribuyen de manera adecuada en el intervalo [0,1].
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 = 2, df = 4, p-value = 0.74
##
## (sample size : 100)
##
## observed number 0 3 11 6 0
## expected number 0.032 1.9 9.6 7.7 0.77
*Informe poker:
El análisis de Póker evidenció que la distribución de los dígitos decimales de los números pseudoaleatorios coincide con las probabilidades teóricas esperadas, lo que indica que no existen patrones extraños y que los números cumplen con la condición de uniformidad e independencia.
diff(num_aleat)
## [1] -0.4926 0.4179 -0.7489 0.6651 -0.0119 -0.4930 0.5381 0.1455 -0.4451
## [10] 0.3533 -0.5594 0.4892 -0.0939 -0.4291 -0.0746 0.1725 -0.2353 0.8149
## [19] -0.4145 -0.3427 0.4768 -0.6980 0.4020 0.4369 -0.2668 -0.4113 0.6969
## [28] -0.3230 0.3757 -0.5683 -0.0565 -0.2445 0.0296 -0.0510 0.7815 0.0488
## [37] -0.0602 -0.6068 0.6580 -0.0459 -0.4197 -0.2256 -0.0442 0.1475 0.6629
## [46] -0.8174 0.8584 -0.9435 0.6745 -0.6419 0.7873 -0.4579 0.4917 -0.0757
## [55] -0.6039 0.3316 -0.3449 0.7141 -0.7226 0.0268 0.3664 -0.4150 0.4317
## [64] -0.2755 0.1334 0.3610 -0.2575 0.0043 0.4278 -0.7081 0.5299 -0.2895
## [73] 0.0436 0.3780 -0.4483 0.4092 -0.7574 -0.0778 -0.0160 0.4808 -0.0465
## [82] -0.4051 0.2529 -0.2794 0.8516 -0.2683 -0.5756 0.6619 0.1645 0.0950
## [91] -0.1102 -0.5837 -0.1821 0.4529 -0.0551 -0.4800 0.4922 0.1198 0.3161
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0
## [39] 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1
## [77] 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 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
varianza <- (16*length(num_aleat)-29)/90
Z <- (corridas-mu)/sqrt(varianza) # valor de la estadística z
Z
## [1] 0.4
# Decisión estadística
ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"
*Informe prueba de corrida:
La prueba de corridas determinó que el número de cambios en la secuencia de valores está dentro del rango esperado, y el estadístico Z obtenido se encuentra dentro de los límites críticos, lo que confirma que los números generados son independientes entre sí.
# Probando si los U_i provienen de 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.1, p-value = 0.07
## alternative hypothesis: two-sided
# Decision
test_ks$p.value # P válido
## [1] 0.071
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]"
*Informe Prueba de Kolmogorov-Smirnov (Prueba K-S):
La prueba K-S arrojó un p-value mayor al nivel de significancia (0.05), lo que indica que no se rechaza la hipótesis nula y, en consecuencia, los números generados provienen de una distribución uniforme en el intervalo [0,1].