Здравствуйте, гость ( Вход | Регистрация )
29.05.2025 - 02:34
Сообщение
#1
|
|
|
Группа: Пользователи Сообщений: 290 Регистрация: 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
|
|
|
Группа: Пользователи Сообщений: 290 Регистрация: 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
|
|
![]() Группа: Пользователи Сообщений: 1162 Регистрация: 10.04.2007 Пользователь №: 4040 |
Ссылку на источник чего? На идею, что при простой рандомизации объединенной последовательности появляются бесполезные варианта? При программировании критериев рандомизации я тоже "наткнулся" на эту проблему (по этой причине и "засветился" в данной теме) - слишком большой объем вычислений. Пришлось даже принудительно ограничивать возможности программы (не ждать же пользователю диалоговй программы, скажем, полчаса, пока расчет завершится). И подумал, нельзя ли исключить вычисление якобы бесполезных перестановок. Уже упоминал выше про "изобретенный" мной алгоритм (может быть, и изобретенный, т.к. ссылок не встречал, но не исключаю, что плохо искал, поэтому в кавычках) на основе матрицы планирования эксперимента 1-го порядка (мы ее использовали еще в 80-х годах для систематизации вычислений в одной специфической научно-технической области; есть много хороших источников, могу показать). Была идея использовать дробную реплику данной матрицы, что позволило бы существенно снизить объем вычислений. Оказалось, что в моих задачах все не совсем так. Это оказались не бесполезные перестановки - они есть и должны учитываться, даже если их вклад одинаков. Хотя в Вашей задаче, возможно, всё иначе. Поэтому и предложил показать не как бы только численную часть метода, а как это принято, начиная с постановки задачи, начиная со статистической модели. Но впрочем, это Ваша прерогатива. Upd. То, что Вас интересует, похоже не на перестановки, а на сочетания. Сообщение отредактировал Игорь - 31.05.2025 - 12:01 ![]() Ebsignasnan prei wissant Deiws ainat! As gijwans! Sta ast stas arwis!
|
|
|
![]() |
![]() |
ИНО Как реализовать точную перестановку в R? 29.05.2025 - 02:34
Игорь Напоминает критерий рандомизации Фишера-Питмана дл... 29.05.2025 - 08:41
ИНО Не то, вариант для связанных не подходит, поскольк... 29.05.2025 - 11:15
Игорь Цитата(ИНО @ 29.05.2025 - 12:15) Но ... 30.05.2025 - 09:15
ИНО Да, это именно сочетания и есть. Просто моя термин... 31.05.2025 - 12:28
ИНО Сделал! И даже пакетов дополнительных не понад... 31.05.2025 - 22:48
ИНО Итак, другая история: это работает в тестировании ... 1.06.2025 - 02:15
ИНО При неравных объемах выборок обнаружился баг - чув... 1.06.2025 - 17:30![]() ![]() |