Generando los numero aleatorios

set.seed(1307)
num_aleat <- runif(100)
num_aleat
##   [1] 0.36833613 0.64821925 0.88171344 0.00365412 0.90065093 0.38739648
##   [7] 0.52298926 0.83421306 0.71207478 0.53824251 0.10549483 0.15372348
##  [13] 0.06926526 0.98716106 0.63851149 0.90871242 0.13337081 0.63080827
##  [19] 0.92782231 0.53023426 0.67747750 0.01348180 0.97746236 0.52572840
##  [25] 0.71706020 0.20153261 0.53159868 0.51441841 0.81171004 0.31511930
##  [31] 0.76839618 0.08414708 0.50988613 0.37420688 0.76440661 0.18660201
##  [37] 0.42781077 0.64343693 0.26300955 0.40909785 0.87001298 0.27933817
##  [43] 0.52075767 0.39963025 0.74843318 0.33422505 0.20161134 0.86684588
##  [49] 0.76770889 0.06813298 0.03677222 0.41450279 0.51882508 0.29990606
##  [55] 0.57517326 0.46724409 0.42489201 0.26188970 0.88951369 0.08442405
##  [61] 0.16403007 0.49164968 0.34629733 0.24053471 0.99056418 0.68790759
##  [67] 0.92229480 0.43948839 0.37563698 0.09841499 0.32056884 0.83105144
##  [73] 0.10756733 0.20575730 0.65978300 0.67647525 0.88399384 0.07650135
##  [79] 0.11366309 0.85923931 0.17546575 0.88146792 0.94335742 0.47174718
##  [85] 0.42168540 0.93366885 0.28841569 0.96018998 0.91545706 0.53131576
##  [91] 0.12360656 0.54130656 0.92937285 0.61696226 0.83301048 0.27057370
##  [97] 0.99989323 0.31514609 0.58075197 0.29529678

1.Prueba de uniformidad Chi cuadrada.

hist(num_aleat, breaks=6)

histo <- hist(num_aleat, breaks=6)


library(agricolae)

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    18 20
## [2,]     0.2     0.4    21 20
## [3,]     0.4     0.6    22 20
## [4,]     0.6     0.8    15 20
## [5,]     0.8     1.0    24 20

prueba chi-square para validar la uniformidad de los numeros pseudoaleatorios.

a <- 37890 
c <- 5678  
m <- 245677645
X_n <- 100 # semilla
num_aleat<-numeric(100) # vector numérico de longitud 100
 for (i in 1:100)
   {X_n<-(a*X_n+c)%%m
   num_aleat[i]<-X_n/m # números en el intervalo [0,1]
   }
 num_aleat
##   [1] 0.01544576 0.23987845 0.99454262 0.21978175 0.53056855 0.24255611
##   [7] 0.45089450 0.39248878 0.39971851 0.33449044 0.84270615 0.13614547
##  [13] 0.55181247 0.17449426 0.58740144 0.64066972 0.97570891 0.61074418
##  [19] 0.09718224 0.23496423 0.79459207 0.09347934 0.93204493 0.18235348
##  [25] 0.37329950 0.31822622 0.59145159 0.10065058 0.65058224 0.56115809
##  [31] 0.28004953 0.07655846 0.80020243 0.67001474 0.85845409 0.82531249
##  [37] 0.09012543 0.85250458 0.39862623 0.94781279 0.62645915 0.53711471
##  [43] 0.27653189 0.79325770 0.53418140 0.13321439 0.49331954 0.87742152
##  [49] 0.50146127 0.36740888 0.12242609 0.72449953 0.28716330 0.61741779
##  [55] 0.95998931 0.99499351 0.30422079 0.92587231 0.30174236 0.01813581
##  [61] 0.16584998 0.05584093 0.81283351 0.26179198 0.29828006 0.83154413
##  [67] 0.20702060 0.01048393 0.23624914 0.48003819 0.64719193 0.10206182
##  [73] 0.12244738 0.53110405 0.53259267 0.93630331 0.53256139 0.75107276
##  [79] 0.14706909 0.44789203 0.62886327 0.62944670 0.73550014 0.10043685
##  [85] 0.55214944 0.94213394 0.45506311 0.34123153 0.26258837 0.47346328
##  [91] 0.52360602 0.43198189 0.79377077 0.97443002 0.15355326 0.13299842
##  [97] 0.31006217 0.25553195 0.10565515 0.27358966
library(agricolae)
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    18 20
## [2,]     0.2     0.4    21 20
## [3,]     0.4     0.6    22 20
## [4,]     0.6     0.8    15 20
## [5,]     0.8     1.0    24 20
 #calculando la estadística chi cuadrada
  x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 0.20 0.05 0.20 1.25 0.80
  chicuad <- sum(x2)
 chicuad # Estadistica chi cuadrada
## [1] 2.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 de Kolmogorov-Smirnov (Prueba K-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.099418, p-value = 0.2763
## alternative hypothesis: two-sided
# Decision
 test_ks$p.value # P válido
## [1] 0.2763267
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 de Corrida: arriba y abajo

diff(num_aleat) # halla la diferencia entre un valor  y el otro en un vector
##  [1]  0.2244326911  0.7546641657 -0.7747608660  0.3107868036 -0.2880124482
##  [6]  0.2083383899 -0.0584057210  0.0072297380 -0.0652280756  0.5082157149
## [11] -0.7065606844  0.4156670014 -0.3773182131  0.4129071858  0.0532682776
## [16]  0.3350391933 -0.3649647285 -0.5135619482  0.1377819907  0.5596278408
## [21] -0.7011127325  0.8385655927 -0.7496914504  0.1909460260 -0.0550732852
## [26]  0.2732253681 -0.4908010047  0.5499316594 -0.0894241517 -0.2811085640
## [31] -0.2034910624  0.7236439644 -0.1301876896  0.1884393470 -0.0331415990
## [36] -0.7351870578  0.7623791534 -0.4538783535  0.5491865570 -0.3213536380
## [41] -0.0893444334 -0.2605828259  0.5167258095 -0.2590762989 -0.4009670070
## [46]  0.3601051492  0.3841019805 -0.3759602547 -0.1340523880 -0.2449827904
## [51]  0.6020734406 -0.4373362298  0.3302544886  0.3425715229  0.0350042024
## [56] -0.6907727197  0.6216515141 -0.6241299447 -0.2836065528  0.1477141724
## [61] -0.1100090527  0.7569925827 -0.5510415284  0.0364880777  0.5332640664
## [66] -0.6245235296 -0.1965366649  0.2257652095  0.2437890513  0.1671537311
## [71] -0.5451301033  0.0203855544  0.4086566769  0.0014886173  0.4037106429
## [76] -0.4037419237  0.2185113749 -0.6040036732  0.3008229341  0.1809712479
## [81]  0.0005834271  0.1060534425 -0.6350632961  0.4517125887  0.3899845059
## [86] -0.4870708322 -0.1138315820 -0.0786431545  0.2108749048  0.0501427389
## [91] -0.0916241280  0.3617888799  0.1806592537 -0.8208767631 -0.0205548413
## [96]  0.1770637495 -0.0545302158 -0.1498768030  0.1679345103
S<-ifelse(diff(num_aleat) > 0, 1, 0) # seuencia de ceros y unos
S
##  [1] 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0
## [39] 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0
## [77] 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 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] 65
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.3191331
# Decisión estadística 

ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"

Haciedo Uso de la librería DescTolls y la función Runstest

library(DescTools)
RunsTest(S)
## 
##  Runs Test for Randomness
## 
## data:  S
## z = 2.8615, runs = 65, m = 47, n = 52, p-value = 0.004217
## alternative hypothesis: true number of runs is not equal the expected number

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 = 8.8, df = 4, p-value = 0.068
## 
##       (sample size : 100)
## 
##  observed number  0 5 9 4 2 
##  expected number  0.032 1.9 9.6 7.7 0.77
  1. Prueba de Uniformidad (Chi-Cuadrado)

Resultados:

Estadístico Chi² = 2.5

Valor crítico (α=0.05, gl=4) ≈ 9.49

Decisión: Como 2.5 < 9.49, no se rechaza H₀.

Conclusión: Los números generados provienen de una distribución uniforme [0,1] .

  1. Prueba de Kolmogorov-Smirnov (K-S)

Resultados:

Estadístico D = 0.0994

Valor-p = 0.2763

Decisión: Como p > 0.05, no se rechaza H₀.

Conclusión: Los números generados siguen una distribución uniforme [0,1] .

  1. Prueba de Corridas (Arriba y Abajo)

Resultados (método manual):

Número de corridas = 65

Media esperada = 66.33

Z = -0.3191 (|Z| < 1.96)

Decisión: No se rechaza H₀ → Los números son independientes .

Resultados (con función RunsTest):

Estadístico Z = 2.8615

Valor-p = 0.0042

Decisión: Como p < 0.05, se rechaza H₀ → Los números no son aleatorios en este contraste .

Conclusión: La prueba manual indica independencia, pero el test formal (RunsTest) muestra evidencia de dependencia en la secuencia.

  1. Prueba Poker

Resultados:

Estadístico Chi² = 8.8

gl = 4

Valor-p = 0.068

Decisión: Como p > 0.05, no se rechaza H₀.

Conclusión: Los números pasan la prueba Poker, es decir, no hay evidencia de desviación de la uniformidad esperada .

informe General:

Las pruebas de Chi-Cuadrado, Kolmogorov-Smirnov y Poker confirman que los números generados siguen una distribución uniforme [0,1].

En cuanto a independencia, la prueba manual la valida, pero la prueba formal de corridas (RunsTest) detecta posible dependencia, lo que indica que la secuencia podría no ser completamente aleatoria.