<jupyter_start><jupyter_text>ESMA 3016 <NAME> Lab15: Distribuciones Continuas:  Uniforme y Exponencial Octubre 2020 La Distribucion Uniforme y su aplicacion a simulacion. $$f(x)=\frac{1}{b-a},$$para $a<x<b$<jupyter_code>from scipy.stats  import uniform,expon,binom
from scipy.integrate import quad
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#El valor de la funcion de densidad uniforme (0,1) en el punto .1
uniform.pdf(.1) 
#La probabilidad acumulada de la Uniforme U(0,1) hasta .1
uniform.cdf(.1)
#La probabilidad de una Uniforme U(0,1) entre .4 y .5 es
uniform.cdf(.5)-uniform.cdf(.4)
#Simulando 10,000 uniformes (0,1) y haciendo su histograma
plt.hist(uniform.rvs(0,1,1000000),density=True)
#Distribucion Uniforme en un intervalo (a,b)=(2,10)
#Hay que usar los parametros loc=a y scale=b-a
#Hallando la funcion de densidad de la uniforme U(2,10) en el punto x=2.5
uniform.pdf(2.5,loc=2,scale=8)
#Grafica de una uniforme U(2,10)
x=np.arange(2,10,.5)
plt.plot(x, uniform.pdf(x,2,8), 'k-', lw=1, label='densidad uniforme')
plt.legend(loc='best', frameon=False)
#Hallando la probabilidad acumulada de la U(2,10) hasta el valor x=6. O sea P(X<6)
uniform.cdf(6,loc=2,scale=8)
#Hallando el percentil correspondiente a una probabilidad de .9
uniform.ppf(.9,loc=2,scale=8)
#ejemplo 5.11.  X es U(0,2) se pide calcular P(1<X<3/2)
plt.fill_between(x=np.arange(0,1,0.01), y1= uniform.pdf(np.arange(0,1,0.01),0,2),facecolor='red',alpha=0.35)
plt.fill_between(x=np.arange(1,1.5,0.01), y1= uniform.pdf(np.arange(1,1.5,0.01),0,2),facecolor='blue',alpha=0.35,label='Probability')
plt.fill_between(x=np.arange(1.5,2,0.01), y1= uniform.pdf(np.arange(1.5,2,0.01),0,2),facecolor='red',alpha=0.35)
plt.legend(loc='best',frameon=False)
prob=uniform.cdf(1.5,0,2)-uniform.cdf(1,0,2)
print("the probability is",prob)<jupyter_output>the probability is 0.25<jupyter_text>Generando al azar n valores de una Bernoulli con parametro p<jupyter_code>#**********************************************************
#Generando al azar n valores de una bernoulli con parametro p
#*********************************************************
def bernoulli(p,m):
    x=[0]*m
    for i in range(m):
        if uniform.rvs(0,1,1)<p:
            x[i]=1 
    return x
bernoulli(.3,20)
#Otra forma
def bernoulli1(p,m):
    b=[uniform.rvs(0,1,1)<p for _ in range(0,m)]
    return [int(x) for x in b]
bernoulli1(.3,20)<jupyter_output><empty_output><jupyter_text>Generando al azar m valores de una binomial con parametros n y p<jupyter_code>#************************************************************
#Generando al azar m valores de una binomial con parametros n y p
#************************************************************
#La suma de n Bernoulli's da una binomial(n,p)
def rbinomial(p,n,m):
    x=[0]*m
    for i in range(m): 
        y=0
        for j in range(n):
            y+=sum(bernoulli(p,1))
        x[i]=y    
    return x
import time
start_time = time.time()
rbinomial(.5,6,10000)
print("--- %s seconds ---" % (time.time() - start_time))
rbinomial(.5,6,20)
#Otra forma
def rbinom1(p,n,m):
    b=[bernoulli1(p,n) for _ in range(0,m)]
    return np.sum(b,axis=1)
start_time = time.time()
rbinom1(.5,6,10000)
print("--- %s seconds ---" % (time.time() - start_time))
rbinom1(.5,6,20)
start_time = time.time()
binom.rvs(6,.5,size=10000)
print("--- %s seconds ---" % (time.time() - start_time))
binom.rvs(6,.5,size=20)<jupyter_output>--- 0.0010311603546142578 seconds ---<jupyter_text>Distribucion exponencial$$f(x)=\frac{1}{\theta}e^{-\frac{x}{\theta}},$$para $x>0$, tambien $\theta>0$<jupyter_code>#***************************************************************************
#simulando una muestra de 200 tiempos de espera en un banco
#se esta considerando que el tiempo de espera promedio es 10 minutos
#los tiempos estan dados en minutos
#******************************************************************************* 
tiempos=expon.rvs(scale=10,size=200)
tiempos
#Generando un histograma de los datos pero de tal manera que el area total sea 1
x=np.arange(0,100,.5)
#Haciendo una comparacion grafica
fig, ax = plt.subplots(1, 1)
ax.hist(tiempos, density = True,alpha=.7)
ax.plot(x, expon.pdf(x,scale=10), 'k-', lw=1, label='densidad exponencial')
ax.legend(loc='best', frameon=False)<jupyter_output><empty_output><jupyter_text>Cual es la probabilidad de que se tenga que esperar mas de 15 minutos para ser atendido?Area bajo la curva mas alla de 15 $$P(x>15)=\int_{15}^{\infty}\frac{1}{10}e^{-\frac{x}{10}}dx$$<jupyter_code>plt.fill_between(x=np.arange(0,30,0.01), y1= expon.pdf(np.arange(0,30,0.01),scale=10),facecolor='red',alpha=0.35)
plt.fill_between(x=np.arange(15,30,0.01), y1= expon.pdf(np.arange(15,30,0.01),scale=10),facecolor='blue',alpha=0.35,label='Probability')
plt.legend(loc='best', frameon=False)
#Calculando aproximadamente la integral
def integrando(x):
    return np.exp(-x/10)/10
quad(integrando,15,np.Inf)<jupyter_output><empty_output><jupyter_text>El primer valor es el resultado de la integral y el segundo es el error del resultado<jupyter_code>#Haciendolo por complemento=1-area hasta 15 y usando la densidad exponencial
1-expon.cdf(15,scale=10)
#Estimando la probabilidad
probest=len(tiempos[tiempos>15])/float(200)
probest
#X=Tiempo de la duracion de la compoente , que es una Exponencial con parametro 100
#P(50<X<100)
plt.fill_between(x=np.arange(0,50,0.01), y1= expon.pdf(np.arange(0,50,0.01),scale=100),facecolor='red',alpha=0.35)
plt.fill_between(x=np.arange(50,100,0.01), y1= expon.pdf(np.arange(50,100,0.01),scale=100),facecolor='blue',alpha=0.35,label='Probability')
plt.fill_between(x=np.arange(100,500,0.01), y1= expon.pdf(np.arange(100,500,0.01),scale=100),facecolor='red',alpha=0.35)
plt.legend(loc='best', frameon=False)
proba=expon.cdf(100,scale=100)-expon.cdf(50,scale=100)
proba<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.22298221614227087, 'fraction_numerical': 0.06925444596443228, 'mean_word_length': 6.274875621890548, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 28, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '252084', 'license': 'MIT', 'n_tokens_mistral': 2557, 'n_tokens_neox': 2297, 'n_words': 486, 'path': 'Notebooks/Lab15v3.ipynb', 'repo_name': 'eacunafer/DataAnalysiswithPython3', 'size': '5853'}