2011-08-04 7 views
0

Я хотел бы создать случайные двухсторонние таблицы непредвиденных ситуаций, учитывая фиксированные маркеры строк и столбцов. Предположив У меня есть таблица вроде этого:Как создать случайную таблицу непредвиденных ситуаций в R?

 A C G T 
    A 79 6 13 53 
    C 16 7 6 17 
    G 9 3 1 6 
    T 58 28 18 114 

с заданными рядных маргиналов:

A C G T 
151 46 19 218 

и столбцов маргиналов:

A C G T 
162 44 38 190 

Я хотел бы создать случайную таблицу на случай непредвиденных обстоятельств, для пример:

A C G T 
A 49 16 10 76 
C 23 2 6 15 
G 11 0 1 7 
T 79 26 21 92 

, который сохраняет эти маргиналы.

Поскольку п не слишком велик, в этом случае, я попытался подойти к этому с помощью «untabling» маргинальных векторов, т.е. пути преобразования маргиналов в векторы вида

A A A ...C C C ... G G G ... T T T 

, а затем перестановку и столов их ,

Мой нынешний метод «незаметности» маргиналов очень неестественен и неэффективен, и мне было любопытно узнать, есть ли лучший способ. Некоторые встроенные функции должны создавать случайные таблицы непредвиденных обстоятельств, например chisq.test, когда simulate.p.value = TRUE. Также построена ли случайная конструкция таблиц непредвиденных обстоятельств?

Заранее благодарим за любые предложения.

ответ

3

Я не совсем уверен, что вы подразумеваете под «отключение», и поскольку вы на самом деле не указали метод, который используете в настоящее время, я не могу быть уверен, что это не то, что вы сейчас делает.

Но данные маргинальные (162, 44, 38, 190) вы можете «воссоздавать» вектор просто делать это:

rep(c('A','C','G','T'),times = c(162, 44, 38, 190)) 

, которые затем можно переставлять по мере необходимости.

+0

Да, это именно то, что мне нужно. Большое спасибо! – wvoq

2

Извините, но ответ joran неверен. Его формула правильно имитирует таблицы с правильными значениями столбцов, но ОП запросил симуляцию, которая учитывает как итоговые строки, так и столбцы. Решение этого было дано в 1981 г. W.M. Patefield. Алгоритм AS159. Эффективный метод генерации таблиц r x c с учетом итогов строк и столбцов. Прикладная статистика, 30. 91-97.

Алгоритм Patefield реализован в функции Base R r2dtable().

+0

Предполагалось, что вы примените метод joran как к столбцу, так и к строкам. – Dason

+0

@Dason - но это не работает, потому что когда вы исправляете строки, вы блокируете столбцы. – Placidia

+0

Я думаю, что мы визуализируем это по-другому. Таблица создается путем создания таблицы на основе двух векторов. Вы можете вычислить маргиналы только с помощью векторов - чтобы получить таблицу, которую вы смотрите на спаривание в векторах. Так ты об этом думаешь? – Dason

Смежные вопросы