Таблица двоичных перестановок становится слишком большой, когда количество объектов больше 26 - PullRequest
0 голосов
/ 11 июля 2019

У меня есть набор данных с 16 наблюдениями в настоящее время.У меня бинарное лечение (в настоящее время 8 контрольных, 8 лечебных).Мне нужно вывести все возможные различные назначения лечения для этого набора данных, который все еще заканчивается 8 контрольными и 8 обработками.В настоящее время я генерирую все возможные перестановки 0 и 1 для 16 наблюдений и фильтрую для 8 контрольных или 8 обработок.К сожалению, если мне нужно сделать более 26 наблюдений (магическое число, я считаю), фрейм данных становится слишком большим для R. Есть ли способ создать таблицу перестановок без хлопот с репликацией всех возможностей и их фильтрацией впосередине, как в приведенном ниже коде.

    library(tidyverse)
    library(random)
    library(data.table)

    test <- tibble("obs"=1:16,
    "treatment"=c(rep(0,8),rep(1,8)),
    "outcome"=randomNumbers(x,0,50,1))

    treated <- sum(test$treatment)

    perm <- do.call(CJ, replicate(16,0:1, FALSE))
    perm <- perm %>% mutate(check=rowSums(perm)) %>% filter(., check == treated)
    perm$check <- NULL
    perm <- as_tibble(transpose(perm))

1 Ответ

1 голос
/ 11 июля 2019

Столбцы матрицы 8 на 12870 co являются возможными назначениями для группы лечения, а остальные элементы назначаются контролю.Здесь 12870 равняется choose(16, 8), то есть числу способов выбрать 8 элементов из 16 элементов.

co <- combn(16, 8)

Например, co[, 1] равно 1, 2, 3, 4, 5, 6, 7,8, поэтому первые 8 элементов назначаются группе лечения, а последние 8 элементов являются контрольными, если выбран этот столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...