Está en la página 1de 5

CongruencialMixto= function(a,b,m,Xo,n)

vectorc =c();

vectorp =c();

for(i in 1:n)

X1=(a*Xo + b) %% m;

vectorc[i]=X1;

#genera el numero pseudoaleatorio

vectorp[i]=(vectorc[i]/m);

vectorc[i];

vectorp[i];

#actualizar el valor de Xo

Xo=X1;

return(vectorp);

TEST CHI CUADRADO


TestChiCuadrado= function(Datos,n,k)

#se imprimes los datos y se inicializa arreglo que mantendra a las clases

print(Datos)

vecC= c(1:k);

vecC= vecC*0;

#agrupa los valores en "K" clases con intervalos entre 0 y 1

for(i in 1:n)

for(j in 1:k)

#calcula los intervalos donde se almacenaran los datos


if(Datos[i]>=(1/k)*(j-1) && Datos[i]<(1/k)*j)

#contador para saber cuantos datos hay por intervalo

vecC[j]=vecC[j]+1;

print(" N por intervalos ");

print(vecC);

#realiza el calculo del estadistico X'2

vecC=(vecC-(n/k))^2/(n/k);

#imprime resultads parciales

print(" Estadistico x2 ");

print(vecC);

#imprime el valor de X'2

print(" Suma X2 ");

return(sum(vecC));

TEST KOLMOGOROV-SMIRNOV
kolmogorov= function(datos,n)

print(datos);

vecC= c(0:n);

#ordenamos los datos de manera ascedente antes de procesarlos

datos=sort(datos);

#calcula distribucion acumulada vecC es la posicion del numero Xi

#luego utilizaremos los resultados para calcular la las distribuciones

#positiva y negativa.

vecC= vecC/n;

vecA=c();
vecB=c();

#calculamos las distribuciones positiva y negativa utilizando la distribucion acuulada

#Calcula la distribucion positiva

for(i in 1:n)

vecA[i]=vecC[i+1]-datos[i];

#calcula distribucion negativa

for(j in 1:n)

vecB[j]=datos[j]-vecC[j];

#Si los valores de las distribuciones son negativos

#multiplicaremos los valores por -1

for(m in 1:n)

if(vecA[i]<0)

{vecA[i]=vecA[i]*-1;}

for(m in 1:n)

if(vecB[i]<0)

{vecB[i]=vecB[i]*-1;}

#ordenamos los resultads de las distribuciones para calcular de mejor forma el valor mayor

#que sera el valor de test final

vecA=sort(vecA);

vecB=sort(vecB);
print(" Distribucion+");

print(vecA[n]);

print(" Distribucion-");

print(vecB[n]);

#calculamos el valor mayor o maximo de los vectores que almacenas las distribuciones

if(vecA[n]<vecB[n])

{print("Mayor:")

print(vecB[n]);}

else

{print("Mayor:")

print(vecA[n]);}

#Verificamos si el estadistico "KS" pasa o no la prueba

#comparando el resultado con los valores de la tabla de kolmogorov

if(vecA[n]<0.56328)

print("Pasa el test a 5%")

else

print("No pasa el test a 5%")

if(vecA[n]<0.50945)

print("Pasa el test a 10%")

else

print("No pasa el test a 10%")

if(vecA[n]<0.44698)
{

print("Pasa el test a 20%")

else

print("No pasa el test a 20%")

#usamos un generador congruencial mixto con 50 datos pues para chi cuadrado

#el numero de datos debe de ser mayor a 25 y luego calculamos el estadistico

arreglo = CongruencialMixto(6,0,13,1,50)

TestChiCuadrado(arreglo,50,6)

#usando los ejemplos de la diapositiva llenamos el vector arr para procesarlo

#el ejemplo se agregara en un pdf

arr = c(0.958, 0.943, 0.933, 0.884, 0.224, 0.994, 0.597, 0.455, 0.454, 0.44, 0.288, 0.649, 0.97,
0.781, 0.369, 0.751, 0.387, 0.123, 0.926, 0.032, 0.376, 0.526, 0.162, 0.725, 0.922, 0.714, 0.017,
0.861, 0.742, 0.946, 0.915, 0.798, 0.166, 0.426, 0.263, 0.52)

TestChiCuadrado(arr,36,6)

#Usamos de igual manera el generador congruencial

kolmogorov(arreglo,5)

#usamos los datos de la diapositivo que se adjuntara al trabajo

arr1 = c(0.05, 0.93, 0.14, 0.44, 0.81)

kolmogorov(arr1,5)

También podría gustarte