5 votos

La máxima entropía sampler

Quiero una muestra de una distribución que se ha fijado para un determinado valores de la media(=0), desviación estándar (de=1), asimetría(=0) y la curtosis. Yo también quiero que esta distribución sea tan general como sea posible, es decir, han de Kullback-Leibler divergencia a partir de una distribución uniforme tan pequeño como sea posible (esta condición es equivalente al principio de Máxima Entropía), así como la distribución normal sería que la curtosis=3.

Yo sé, que muy probablemente no hay ninguna esperanza de tener la forma cerrada para dicha distribución en el caso general. Sólo estoy interesado en el muestreo de la misma. Acepto razonable aproximaciones numéricas.

No estoy demasiado preocupado con la eficiencia puedo esperar 2 días a que acaba de 2000 muestras.

Años de edad, me escribió una especie de algoritmo genético para abordar este problema:

  1. Comience con una muestra aleatoria de 2000 los valores muestreados de la distribución uniforme, el cual será llamado más tarde de la población.
  2. Crear muchos (alrededor de 100), las variantes de la población, quite primero la submuestra aleatoria de - digamos - de 200 muestras de la población y, a continuación, vuelva a insertar el mismo número de números aleatorios de muestreo de una distribución uniforme.
  3. Encontrar la variante que tiene una media, sd, la asimetría y la curtosis tan cerca como sea posible a los parámetros de destino (elección de la métrica no debe ser crucial para este algoritmo, ya que todas las condiciones son independientes el uno del otro).
  4. Continúe en el paso 2 con la población, siendo la mejor elegido la variante desde el paso 3.

El algoritmo es lento, pero al final el resultado es lo que yo entiendo por una buena aproximación de la distribución de máxima entropía.

Es este algoritmo correcto? O hay alguna mejor método para llegar generales leptokurtic de las distribuciones?

13voto

Vincent Zoonekynd Puntos 1028

Usted puede buscar para una distribución discreta, con la deseada cuatro primeros momentos, y con la máxima entropía posible. Luego puede interpolar la función de distribución acumulativa para muestra de ello.

En R, se puede hacer de la siguiente manera.

kurtosis <- 3
n <- 100
x <- seq(-5,5,length=n)
dx <- mean(diff(x))
# Opposite of the Entropy, to minimize
f <- function(p) sum( p * log(p) )
# The first moments
g <- function(p) c( sum(p)*dx, sum(x*p)*dx, sum(x^2*p)*dx, sum(x^3*p)*dx, sum(x^4*p)*dx )
# Maximize the entropy subject to those constraints
library(Rsolnp)
r <- solnp( 
  rep(1/n,n), 
  f,           # Function to minimize
  eqfun = g,   # Equality constraints
  eqB   = c(1, mean=0, var=1, skewness=0, kurtosis),
  LB=rep(0,n), UB=rep(1,n) 
)
# Beware: it is not very precise at the boundaries of the interval
plot(x, r$pars, type="l", log="y", las=1)
lines(x, dnorm(x), lty=3)
# Sample from the corresponding distribution
q <- approxfun( c(0,cumsum(r$pars)*dx), c(x[1]-dx,x) )
r <- function(n) q(runif(n))
qqnorm(r(1e4))

1voto

StasK Puntos 19497

Si sólo tiene el aplanamiento de la cuestión a la dirección, puede utilizar el Estudiante $t$-distribución con $\nu$ grados de libertad que tiene la curtosis de $6/(\nu-4)$$\nu>4$. También habría que normalizar la varianza a 1 (que es igual a $\nu/(\nu-2)$ para el original Estudiante de distribución).

Si usted va a estar bien con distribuciones discretas, usted puede tener una distribución con soporte en $\{-1/2, -x, x, 1/2\}$ con las probabilidades correspondientes a $(1-p)/2, p/2, p/2, (1-p)/2$. Tiene 0 impar momentos, su varianza es $p x^2 + (1-p)/4 = 1/4 + p(x^2-1/4)$, por lo que la relación entre el $x$ $p$ sería $$p(x^2-1/4)=3/4, \quad p=\frac3{4x^2-1}, \quad x=\sqrt{\frac3{4p}+\frac14}.$$ Finally, it has the fourth moment $$1/16 (1-p)/2 + p x^4 = \frac{1-p}{32} + \frac{(3p+1)^2}{16p}=\frac{19p^2+11p+2}{32p},$$ which is also its kurtosis by virtue of the unit variance, for $0\le p\le 1$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X