Generowanie zmiennych losowych spełniających ograniczenia


9

Muszę wygenerować listę zmiennych losowych podlegających ograniczeniom, które można wyrazić w postaci gdzie jest macierzą , jeśli ma wpisów. We wszystkich przypadkach, z którymi mam do czynienia, , na przykład będzie wynosić około 14 000, a będzie wynosić 50. Nie jestem pewien, jakiej metody użyję do losowego próbkowania, normalnej lub jednolitej, to nie jest jasne, który jest najlepszy dla problemu, który próbuję rozwiązać, ale potrzebuję próbkowania wszystkich zmiennych z rozkładów o tej samej średniej i zakresie / wariancji.E x = b e m x n x n n > > m N mxEx=bEm×nxnn>>mnm

Rozwiązałem ten problem, redukując do postaci rzędów-rzędów, ustawiając wszystkie zmienne odpowiadające kolumnom po prawej stronie ostatniego elementu przestawnego na wartości losowe, a następnie rozwiązując pozostałą równość macierzy kwadratowej.E

Istnieje jednak problem, aby rozwiązać równanie macierzy kwadratowej, odejmuję już ustawione wartości od prawej strony. Niestety wariancje również się dodają, więc moje ostatnie 50 wartości różnią się znacznie, co jest niestety nie do przyjęcia w tym problemie.

Czy jest na to lepszy sposób? Nie mogę wymyślić sposobu, aby naprawić bieżącą metodę, której używam. Używam R.


2
Niestety nie będziesz w stanie tego zrobić, chyba że będziesz miał szczęście z matrycą ograniczeń. Na przykład rozważmy macierz ograniczeń z dwoma wierszami, jednym niezerowym wpisem w pierwszym rzędzie, który ogranicza i dwoma niezerowymi wpisami w drugim rzędzie, który ogranicza . Oczywiście będzie miało inną średnią niż co najmniej jedna z i , a jeśli nie ustawisz wariancji dla i , również inna wariancja. x 2 + x 3 = 1 x 1 x 2 x 3 x 2 x 3 = 0x1=0x2+x3=1x1x2x3x2x3=0
jbowman

Odpowiedzi:


1

Ten papier i pakiet R całkowicie rozwiązały mój problem. Wykorzystuje metodę Markowa Łańcucha Monte Carlo, która polega na tym, że jeśli można znaleźć wstępne rozwiązanie ograniczenia, poprzez programowanie liniowe, można znaleźć dowolną ich liczbę za pomocą macierzy, która po pomnożeniu przez , ograniczenia , daje zero. Przeczytaj o tym tutaj:E

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

a oto pakiet:

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


1
vliz.be/imisdocs/publications/149403.pdf wydaje się być niedostępny, proszę zaktualizować link
eee

0

Może to wydawać się trywialne (i niezbyt wydajne maszynowo), ale rozważ powtórzenie tego procesu, dopóki nie otrzymasz odpowiedniej odpowiedzi? Najlepiej za każdym razem modyfikować mniejszy podzbiór.

Czy potrafisz stworzyć miarę „odległości” dla tego, jak daleko jesteś od idealnej odpowiedzi? Może ci to pomóc w „optymalizacji”?


Mogę to wypróbować. Jednym z problemów jest to, że nadal musiałbym upewnić się, że kształt rozkładu będzie taki sam. Również ograniczenia czasowe będą wygórowane.
Mike Flynn
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.