R: применение критерия хи-квадрат Пирсона по двум столбцам - PullRequest
4 голосов
/ 11 марта 2020

Я только начал кодировать в R, и у меня возник вопрос о применении теста хи-квадрат к набору данных по 2 столбцам за раз.

Я хотел бы сделать парный анализ (Опухоль и Нормальная проба получены от одного и того же пациента, поэтому Первичная Опухоль 1 и Нормальная Ткань 1 получены от одного и того же пациента). Я хотел бы видеть различия в распределении между опухолью и нормальным образцом от одного и того же пациента и относиться ко всем 50 пациентам.

Ранее я пробовал составить критерий хи-квадрат, с ожидаемой вероятностью, которую я рассчитал на основании среднего значения для всех нормальных выборок.

Код, который я использовал:

apply(mydata, 2, chisq.test, p=myprobability)

На этот раз я хочу провести критерий хи-квадрат Пирсона (не совсем подходящее) для опухоли и ее соответствующей нормальной ткани.

Итак, я хотел бы запустить тест хи-квадрат по двум столбцам: первичная опухоль 1 + нормальная 1 ... затем следующая первичная опухоль 2 + нормальная 2

и получить таблицу Статистика хи-квадрат и р-значения. (В этом случае мне пришлось бы использовать скорректированные p-значения правильно? Потому что я запустил его на 50 наборах выборок?)

Мои данные выглядят так: enter image description here

В качестве воспроизводимого примера ...

mydata <-
structure(list(Tumor1 = c(17, 28, 80, 63, 20, 
10), Normal1 = c(18, 27, 89, 62, 24, 
11), Tumor2 = c(25, 40, 80, 65, 23, 
11), Normal2 = c(27, 29, 100, 72, 34, 
6)), class = "data.frame", 
row.names = c("trim3", "trim2", "trim1", "add1", "add2", 
"add3"))

head(mydata)

      Tumor1 Normal1 Tumor2 Normal2
trim3     17      18     25      27
trim2     28      27     40      29
trim1     80      89     80     100
add1      63      62     65      72
add2      20      24     23      34
add3      10      11     11       6

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

Спасибо вы

1 Ответ

4 голосов
/ 11 марта 2020

Вы можете рассмотреть возможность проведения теста Кохрана-Мантеля-Хензеля, который является тестом на независимость двух переменных с повторными измерениями, в вашем случае, разных опухолей / нормальных пар. Итак, используя ваш пример, мы сначала получаем массив:

test = array(unlist(mydata),dim=c(nrow(mydata),2,ncol(mydata)/2))
test
, , 1

     [,1] [,2]
[1,]   17   18
[2,]   28   27
[3,]   80   89
[4,]   63   62
[5,]   20   24
[6,]   10   11

, , 2

     [,1] [,2]
[1,]   25   27
[2,]   40   29
[3,]   80  100
[4,]   65   72
[5,]   23   34
[6,]   11    6

Затем делаем:

mantelhaen.test(test)

    Cochran-Mantel-Haenszel test

data:  test
Cochran-Mantel-Haenszel M^2 = 5.0277, df = 5, p-value = 0.4125

Конечно, вы можете протестировать каждую пару образцов отдельно:

library(broom)
# assign groups to columns
grps = rep(1:(ncol(mydata)/2),each=2)
result = do.call(rbind,lapply(unique(grps),function(i)tidy(chisq.test(mydata[,grps==i]))))
result

# A tibble: 2 x 4
  statistic p.value parameter method                    
      <dbl>   <dbl>     <int> <chr>                     
1     0.569   0.989         5 Pearson's Chi-squared test
2     6.89    0.229         5 Pearson's Chi-squared test
...