En este experimento se trata de ver cómo evolucionan las congruencias módulo 9 de los números primos mayores o iguales que 5. Se constata que estas solo pueden ser 1, 2, 4, 5, 7 y 8 (no aparecen 0, 3 o 6) y se observan ciertas curiosidades.
NOTA: El siguiente script se debe ejecutar paso a paso.
NOTA: El siguiente script se debe ejecutar paso a paso.
#INICIO -------------------------
rm(list=ls(all=TRUE))
library(primes) #Cargamos el paquete "primes" que genera números primos
#Generamos los primos entre 5 y 1000000 y sus congruencias módulo 9
x<-generate_primes(min=5,max=1000000)
congru9<-x%%9
#Obtenemos las frecuencias de aparición de las congruencias módulo 9 de los primos generados
v<-round(table(congru9)/sum(table(congru9)),3)
#Las seis congruencias aparecen con la misma frecuencia
v
#Aplicamos un test de rachas para ver si en la serie congru9 existe un cierto patrón. Cargamos el paquete "tseries"
library(tseries)
runs.test(as.factor(congru9>median(congru9)))
#Como el p-valor es muy pequeño se rechaza la hipótesis nula y
#se concluye que no hay una completa aleatoriedad en los valores congru9
#Aplicamos un test de rachas para ver si en la serie congru9 existe un cierto patrón. Cargamos el paquete "tseries"
library(tseries)
runs.test(as.factor(congru9>median(congru9)))
#Como el p-valor es muy pequeño se rechaza la hipótesis nula y
#se concluye que no hay una completa aleatoriedad en los valores congru9
#Veamos qué congruencias siguen a 1, 2, 4, 5, 7 y 8
a1<-congru9[which(congru9==1)+1]
a2<-congru9[which(congru9==2)+1]
a4<-congru9[which(congru9==4)+1]
a5<-congru9[which(congru9==5)+1]
a7<-congru9[which(congru9==7)+1]
a8<-congru9[which(congru9==8)+1]
par(mfrow=c(2,3))
t1<-round(table(a1)/sum(table(a1)),3);t1
plot(t1)
#Como se ve en el gráfico, tras el 1 el valor más frecuente es 5
#Curiosidad: 1+5 ≡ 6 (mod 9)
t2<-round(table(a2)/sum(table(a2)),3);t2
plot(t2)
#Como se ve en el gráfico, tras el 2 el valor más frecuente es 4
#Curiosidad: 2+4 ≡ 6 (mod 9)
t4<-round(table(a4)/sum(table(a4)),3);t4
plot(t4)
#Como se ve en el gráfico, tras el 4 el valor más frecuente es 8
#Curiosidad: 4+8 ≡ 3 (mod 9)
t5<-round(table(a5)/sum(table(a5)),3);t5
plot(t5)
#Como se ve en el gráfico, tras el 5 el valor más frecuente es 7
#Curiosidad: 5+7 ≡ 3 (mod 9)
t7<-round(table(a7)/sum(table(a7)),3);t7
plot(t7)
#Como se ve en el gráfico, tras el 7 el valor más frecuente es 2
#Curiosidad: 7+2 ≡ 0 (mod 9)
t8<-round(table(a8)/sum(table(a8)),3);t8
plot(t8)
#Como se ve en el gráfico, tras el 8 el valor más frecuente es 1
#Curiosidad: 8+1 ≡ 0 (mod 9)
#Analizamos ahora las frecuencias de los incrementos entre dos congruencias consecutivas
m<-diff(congru9)
y<-round(table(m)/sum(table(m)),3)
y
#La diferencia más frecuente es -3
#La diferencia más frecuente es -3
vector<-c(1,2,4,5,7,8)
ss<-lapply(rev(vector),'-',rev(vector))
g1<-ss[[1]];g2<-ss[[2]];g3<-ss[[3]];g4<-ss[[4]];g5<-ss[[5]];g6<-ss[[6]]
sss<-matrix(c(g1,g2,g3,g4,g5,g6),nrow=6,byrow=T)
rownames(sss)<-vector;colnames(sss)<-vector
rownames(sss)<-vector;colnames(sss)<-vector
ssss<-round(table(sss)/sum(table(sss)),3)
#Posibles saltos (incrementos) entre dos congruencias consecutivas
#Por ejemplo, un salto de -4 se puede dar de 5 a 1 o de 8 a 4, etc.
sss
#Frecuencias de los saltos si hubiera completa aleatoriedad
ssss
#Frecuencias de los saltos si hubiera completa aleatoriedad
ssss
windows()
#El salto más frecuente, como ya habíamos visto, es -3 (barras azules)
#Las barras rojas representan las frecuencias de los saltos (ssss) si el paso de una congruencia a otra fuera completamente aleatorio
barplot(t(cbind(y,ssss)),beside=T,col=c("blue","red"))
#Alternativamente podemos hacer lo siguiente:
par(mfrow=c(1,2))
plot(y, col='blue')
plot(ssss,col='red')
#FIN -------------------------
No hay comentarios:
Publicar un comentario