J'ai besoin de générer une liste de variables aléatoires soumises à des contraintes qui peuvent être exprimées sous la forme où est une matrice m \ fois n si \ bf {x } a n entrées. Dans tous les cas que je traite, n >> m , par exemple n sera environ 14 000 et m sera 50. Je ne sais pas quelle méthode j'utiliserai pour un échantillonnage aléatoire, normal ou uniforme, ce n'est pas clair ce qui est le mieux pour le problème que j'essaie de résoudre, mais j'ai besoin que toutes les variables soient échantillonnées à partir de distributions avec la même moyenne et la même plage / variance.E x = b E m x n x n n > > m n m
Ce que j'ai fait pour résoudre ce problème, c'est de réduire sous forme d'échelon de ligne, de définir toutes les variables correspondant aux colonnes à droite du dernier pivot sur des valeurs aléatoires, puis de résoudre l'égalité de matrice carrée restante.
Il y a un problème cependant, pour résoudre l'égalité de la matrice carrée, je soustrais les valeurs déjà définies du côté droit. Malheureusement, les écarts s'ajoutent également, donc mes 50 dernières valeurs ont tendance à varier énormément, ce qui est malheureusement inacceptable dans ce problème.
Y a-t-il une meilleure manière de faire cela? Je ne peux pas penser à un moyen de corriger la méthode actuelle que j'utilise. J'utilise R.
la source
Réponses:
Ce paquet papier et R a complètement résolu mon problème. Il utilise la méthode Markov Chain Monte Carlo, qui repose sur le fait que si vous pouvez trouver une solution initiale de la contrainte, grâce à la programmation linéaire, vous pouvez en trouver un nombre arbitraire en utilisant une matrice qui, multipliée par , les contraintes , donne zéro. Lisez à ce sujet ici:E
http://www.vliz.be/imisdocs/publications/149403.pdf
et voici le package:
http://cran.r-project.org/web/packages/limSolve/index.html
la source
Cela peut sembler trivial (et pas très efficace en termes de machine), mais envisagez de répéter le processus jusqu'à ce que vous obteniez une réponse appropriée? De préférence ne modifiant à chaque fois qu'un sous-ensemble plus petit.
Pouvez-vous créer une mesure de «distance» pour vous éloigner de votre réponse idéale? Cela pourrait vous aider à "optimiser"?
la source