Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

> Как реализовать точную перестановку в R?
ИНО
сообщение 29.05.2025 - 02:34
Сообщение #1





Группа: Пользователи
Сообщений: 262
Регистрация: 1.06.2022
Из: Донецк
Пользователь №: 39632



Как посредством R случайным образом разделить ряд чисел на две группы заданных объемов с перебором всех возможных вариантов? Просто перемешивать исходный ряд и разделять в произвольной точке оказалось плохой идеей, так как порождаются в том числе и лишние варианты, когда состав обеих групп одинаков, но последовательность внутри них разная, например в итерации i в группе А оказываются 1, 2, 3, в группе Б - 4, 5, 6, а в итерации i+1 - соответственно 2, 1, 3 и 4, 5, 6. Если мы считаем статистику, инвариантную к порядку чисел, то эти паразитические псевдовыборки никак не сказываются на выводе, но сильно жрут вычислительные ресурсы. В общем, надо чтобы в каждой итерации группа А менялась с группой Б парой чисел.

Беглый поиск готовых решений ничего не дал. Например, в широко известном пакете permute, кажется, реализованы все мыслимые планы перестановок, кроме нужного мне. Или же я просто не допер, как его на это запрограммировать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
ИНО
сообщение 31.05.2025 - 12:28
Сообщение #2





Группа: Пользователи
Сообщений: 262
Регистрация: 1.06.2022
Из: Донецк
Пользователь №: 39632



Да, это именно сочетания и есть. Просто моя терминология в области комбинаторики оставляет желать много лучшего. Спасибо за подсказку термина, попробую поискать готовые решения с его помощью.

Я не исключаю, что и для моей окончательной цели эти дубли тоже нужны. Но это надо проверить путем прямого сравнение результатов при обоих способах. Поэтому поставлена промежуточная задача создать перестановку без дублей (т. е. перебор всех возможных сочетаний) и посмотреть, что она покажет.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме


Добавить ответ в эту темуОткрыть тему