#Generando los números pseudoaleatorios
set.seed(2105)
num_aleat <- runif(100)
num_aleat
## [1] 0.245519154 0.457494813 0.859095288 0.840357250 0.191119493 0.475931764
## [7] 0.894099071 0.158261827 0.882120409 0.340110074 0.349406324 0.699754027
## [13] 0.368329357 0.867298817 0.653151462 0.429979416 0.739513393 0.762396824
## [19] 0.054423981 0.411596596 0.884652217 0.198434286 0.334524717 0.384777844
## [25] 0.204925513 0.714524576 0.869925367 0.621858674 0.796944689 0.528703031
## [31] 0.353457770 0.148118452 0.573530175 0.275152103 0.500938706 0.737911935
## [37] 0.006368269 0.298604122 0.572943443 0.333152588 0.122898230 0.992085143
## [43] 0.180482849 0.995778629 0.064303177 0.734864971 0.045968627 0.669607211
## [49] 0.123642972 0.156271121 0.611875939 0.704567711 0.153813613 0.029233827
## [55] 0.406418550 0.457109162 0.712798695 0.370221670 0.055973209 0.746525377
## [61] 0.217945815 0.392428514 0.133362325 0.247514643 0.393641812 0.915247310
## [67] 0.109358219 0.072141763 0.325966269 0.708332746 0.666920996 0.047175160
## [73] 0.335763895 0.066495964 0.950583447 0.201585266 0.258795636 0.958626532
## [79] 0.197548313 0.387085952 0.987643634 0.251705900 0.847648684 0.583023573
## [85] 0.129320196 0.067466010 0.505289739 0.116002999 0.484847476 0.609338721
## [91] 0.277528692 0.362179165 0.645928554 0.910923754 0.585734636 0.010491873
## [97] 0.205065478 0.651376293 0.872574591 0.513140573
##1. Prueba de uniformidad chi cuadrada
library(agricolae)
hist(num_aleat, breaks=6)$count # obteniendo las frecuencias observadas con 6 intervalos
## [1] 25 25 15 19 16
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
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 25 20
## [2,] 0.2 0.4 25 20
## [3,] 0.4 0.6 15 20
## [4,] 0.6 0.8 19 20
## [5,] 0.8 1.0 16 20
# calculando la estadística chi cuadrada
x2 <- (obser-Ei)^2/Ei
x2
## [1] 1.25 1.25 1.25 0.05 0.80
chicuad <- sum(x2)
chicuad # Estadistica chi cuadrada
## [1] 4.6
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.1084, p-value = 0.1905
## alternative hypothesis: two-sided
# Decision
test_ks$p.value # P válido
## [1] 0.1905235
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.21197566 0.40160048 -0.01873804 -0.64923776 0.28481227 0.41816731
## [7] -0.73583724 0.72385858 -0.54201033 0.00929625 0.35034770 -0.33142467
## [13] 0.49896946 -0.21414735 -0.22317205 0.30953398 0.02288343 -0.70797284
## [19] 0.35717262 0.47305562 -0.68621793 0.13609043 0.05025313 -0.17985233
## [25] 0.50959906 0.15540079 -0.24806669 0.17508601 -0.26824166 -0.17524526
## [31] -0.20533932 0.42541172 -0.29837807 0.22578660 0.23697323 -0.73154367
## [37] 0.29223585 0.27433932 -0.23979086 -0.21025436 0.86918691 -0.81160229
## [43] 0.81529578 -0.93147545 0.67056179 -0.68889634 0.62363858 -0.54596424
## [49] 0.03262815 0.45560482 0.09269177 -0.55075410 -0.12457979 0.37718472
## [55] 0.05069061 0.25568953 -0.34257703 -0.31424846 0.69055217 -0.52857956
## [61] 0.17448270 -0.25906619 0.11415232 0.14612717 0.52160550 -0.80588909
## [67] -0.03721646 0.25382451 0.38236648 -0.04141175 -0.61974584 0.28858874
## [73] -0.26926793 0.88408748 -0.74899818 0.05721037 0.69983090 -0.76107822
## [79] 0.18953764 0.60055768 -0.73593773 0.59594278 -0.26462511 -0.45370338
## [85] -0.06185419 0.43782373 -0.38928674 0.36884448 0.12449124 -0.33181003
## [91] 0.08465047 0.28374939 0.26499520 -0.32518912 -0.57524276 0.19457360
## [97] 0.44631082 0.22119830 -0.35943402
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1
## [39] 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1
## [77] 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 0
# 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] 64
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.558483
# 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.8, df = 4, p-value = 0.76
##
## (sample size : 100)
##
## observed number 0 3 11 5 1
## expected number 0.032 1.9 9.6 7.7 0.77
Análisis de Resultados: En conclusión, las pruebas de ji-cuadrada, Kolmogórov–Smirnov y corridas muestran de forma consistente que la muestra generada se ajusta a una distribución uniforme 𝑈 ( 0 , 1 ) U(0,1) y no presenta dependencia temporal, por lo que los números se consideran válidos y confiables para su uso en simulaciones y análisis estadísticos.