Es común utilizar pesos en aplicaciones como el modelado de mezclas y combinar linealmente funciones de base. Los pesos $w_i$ a menudo deben obedecer $w_i \geq 0$ y $\sum_{i} w_i = 1$. Me gustaría elegir al azar un vector de pesos $\mathbf{w} = (w_1, w_2, …)$ de una distribución uniforme de tales vectores.
Puede ser tentador usar $w_i = \frac{\omega_i}{\sum_{j} \omega_j}$ donde $\omega_i \sim$ U(0, 1), sin embargo, como se discute en los comentarios a continuación, la distribución de $\mathbf{w}$ no es uniforme.
Sin embargo, dado el constraint $\sum_{i} w_i=1$, parece que la dimensionalidad subyacente del problema es $n-1$, y debería ser posible elegir un $\mathbf{w}$ eligiendo $n-1$ parámetros según alguna distribución y luego calculando el $\mathbf{w}$ correspondiente a partir de esos parámetros (porque una vez que se especifican $n-1$ de los pesos, el peso restante está completamente determinado).
El problema parece ser similar al problema de selección de puntos en una esfera (pero, en lugar de elegir vectores tridimensionales cuya norma $_2$ sea unidad, quiero elegir vectores $n$-dimensionales cuya norma $_1$ sea unidad).
¡Gracias!
3 votos
Tu método no genera un vector uniformemente distribuido en el simplex. Para hacer lo que deseas de manera correcta, la forma más directa es generar $n$ variables aleatorias independientes e idénticamente distribuidas $\mathrm{Exp}(1)$ y luego normalizarlas por su suma. Podrías intentar hacerlo encontrando algún otro método para generar solo $n-1$ variables directamente, pero tengo mis dudas sobre el compromiso de eficiencia ya que las variables $\mathrm{Exp}(1)$ pueden generarse muy eficientemente a partir de variables $U(0,1)$.
0 votos
Una cosa interesante a tener en cuenta es que si uno está buscando generar pesos "sesgados" también, la distribución uniforme no funcionará. Desde el espacio $[0, 1]^n$, la probabilidad de obtener un peso sesgado disminuye rápidamente a 0 a medida que $n$ aumenta.