Documentaciónmenor(lambda, k)

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

Nombre

menor - Calcula la probabilidad de observar menos de k eventos.

Sinopsis

p = poisson.menor(lambda, k)

Descripcion

Calcula la probabilidad acumulada P(X < k) para una distribucion de Poisson.

La variable lambda representa el numero promedio de eventos por intervalo y k el umbral superior no incluido en la suma.

Formula:

P(X<k)=i=0k1P(X=i)P(X < k) = \sum_{i=0}^{k-1} P(X = i)

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 para todo k > 0, porque el unico caso con probabilidad no nula es X = 0.

Comportamiento

  • Recorre los valores desde 0 hasta k - 1.
  • Usa internamente poisson.exacta(lambda, i) en cada termino.
  • Retorna un NUMERICO con la probabilidad acumulada.

Funciones API relacionadas

  • poisson.exacta()
  • 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 acumulada para P(X < k).

Ejemplo

ejemplo.blox
// Ejemplo 2
// --------------------
// En un call center se estima que llegan en promedio 9 llamadas por minuto. 
// Se modela la cantidad de llamadas por minuto con una distribución de Poisson 
// con parámetro:
//
// 𝜆 = 9.0
//
// El supervisor define como valor crítico:
//
// 𝑘_𝑚𝑎𝑟𝑐𝑎𝑑𝑜 = 8
//
// porque quiere evaluar si el volumen de llamadas está por debajo, exactamente 
// en, o por encima de ese valor (por ejemplo, para decidir si conviene reforzar 
// operadores).
//




INCLUIR "poisson.api"
INCLUIR "vectores.api"
INCLUIR "graficos.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 Ks_menor[k_max1]
        VECTOR Ks_igual[k_max1]
        VECTOR Ks_mayor[k_max1]

        VECTOR Pmf[k_max1]
        VECTOR P_menor[k_max1]
        VECTOR P_igual[k_max1]
        VECTOR P_mayor[k_max1]


    // Llenar Ks y PMF con P(X = k)
    //
    PARA i = 0 HASTA k_max HACER
        Ks_total[i] = i  
        Ks_menor[i] = i 
        Ks_igual[i] = i 
        Ks_mayor[i] = i 

        Pmf[i]  = poisson.exacta(lambda, i)
    FIN_PARA

    // Partición en tres regiones: <k, =k, >k
    //
    PARA i = 0 HASTA k_max HACER

        P_menor[i] = SI (i < k_marcado)  VALOR Pmf[i] SINO 0
        P_igual[i] = SI (i == k_marcado) VALOR Pmf[i] SINO 0
        P_mayor[i] = SI (i > k_marcado)  VALOR Pmf[i] SINO 0

    FIN_PARA

    // --- Probabilidades numéricas clave ---
    //
        NUMERICO p_igual, p_menor, p_mayor_igual

        p_igual       = poisson.exacta(lambda, k_marcado)
        p_menor       = poisson.menor(lambda, k_marcado)
        p_mayor_igual = poisson.mayor_igual(lambda, k_marcado)

    IMPRIMIR ("Distribucion Poisson (lambda = ", lambda, ")\n")
    IMPRIMIR ("k marcado = ", k_marcado, "\n\n")
    IMPRIMIR ("P(X =  ", k_marcado, ") = ", p_igual, "\n")
    IMPRIMIR ("P(X <  ", k_marcado, ") = ", p_menor, "\n")
    IMPRIMIR ("P(X >= ", k_marcado, ") = ", p_mayor_igual, "\n\n")


    // ====================================================
    //   GRAFICO: multiples series con Ks desplazados
    // ====================================================

    TABLA datos, G, serie_total, serie_menor, serie_igual, serie_mayor
    TABLA eje_x, eje_y


    // Serie 1: toda la distribucion P(X=k)
    //
        serie_total = {
            tipo      = "barras",
            x         = Ks_total,
            y         = Pmf,
            trazo     = "continuo",
            bar_width = 0.90,             // No mostrar
            color     = "#fcf803",
            grosor    = 1
        }

    // Serie 2: parte X < k
    //
        serie_menor = {
            tipo      = "barras",
            x         = Ks_menor,
            y         = P_menor,
            trazo     = "continuo",
            bar_width = 0.90,
            color     = "#e31212",
            grosor    = 1
        }

    // Serie 3: barra puntual en X = k
    //
        serie_igual = {
            tipo      = "barras",
            x         = Ks_igual,
            y         = P_igual,
            trazo     = "continuo",
            bar_width = 0.90,
            color     = "#124ae3",
            grosor    = 1
        }

    // Serie 4: parte X > k
    //
        serie_mayor = {
            tipo      = "barras",
            x         = Ks_mayor,
            y         = P_mayor,
            trazo     = "continuo",
            bar_width = 0.90,
            color     = "#e312bd",
            grosor    = 1
        }

    // --- Montaje de los datos ---
    //
    //datos[1]["total"] = serie_total[1]
    datos[1]["X<k"]   = serie_menor[1]
    datos[1]["X=k"]   = serie_igual[1]
    datos[1]["X>k"]   = serie_mayor[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" }



    STRING titulo
    titulo = UNIR("Distribucion Poisson (lambda = ", lambda, ")")

    // --- Preparacion del Grafico ---
    //
        G = {
          tipo      = "barras",
          titulo    = titulo,
          etiquetas = t_etiquetas,
          leyenda   = { mostrar = 1, posicion = "e" },
          ejex      = VERDADERO,
          ejey      = VERDADERO,
          abscisas  = eje_x,
          ordenadas = eje_y,
          datos     = datos,
          ancho     = 960,
          alto      = 540,
          margen    = 100,
          archivo   = "PROG95-2 - POISSON - ejemplo2.png"
        }

    GRAFICAR(G[1])

FINAL