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"