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

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

> Как реализовать точную перестановку в 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, кажется, реализованы все мыслимые планы перестановок, кроме нужного мне. Или же я просто не допер, как его на это запрограммировать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
ИНО
сообщение 30.05.2025 - 12:37
Сообщение #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...

Все не буду перечислять, много их.

Так вот, обычный метод свободной рандомизации, описанный во множестве руководств, когда группы А и Б объединяют, объединенную последовательность тасуют всеми возможными способами и снова рвут на две группы посередине, порождает как полезные так и бесполезные перестановки. Причем бесполезных в разы больше. Уверен, что способ, дающий только полезные давным-давно придуман и реализован, но не умею искать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Игорь
сообщение 31.05.2025 - 08:44
Сообщение #3





Группа: Пользователи
Сообщений: 1141
Регистрация: 10.04.2007
Пользователь №: 4040



Цитата(ИНО @ 30.05.2025 - 13:37) *
Ссылку на источник чего? На идею, что при простой рандомизации объединенной последовательности появляются бесполезные варианта?

При программировании критериев рандомизации я тоже "наткнулся" на эту проблему (по этой причине и "засветился" в данной теме) - слишком большой объем вычислений. Пришлось даже принудительно ограничивать возможности программы (не ждать же пользователю диалоговй программы, скажем, полчаса, пока расчет завершится). И подумал, нельзя ли исключить вычисление якобы бесполезных перестановок. Уже упоминал выше про "изобретенный" мной алгоритм (может быть, и изобретенный, т.к. ссылок не встречал, но не исключаю, что плохо искал, поэтому в кавычках) на основе матрицы планирования эксперимента 1-го порядка (мы ее использовали еще в 80-х годах для систематизации вычислений в одной специфической научно-технической области; есть много хороших источников, могу показать). Была идея использовать дробную реплику данной матрицы, что позволило бы существенно снизить объем вычислений. Оказалось, что в моих задачах все не совсем так. Это оказались не бесполезные перестановки - они есть и должны учитываться, даже если их вклад одинаков. Хотя в Вашей задаче, возможно, всё иначе. Поэтому и предложил показать не как бы только численную часть метода, а как это принято, начиная с постановки задачи, начиная со статистической модели. Но впрочем, это Ваша прерогатива.
Upd. То, что Вас интересует, похоже не на перестановки, а на сочетания.

Сообщение отредактировал Игорь - 31.05.2025 - 12:01


Signature
Ebsignasnan prei wissant Deiws ainat! As gijwans! Sta ast stas arwis!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

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


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