Es común usar pesos en aplicaciones como el modelado de mezclas y combinar linealmente funciones básicas. Los pesos menudo deben obedecer 0 y . Me gustaría elegir aleatoriamente un vector de peso de una distribución uniforme de dichos vectores.
Puede ser tentador usar dondeU (0, 1), sin embargo, como se analiza en los comentarios a continuación, la distribución deno es uniforme.
Sin embargo, dada la restricción , parece que la dimensionalidad subyacente del problema es , y que debería ser posible elegir a eligiendo parámetros n-1 de acuerdo con alguna distribución y luego calcular el \ mathbf {w} correspondiente a partir de esos parámetros (porque una vez que se especifica n-1 de los pesos, el peso restante está completamente determinado).
El problema parece ser similar a la punto esfera recoger problema (pero, en lugar de recoger 3-vectores cuyos norma es la unidad, quiero recoger -vectors cuyos norma es la unidad).
¡Gracias!
fuente
Respuestas:
Elija uniformemente (por medio de n - 1 reales uniformes en el intervalo [ 0 , 1 ] ). Ordene los coeficientes de modo que 0 ≤ x 1 ≤ ⋯ ≤ x n - 1 . Conjuntox∈[0,1]n−1 n−1 [0,1] 0≤x1≤⋯≤xn−1
Como podemos recuperar la ordenada por medio de las sumas parciales de w i , el mapeo x → w es ( n - 1 ) . a 1; en particular, su imagen es el n - 1 simplex en R n . Debido a que (a) cada intercambio en una especie es una transformación lineal, (b) la fórmula anterior es lineal y (c) las transformaciones lineales preservan la uniformidad de las distribuciones, la uniformidad de x implica la uniformidad de w en el n - 1 simplex.xi wi x→w (n−1)! n−1 Rn x w n−1 En particular, tenga en cuenta que los marginales de no son necesariamente independientes.w
Este gráfico de puntos 3D muestra los resultados de 2000 iteraciones de este algoritmo para . Los puntos se limitan al simplex y se distribuyen aproximadamente de manera uniforme sobre él.n=3
Debido a que el tiempo de ejecución de este algoritmo es , es ineficiente para n grande . ¡Pero esto responde la pregunta! Una mejor manera (en general) de generar valores distribuidos uniformemente en el n - 1 -simplex es dibujar n reales uniformes ( x 1 , ... , x n ) en el intervalo [ 0 , 1 ] , calcularO(nlog(n))≫O(n) n n−1 n (x1,…,xn) [0,1]
(que hace que cada positiva con probabilidad 1 , de donde su suma es casi seguramente distinto de cero) y conjuntoyi 1
Esto funciona porque cada tiene una distribución Γ ( 1 ) , lo que implica que w tiene una distribución Dirichlet ( 1 , 1 , 1 ) , y eso es uniforme.yi Γ(1) w (1,1,1)
fuente
La primera entrada se pone a cero para su identificación; Vería que se hace en modelos logísticos multinomiales. Por supuesto, en modelos multinomiales, también tendría covariables debajo de los exponentes, en lugar de solo los
zz
s aleatorios . La distribución dezz
s es la distribución de valor extremo; necesitarías esto para asegurarte de que los pesos resultantes estén en el lugar en el que inicialmente pusernorm
als allí, pero luego tuve la sensación de que esto no va a funcionar.fuente
La solución es obvia. El siguiente código MathLab proporciona la respuesta para 3 pesos.
fuente