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


