miércoles, 23 de febrero de 2011

Programar la función que de la distribución de Poisson

Descargar el fichero: poisson.xlsm

Lo primero es ver un Post anterior en este mismo Blog que explica la distribución de Poisson por varios métodos. En este nuevo Post pretendemos programar la propia distribución de Poisson usando VBA (Visual Basic for Applications). Vamos a programar tanto la Poisson como su acumulada.

El Post anterior que conviene leer es este:

Simular con una distribución de Poisson


Método 3

Ahora vamos a programar la Poisson.


Código:

Function xPoisson(x As Byte, Lamda As Byte, Optional acumulado As Boolean) As Double
Dim i As Byte, s As Double
If acumulado = False Then
   xPoisson = Exp(-Lamda) * (Lamda ^ x) / xFact(x)
ElseIf acumulado = True Then
   s = 0
   For i = 0 To x
      s = s + Exp(-Lamda) * (Lamda ^ i) / xFact(i)
   Next i
   xPoisson = s
End If
End Function

Function xFact(num As Byte) As Double
Dim i As Byte
xFact = 1
For i = 1 To num
    xFact = xFact * i
Next i
End Function

También hemos tenido que programar la función que calcula el factorial (xFact).
La función xPoisson tiene tres argumentos, siendo el tercero optativo. Observar en el código el comando Optional.

El tercer argumento es acumulado que puede ser verdadero o falso:


  • Si acumulado es FALSO, o ponemos un 0, o esta vacío nos dará la función de Poisson
  • Si acumulado es VERDADERO, o ponemos un 1, nos dará la función de Poisson acumulada


Método 4

Otro método alternativo para programar la distribución de probabilidad de Poisson es llamar desde la propia macro a la función de Excel.




Código:

Function yPoisson(x As Byte, Lamda As Byte, Optional acumulado As Boolean) As Double
yPoisson = Application.WorksheetFunction.Poisson(x, Lamda, acumulado)
End Function





3 comentarios:

  1. Ante todo le escribo la siguiente para saludarlo y felicitarlo Sr. Aparicio Madrid por el blog que esta bajo su cargo , el fichero de excel poisson.xlsm que esta aqui esta bueno , pero me parece que si le añadiera elementos activex seria más dinámico y se podrian hacer más cosas con el , por ejemplo en analisis de la calidad existe una grafica llamada CO , la cual utiliza distribucion binomial,por mi parte me encuentro haciendo una macro en la cual se puede hacer variar estos valores de manera dinámica.
    Estoy haciendo un blog que se llama http://excelparadummies.blogspot.com , me preguntaba si tendria tiempo de verlo y saber cual es su opinión al respecto.
    Atte. Juan Francisco ,desde Perú.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Secundo lo dicho por Juan Francisco. Sin embargo este post es una excelente herramienta desde donde partir. Muchas gracias Sr Aparicio.

    ResponderEliminar