Generando variables aleatorias que satisfacen restricciones


9

Necesito generar una lista de variables aleatorias sujetas a restricciones que se pueden expresar en la forma donde es una matriz si tiene entradas. En todos los casos con los que estoy tratando, , por ejemplo, será de alrededor de 14,000 será de 50. No estoy seguro de qué método utilizaré para el muestreo aleatorio, ya sea normal o uniforme, no es claro cuál es el mejor para el problema que estoy tratando de resolver, pero necesito que todas las variables se muestreen a partir de distribuciones con la misma media y rango / varianza.E x = b E m × n x n n > > m n mxEx=bEm×nxnn>>mnm

Lo que he estado haciendo para resolver esto es reducir a la forma escalonada, establecer todas las variables correspondientes a las columnas a la derecha del último pivote a valores aleatorios, y luego resolver la igualdad de la matriz cuadrada restante.E

Sin embargo, hay un problema, para resolver la igualdad de la matriz cuadrada, restamos los valores ya establecidos del lado derecho. Desafortunadamente, las variaciones también se suman, por lo que mis últimos 50 valores tienden a variar enormemente, lo que desafortunadamente es inaceptable en este problema.

¿Hay una mejor manera de hacer esto? No puedo pensar en una manera de arreglar el método actual que estoy usando. Yo uso R.


2
Desafortunadamente, no podrá hacer esto, a menos que tenga mucha suerte con su matriz de restricciones. Por ejemplo, considere una matriz de restricción con dos filas, una entrada distinta de cero en la primera fila que restringe y dos entradas distintas de cero en la segunda fila que restringen . Obviamente, tendrá una media diferente que al menos una de y , y a menos que establezca las varianzas para y , también una varianza diferente. x 2 + x 3 = 1 x 1 x 2 x 3 x 2 x 3 = 0x1=0x2+x3=1x1x2x3x2x3=0
jbowman

Respuestas:


1

Este paquete de papel y R resolvió completamente mi problema. Utiliza el método de Markov Chain Monte Carlo, que se basa en el hecho de que si puede encontrar una solución inicial de la restricción, a través de la programación lineal, puede encontrar un número arbitrario de ellos utilizando una matriz que cuando se multiplica por , las restricciones , da cero. Lea sobre esto aquí:E

http://www.vliz.be/imisdocs/publications/149403.pdf

y aquí está el paquete:

http://cran.r-project.org/web/packages/limSolve/index.html


1
vliz.be/imisdocs/publications/149403.pdf parece no estar disponible, actualice el enlace
eee

0

Puede parecer trivial (y no terriblemente eficiente en la máquina), pero considere repetir el proceso hasta obtener una respuesta adecuada. Preferiblemente solo modifica un subconjunto más pequeño cada vez.

¿Puedes crear una medida de "distancia" para saber qué tan lejos estás de tu respuesta ideal? ¿Podría ayudarlo a "optimizar"?


Podría probar eso. Un problema es que aún tendría que asegurarme de que la forma de la distribución sea la misma. También las limitaciones de tiempo serán prohibitivas.
Mike Flynn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.