Создание таблицы непредвиденных расходов - PullRequest
0 голосов
/ 31 января 2020

У меня в настоящее время есть фрейм данных, в котором указаны конкретные кластеры генов в геномах, это определяется как хорошо отформатированный файл с разделителями табуляции, который выглядит в основном как фрейм данных ниже (пример):

Gene Cluster     Genome
-----------------------------
GCF3372      Streptomyces_hygroscopicus
GCF3450      Streptomyces_sp_Hm1069
GCF3371      Streptomyces_sp_MBT13
GCF3371      Streptomyces_xiamenensis

На основе по этому я хочу создать таблицу отсутствия / присутствия или таблицу непредвиденных обстоятельств на основе этого кадра данных со значениями 0 и 1, в зависимости от отсутствия или присутствия определенного кластера генов в геноме. Вся идея в том, чтобы я был в состоянии измерить возникновение определенного кластера генов в геноме, поэтому я хочу таблицу присутствия / отсутствия, чтобы иметь возможность проводить статистический анализ этой матрицы.

x <- data.frame(gc = c('GCF3372','GCF3450','GCF3371','GCF3371','GCF3371'), 
                strain = c('Streptomyces_hygroscopicus', 'Streptomyces_sp_Hm1069', 
                           'Streptomyces_sp_MBT13', 'Streptomyces_xiamenensis','Streptomyces_hygroscopicus'))
dput(head(x[, c(1,2)]))

1 Ответ

0 голосов
/ 03 февраля 2020

Вот способ вычислить таблицу сопряженности из двух категориальных переменных. В качестве иллюстрации я буду использовать sex и height (они структурно похожи на две переменные, которые есть в вашем фрейме данных x):

Данные:

set.seed(300)
df <- data.frame(
  Height = sample(c("tall", "very tall", "small", "very small"), 20, replace = T),
  Sex = sample(c("m", "f"), 20, replace = T)
)
df
       Height Sex
1   very tall   f
2   very tall   m
3   very tall   m
4        tall   f
5  very small   m
6        tall   f
7        tall   m
8  very small   f
9       small   f
10       tall   m
11 very small   f
12       tall   m
13 very small   m
14      small   f
15 very small   m
16      small   m
17 very small   m
18 very small   m
19       tall   f
20       tall   m

Сначала, как уже отмечалось в комментарии, табулируйте данные, используя table:

tbl <- table(df$Sex, df$Height); tbl
    small tall very small very tall
  f     2    3          2         1
  m     1    4          5         2

Затем вы можете определить первую строку tbl как новый вектор female и вторую строку as male:

female <- tbl[1,]
male <- tbl[2,]

Наконец, вы связываете два в вектор counts, который является вашей таблицей непредвиденных обстоятельств:

counts <- rbind(female, male)
counts
       small tall very small very tall
female     2    3          2         1
male       1    4          5         2

На основе таблицы непредвиденных обстоятельств, которую вы можете запустить ваш тест, скорее всего, хи-квадрат:

test <- chisq.test(counts); test

    Pearson's Chi-squared test

data:  counts
X-squared = 1.3492, df = 3, p-value = 0.7175
...