2012-03-09 15 views
5

¿Es posible definir su propia función de densidad de probabilidad en MATLAB u Octave y usarla para generar números aleatorios?Definición de su propia función de distribución de probabilidad en matlab

MATLAB y Octave tienen funciones predeterminadas como rand, randn integradas para dibujar puntos al azar desde un uniforme, o distribuciones normales, pero parece que no hay documentación sobre cómo definir mi propia función de densidad de probabilidad.

Respuesta

8

El muestreo de una distribución aleatoria arbitraria no siempre es trivial. Para las distribuciones bien conocidas, hay trucos para implementarlos y la mayoría de ellos se implementan en la caja de herramientas de estadísticas como dijo Oli.

Si su distribución de interés es de forma difícil, hay muchos algoritmos de muestreo que pueden ayudarlo, como, rejection sampling, muestreo de sectores, Metropolis–Hastings algorithm.

Si su distribución es discreta, o puede ser aproximada por una distribución discreta bastante bien, entonces puede hacer muestreos multinomiales usando randsamp.

+0

+1 para la respuesta MCMC. – YBE

1

Si tiene la caja de herramientas de estadísticas, puede usar random(), ya que tiene una gran cantidad de PDF útiles incorporados.

1

He tenido que hacer eso algunas veces recientemente, y no es exactamente una cosa fácil de lograr. Mi técnica favorita fue usar Inverse transform sampling.

La idea es bastante simple:

  1. crear una función de distribución
  2. utilizar un generador de números aleatorios uniformes.
  3. identifique la RV que se correlaciona con su valor de cdf.
Cuestiones relacionadas