Documentaciónexacta(lambda, k)

exacta(λ,k)\texttt{exacta}(\lambda, k)

Nombre

exacta - Calcula la probabilidad de observar exactamente k eventos.

Sinopsis

p = poisson.exacta(lambda, k)

Descripcion

Calcula la probabilidad exacta de la distribucion de Poisson para el caso P(X = k).

La variable lambda representa el numero promedio de eventos por intervalo y k la cantidad exacta de eventos observados.

Formula:

P(X=k)=eλλkk!P(X = k) = e^{-\lambda}\frac{\lambda^k}{k!}

Validaciones y casos borde

  • Valida que lambda sea mayor o igual que 0.
  • Valida que k sea entero.
  • Si alguna de esas condiciones falla, emite ERROR().
  • Si k < 0, retorna 0.
  • Si lambda = 0, retorna 1 cuando k = 0 y 0 cuando k > 0.

Comportamiento

  • Parte de la base P(X=0)=eλP(X = 0) = e^{-\lambda}.
  • Para k > 0, acumula el resultado iterativamente.
  • Retorna un NUMERICO con la probabilidad exacta.

Funciones API relacionadas

  • poisson.menor()
  • poisson.mayor_igual()

Parámetros

ParámetroTipoDescripción
lambdaNUMERICOMedia esperada de eventos de la distribucion de Poisson.
kNUMERICOValor entero objetivo: indice, cantidad de exitos o cantidad de eventos.

Valor de retorno

NUMERICO - Probabilidad exacta calculada para P(X = k).

Ejemplo

ejemplo.blox
// Condiciones de la distribución de Poisson

// 1. Eventos independientes: La ocurrencia de un evento no afecta la probabilidad 
//    de que ocurra otro evento.
// 2. Tasa de ocurrencia constante: La tasa promedio de eventos (lambda) no 
//    cambia durante el período de interés.
// 3. Aleatoriedad: Los eventos ocurren de forma aleatoria y no están influenciados 
//    por ningún patrón.
// 4. Eventos no simultáneos: Dos eventos no pueden ocurrir exactamente en el mismo 
//    instante.
// 5. Probabilidad constante: La probabilidad de un éxito es la misma en cualquier 
//    intervalo de igual longitud.
// 6. Conteo de eventos: Los datos son recuentos de eventos (números enteros no 
//    negativos).


// Ejemplo 1
// --------------------
// En una central de atención al cliente, históricamente se observa que llegan en 
// promedio 9 llamadas por minuto. Suponiendo que las llamadas llegan de manera 
// aleatoria y cumplen las condiciones de la distribución de Poisson, se desea 
// analizar la probabilidad de recibir distintos números de llamadas en un minuto.
// 
// Implementar un programa que modele y grafique la distribución de Poisson para 
// una tasa promedio de ocurrencia λ = 9, calculando y mostrando la función de 
// probabilidad 𝑃(𝑋=𝑘) para valores enteros de 𝑘.
// 

INCLUIR "poisson.api"
INCLUIR "vectores.api"
INCLUIR "graficos.api"
INCLUIR "tablas.api"


FUNCION PRINCIPAL
INICIO "Poisson - Graficos multiples (offset)"

    NUMERICO lambda, k_marcado
    NUMERICO k_max, k_max1
    NUMERICO i

    // --- Parámetros de la distribución ---
    lambda = 9.0
    k_marcado = 8          // valor que querés resaltar

 
    // Elegimos un rango razonable para graficar: [0 .. k_max]
    // Regla simple: λ ± 4*sqrt(λ)
    //
        NUMERICO rango
        rango = 4 * RAIZ(lambda) 
        k_max = ENTERO(lambda + rango)
        SI (k_max < k_marcado) ENTONCES
            k_max == k_marcado + 3
        FIN_SI

        k_max1 = k_max + 1

    // --- Vectores base ---
    //
        VECTOR Ks_total[k_max1]
        VECTOR Pmf[k_max1]


    // Llenar Ks y PMF con P(X = k)
    PARA i = 0 HASTA k_max HACER
        Ks_total[i] = i 
        Pmf[i]  = poisson.exacta(lambda, i)
    FIN_PARA

 

    IMPRIMIR ("Distribucion Poisson (lambda = ", lambda, ")\n")
    vectores.imprimir(Pmf)


    // --- Datos para graficar ---
    // 
        TABLA datos, G, serie_total, eje_x, eje_y

        serie_total = {
            tipo = "barras",
            x = Ks_total, y = Pmf,
            trazo = "continuo",
            bar_width = 0.90,
            color = "#124ae3",
            grosor = 1
        }

        datos[1]["total"] = serie_total[1]



    // --- Autoscale sencillo de X, Y, cuadricula ---
    //
        TABLA ret
        ret = graficos.bar_autoescala(Pmf)

    // --- Montaje de los ejes ---
    //
        eje_x = {
            nombre     = "Valores de k",
            min        = ret[1].xmin,
            max        = ret[1].xmax,
            cuadricula = ret[1].cuadx
        }

        eje_y = {
            nombre      = "P(X = k)",
            orientacion = "vertical",
            min         = ret[1].ymin,
            max         = ret[1].ymax,
            cuadricula  = ret[1].cuady
        }

    // --- Etiquetas ---
    //
        STRING v_etiquetas[k_max1]
        
        PARA i = 0 HASTA k_max HACER
            v_etiquetas[i+1] = UNIR(Pmf[i])     // convierte a string
        FIN_PARA

        TABLA t_etiquetas
        t_etiquetas = { mostrar=VERDADERO, texto = v_etiquetas, orientacion = -06, fuente=16, esp=1, color="#000000FF" }


    // --- Preparacion del Grafico ---
    //
    G = {
      tipo      = "barras",
      titulo    = UNIR("Distribucion Poisson (lambda = ", lambda, ")")
      etiquetas = t_etiquetas,
      ejex      = VERDADERO, ejey  = VERDADERO,
      abscisas  = eje_x, ordenadas = eje_y,
      datos     = datos,
      ancho     = 960, alto      = 540, margen    = 100,
      archivo   = "PROG95-2 - POISSON - ejemplo1.png"
    }

    GRAFICAR(G[1])
 

FINAL