Точный критерий Фишера для строк в фрейме данных - R - PullRequest
0 голосов
/ 12 октября 2018

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

           R1counti    R1counto     R2counti    R2counto    R1    R2
sample1    100         100          1000        1000        1     1
smaple2    50          100          50           50         0.5   1

Для каждой строки я хочу выполнить точный тест Фишера, чтобы определить,коэффициент R1 значительно отличается от коэффициентов R2 (а также, в конце концов, получите скорректированный p-val)

Желаемый результат (при этом столбцы подсчета все еще включены в выход):

           R1    R2      pval
 sample1   1     1       1
 sample2   0.5   1       0.05

Я думал, что мог бы сделать что-то вроде:

dataframe$p-val <- with(dataframe, p-val <- fisher.test(R1, R2, alternative= "two.sided"))

Но я получаю сообщение об ошибке:

FEXACT error 40.
Out of workspace.

Возможно, я не справляюсь с этой ситуацией правильно.Любой совет?Предложения?Могу ли я выполнить такой тест рыболова?

1 Ответ

0 голосов
/ 12 октября 2018

Для каждой строки вашего набора данных вам нужно построить матрицу (то есть таблицу сопряженности 2 x 2) и передать эту матрицу команде fisher.test.

df <- read.table(text="
          R1counti    R1counto     R2counti    R2counto    R1    R2
sample1    100         100          1000        1000        1     1
sample2    50          100          50           50         0.5   1
", header=T, row.names=1)


apply(df, 1, 
      function(x) {
          tbl <- matrix(as.numeric(x[1:4]), ncol=2, byrow=T)
          fisher.test(tbl, alternative="two.sided")$p.value
      })

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