Generando numeros aleatorios, metodo congruencial mixto

a <- 1235
c <-2438
m <-145369
x_n <-72 #semilla

random.number<-numeric(100) #vector numerico de longitud
for (j in 1:100) 
  {x_n<-(a*x_n+c)%%m
  random.number[j]<-x_n/m
}
random.number
##   [1] 0.628455861 0.159758958 0.319084537 0.086173806 0.441421486 0.172306338
##   [7] 0.815098130 0.662961154 0.773796339 0.655249744 0.250204652 0.019515853
##  [13] 0.118849273 0.795623551 0.611856723 0.659824309 0.899792941 0.261052907
##  [19] 0.417110938 0.148780001 0.760072643 0.706484876 0.525593490 0.124730857
##  [25] 0.059379923 0.350975793 0.471875021 0.782422662 0.308759089 0.334245953
##  [31] 0.810523564 0.013372865 0.532259285 0.356988079 0.897048201 0.871299933
##  [37] 0.072188706 0.169823002 0.748178773 0.017555325 0.697597149 0.549250528
##  [43] 0.341173152 0.365614402 0.550557547 0.955341235 0.863196417 0.064346594
##  [49] 0.484814507 0.762686680 0.934821042 0.520757521 0.152308952 0.118326466
##  [55] 0.149956318 0.212823917 0.854308690 0.088003632 0.701256802 0.068921159
##  [61] 0.134402796 0.004223734 0.233082707 0.873913971 0.300524871 0.164987033
##  [67] 0.775756867 0.076501868 0.496577675 0.290199424 0.413059180 0.144858945
##  [73] 0.917568395 0.213738830 0.984226348 0.536311043 0.360909135 0.739552449
##  [79] 0.364045980 0.613555848 0.758242817 0.446649561 0.628978668 0.805426191
##  [85] 0.718117343 0.891689425 0.253210795 0.732102443 0.163287909 0.677338360
##  [91] 0.529645248 0.128651913 0.901884171 0.843721839 0.013242163 0.370842477
##  [97] 0.007229877 0.945669297 0.918352606 0.182239680
hist(random.number, breaks=7)



histo<- hist(random.number, breaks=6)
library(agricolae)

Tabla <- table.freq(histo)

Tabla
##   Lower Upper Main Frequency Percentage  CF CPF
## 1   0.0   0.2  0.1        28         28  28  28
## 2   0.2   0.4  0.3        18         18  46  46
## 3   0.4   0.6  0.5        14         14  60  60
## 4   0.6   0.8  0.7        22         22  82  82
## 5   0.8   1.0  0.9        18         18 100 100
obser <- Tabla$Frequency ## los valores observados
obser
## [1] 28 18 14 22 18
E <- length(random.number)/length(obser) ## valores esperados
E
## [1] 20
 x2 <- (obser -E)^2/E
x2 
## [1] 3.2 0.2 1.8 0.2 0.2
chicuad <- sum(x2) ## estadistica chi cuadrada
chicuad
## [1] 5.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]"
### test kolmogorov - smirnoff ####

# Probando si los U_i provienen de una uniforme [0,1]
test_ks <- ks.test(random.number,"punif",0,1)
test_ks
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  random.number
## D = 0.09776, p-value = 0.2948
## alternative hypothesis: two-sided
# Decision
 test_ks$p.value # P válido
## [1] 0.2948086
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]"
### diferencia entre un valor y el otro en un vector
diff(random.number)
##  [1] -0.46869690  0.15932558 -0.23291073  0.35524768 -0.26911515  0.64279179
##  [7] -0.15213698  0.11083518 -0.11854660 -0.40504509 -0.23068880  0.09933342
## [13]  0.67677428 -0.18376683  0.04796759  0.23996863 -0.63874003  0.15605803
## [19] -0.26833094  0.61129264 -0.05358777 -0.18089139 -0.40086263 -0.06535093
## [25]  0.29159587  0.12089923  0.31054764 -0.47366357  0.02548686  0.47627761
## [31] -0.79715070  0.51888642 -0.17527121  0.54006012 -0.02574827 -0.79911123
## [37]  0.09763430  0.57835577 -0.73062345  0.68004182 -0.14834662 -0.20807738
## [43]  0.02444125  0.18494314  0.40478369 -0.09214482 -0.79884982  0.42046791
## [49]  0.27787217  0.17213436 -0.41406352 -0.36844857 -0.03398249  0.03162985
## [55]  0.06286760  0.64148477 -0.76630506  0.61325317 -0.63233564  0.06548164
## [61] -0.13017906  0.22885897  0.64083126 -0.57338910 -0.13553784  0.61076983
## [67] -0.69925500  0.42007581 -0.20637825  0.12285976 -0.26820024  0.77270945
## [73] -0.70382956  0.77048752 -0.44791531 -0.17540191  0.37864331 -0.37550647
## [79]  0.24950987  0.14468697 -0.31159326  0.18232911  0.17644752 -0.08730885
## [85]  0.17357208 -0.63847863  0.47889165 -0.56881453  0.51405045 -0.14769311
## [91] -0.40099333  0.77323226 -0.05816233 -0.83047968  0.35760031 -0.36361260
## [97]  0.93843942 -0.02731669 -0.73611293
S<-ifelse(diff(random.number) > 0, 1, 0) # seuencia de ceros y unos
S
##  [1] 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1
## [39] 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0
## [77] 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 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] 69
mu = (2*length(random.number)-1)/3 # media espearada de corrida 
mu
## [1] 66.33333
varianza <- (16*length(random.number)-29)/90
 
Z <- (corridas-mu)/sqrt(varianza) # valor de la estadística  z
Z
## [1] 0.6382663
# Decisión estadística 

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