def gap_test(alfa=0, beta=1): gaps = [0] * constante.CANT_EXPERIMENTOS i = 0 gap = 0 x_n = gcl_uniforme(constante.SEMILLA) while (i < constante.CANT_EXPERIMENTOS): if ((x_n < alfa) or (x_n >= beta)): gap += 1 else: gaps[i] = gap + 1 i += 1 gap = 0 x_n = gcl_uniforme(x_n) p = beta - alfa gapMax = max(gaps) # agrupo en 11 clases (de la 0 a la 10) observed = [0] * 11 for i in range(10): observed[i] = gaps.count(i + 1) for i in range(10, gapMax + 1): observed[10] += gaps.count(i) expected = [0] * 11 for i in range(10): expected[i] = p * ((1 - p)**(i)) * constante.CANT_EXPERIMENTOS for i in range(10, gapMax + 1): expected[10] += p * ((1 - p)**(i - 1)) * constante.CANT_EXPERIMENTOS print("observed", observed) print("expected", expected) Dsquared, p = stats.chisquare(observed, f_exp=expected) t = stats.chi2.ppf(q=0.95, df=10) print("Aplicamos test chi cuadrado a los resultados de test gap.") print("t: " + str(t)) print("D^2 : " + str(Dsquared)) if (Dsquared < t): print( "ACEPTAMOS la hipotesis con un error del 5% para el gap test con intervalo [{0}, {1}]." .format(alfa, beta)) else: print( "RECHAZAMOS la hipotesis con un error del 5% para el gap test con intervalo [{0}, {1}]." .format(alfa, beta))
def experimento_geometrica(p): # genero numero aleatorios uniformes x_n = constante.SEMILLA empiricos = [] # hago el experimento for _ in range(constante.CANT_EXPERIMENTOS): salio1 = False lanzamientos = 0 while not salio1: x_n = gcl_uniforme(x_n) lanzamientos = lanzamientos + 1 if (x_n >= 1-p) and (x_n < 1): salio1 = True empiricos.append(lanzamientos) return empiricos
def gap_test(alfa, beta): x_n = constante.SEMILLA gaps = [] # array de nro generado gap = 0 i = 0 while i < constante.CANT_EXPERIMENTOS: x_n = gcl_uniforme(x_n) if ((x_n<alfa) or (x_n>=beta)): gap = gap + 1 else: gaps.append(gap) gap = 0 i = i + 1 maxGap = max(gaps) counters = {} for unGap in gaps: if str(unGap) in counters: counters[str(unGap)] = counters[str(unGap)] else: counters[str(unGap)] = 0 # creo array del contenido como tantos gaps existan contadorGaps = [0] * (maxGap) for key, value in counters.iteritems(): print(key) contadorGaps[int(key)] = value print("contadorGaps", contadorGaps, len(contadorGaps)) # creo array para valores esperados valoresEsperados = [0] * (maxGap) for i in range(maxGap): valoresEsperados[i] = obtenerProbabilidadDeGap(alfa, beta, i) * constante.CANT_EXPERIMENTOS print("valoresEsperados", valoresEsperados, len(valoresEsperados)) Dsquared = 0 for key, value in enumerate(contadorGaps): Ei = valoresEsperados[key] Oi = value Dsquared += calcularEst(Oi, Ei) t = stats.chi2.ppf(q=0.95, df=len(valoresEsperados) - 1) print ("Aplicamos test chi cuadrado a los resultados de test gap.") print ("t: " + str(t)) print ("D^2 : " + str(Dsquared)) if (Dsquared < t): print("ACEPTAMOS la hipotesis con un error del 5% para el gap test con intervalo [{0}, {1}].".format( alfa, beta)) else: print("RECHAZAMOS la hipotesis con un error del 5% para el gap test con intervalo [{0}, {1}].".format( alfa, beta))
def generar_histograma(numeros_aleatorios): plt.hist(numeros_aleatorios) plt.title("Histograma GCL") plt.xlabel("Valor") plt.ylabel("Frecuencia") fig = plt.gcf() plotly_fig = tls.mpl_to_plotly( fig ) py.plot(plotly_fig, filename='histograma-gcl') ## resolucion de histograma x_n = constante.SEMILLA numeros_aleatorios = [] for _ in range(constante.CANT_EXPERIMENTOS): x_n = gcl_uniforme(x_n) numeros_aleatorios.append(x_n) generar_histograma(numeros_aleatorios) # RESPUESTA 2 import numpy as np from scipy import stats from math import log import plotly.plotly as py import plotly.graph_objs as go from funciones import gcl_uniforme import constante # Paso 1: Generamos muestras de la variable uniforme U