Generieren von Zufallsvariablen, die Einschränkungen erfüllen


9

Ich muss eine Liste von Zufallsvariablen generieren , die Einschränkungen unterliegen, die in der Form ausgedrückt werden können, wobei eine Matrix ist, wenn hat Einträge. In allen Fällen, mit denen ich es zu tun habe, wird , zum Beispiel , ungefähr 14.000 und 50 sein. Ich bin mir nicht sicher, welche Methode ich für zufällige Stichproben verwenden werde, entweder normal oder einheitlich, ist es nicht klar, welches für das Problem, das ich zu lösen versuche, am besten ist, aber ich muss alle Variablen aus Verteilungen mit dem gleichen Mittelwert und Bereich / Varianz abtasten.xEx=bEm×nxnn>>mnm

Um dies zu lösen, habe ich auf eine Zeilen-Staffel-Form reduziert , alle Variablen, die den Spalten rechts vom letzten Drehpunkt entsprechen, auf Zufallswerte gesetzt und dann die verbleibende quadratische Matrixgleichheit gelöst.E

Es gibt jedoch ein Problem, um die quadratische Matrixgleichheit zu lösen, subtrahiere ich die bereits eingestellten Werte von der rechten Seite. Leider addieren sich auch die Abweichungen, so dass meine letzten 50 Werte tendenziell sehr unterschiedlich sind, was bei diesem Problem leider nicht akzeptabel ist.

Gibt es einen besseren Weg, dies zu tun? Ich kann mir keine Möglichkeit vorstellen, die derzeit verwendete Methode zu beheben. Ich benutze R.


2
Leider können Sie dies nicht tun, es sei denn, Sie haben wirklich Glück mit Ihrer Einschränkungsmatrix. Betrachten Sie beispielsweise eine Einschränkungsmatrix mit zwei Zeilen, einem Eintrag ungleich Null in der ersten Zeile, der einschränkt, und zwei Einträgen ungleich Null in der zweiten Zeile, die einschränken . Offensichtlich hat einen anderen Mittelwert als mindestens einer von und , und wenn Sie die Varianzen für und nicht festlegen , auch eine andere Varianz. x1=0x2+x3=1x1x2x3x2x3=0
Jbowman

Antworten:


1

Dieses Papier- und R-Paket hat mein Problem vollständig gelöst. Es wird die Markov-Ketten-Monte-Carlo-Methode verwendet, die auf der Tatsache beruht, dass Sie, wenn Sie durch lineare Programmierung eine anfängliche Lösung der Einschränkung finden, eine beliebige Anzahl von ihnen finden können, indem Sie eine Matrix verwenden, die, wenn sie mit multipliziert wird , die Einschränkungen gibt Null. Lesen Sie hier darüber:E

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

und hier ist das Paket:

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


1
vliz.be/imisdocs/publications/149403.pdf scheint nicht verfügbar zu sein, bitte aktualisieren Sie den Link
eee

0

Vielleicht trivial (und nicht besonders maschineneffizient), aber überlegen Sie, den Vorgang zu wiederholen, bis Sie eine geeignete Antwort erhalten? Vorzugsweise wird jedes Mal nur eine kleinere Teilmenge geändert.

Können Sie ein "Entfernungsmaß" dafür erstellen, wie weit Sie von Ihrer idealen Antwort entfernt sind? Es könnte Ihnen helfen, "zu optimieren"?


Ich könnte das ausprobieren. Ein Problem ist, dass ich immer noch sicherstellen müsste, dass die Form der Verteilung dieselbe ist. Auch zeitliche Einschränkungen sind unerschwinglich.
Mike Flynn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.