![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 262 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 ![]() |
Как посредством R случайным образом разделить ряд чисел на две группы заданных объемов с перебором всех возможных вариантов? Просто перемешивать исходный ряд и разделять в произвольной точке оказалось плохой идеей, так как порождаются в том числе и лишние варианты, когда состав обеих групп одинаков, но последовательность внутри них разная, например в итерации i в группе А оказываются 1, 2, 3, в группе Б - 4, 5, 6, а в итерации i+1 - соответственно 2, 1, 3 и 4, 5, 6. Если мы считаем статистику, инвариантную к порядку чисел, то эти паразитические псевдовыборки никак не сказываются на выводе, но сильно жрут вычислительные ресурсы. В общем, надо чтобы в каждой итерации группа А менялась с группой Б парой чисел.
Беглый поиск готовых решений ничего не дал. Например, в широко известном пакете permute, кажется, реализованы все мыслимые планы перестановок, кроме нужного мне. Или же я просто не допер, как его на это запрограммировать. |
|
![]() |
![]() |
![]() |
![]()
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 262 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 ![]() |
Ссылку на источник чего? На идею, что при простой рандомизации объединенной последовательности появляются бесполезные варианта? Этот источник находится в моей голове и подтвержден результатами подсчетов.
По-моему я ясно все сформулировал, но попробую с другого ракурса. Задачу модно переформулировать как получение всех возможных перестановок чисел между двумя группами, но без бесполезных перестановок внутри каждой из групп. Например, если исходная группа А содержит числа 1, 2, а исходная группа Б - числа 10, 20, то вот полезные варианты перестановок: 1) А: 1, 10 и Б: 2, 20 2) А: 2, 10 и Б: 1, 20 3) А: 1, 20 и Б: 2, 10 4) А: 2, 20 и Б: 1, 10 5) А: 10, 20 и Б: 1, 2 А вот пример бесполезных (в случае, если уже имеются все вышеперечисленные) вариантов: 6) А: 2, 1 и Б: 20, 10 - для подсчета статистики, например, разности средних, это ровно то же , что и исходные группы. 7) А: 20, 2 и Б: 10, 1 - а это полностью эквивалентно варианту 4... Все не буду перечислять, много их. Так вот, обычный метод свободной рандомизации, описанный во множестве руководств, когда группы А и Б объединяют, объединенную последовательность тасуют всеми возможными способами и снова рвут на две группы посередине, порождает как полезные так и бесполезные перестановки. Причем бесполезных в разы больше. Уверен, что способ, дающий только полезные давным-давно придуман и реализован, но не умею искать. |
|
![]() |
![]() |
![]() ![]() |