Nano Hash - криптовалюты, майнинг, программирование

R: применение критерия хи-квадрат Пирсона по двум столбцам

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

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

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

Я использовал следующий код:

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

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

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

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

Мои данные выглядят так:  введите описание изображения здесь

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

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

Я попытался использовать функцию apply, как и для удобства, но не смог заставить ее работать.

Спасибо


  • Это интересный вопрос, но не могли бы вы предоставить свои данные через dput(head(data.cstest))? Это распечатает версию вашего набора данных, которую можно скопировать и вставить. Потенциальным респондентам сложно работать с изображением. 11.03.2020
  • @thelatemail Я добавил воспроизводимый пример :) 11.03.2020
  • Если вы хотите проверить, независимы ли столбцы для опухоли и нормы, 1 и 2 .. вам следует выполнить тест Кокрана – Мантеля – Хензеля biostathandbook.com/cmh.html 11.03.2020

Ответы:


1

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

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
10.03.2020
  • для более точного управления выбранными столбцами op может сделать x <- lapply(1:2, function(x) as.matrix(mydata[, paste0(c('Tumor', 'Normal'), x)])); x <- simplify2array(x); mantelhaen.test(x), где 1:2 - идентификаторы пациентов 11.03.2020
  • @StupidWolf Спасибо за ответ :) Я пробовал их оба, и они оба работают. Однако для теста хи-квадрат, если я запустил Set1 (Опухоль 1, Нормальный 1) независимо, он дал мне значение p <2,2e-16, что, я думаю, является минимальным значением R. Однако, если я запускаю их все сразу, все p-значения отображаются как «0». Также для теста Кокрана – Мантеля – Хензеля я получил p-значение ‹2,2e-16 и M ^ 2 = 1279390. Меньшие p-значения могут означать, что мои результаты значительны, но они слишком малы. Стоит ли мне об этом беспокоиться? 11.03.2020
  • Каков размер вашей таблицы непредвиденных обстоятельств и много ли у вас ячеек ‹5? 11.03.2020
  • @StupidWolf One Set (tumour1 + Normal1) имеет размер 2x6. Нет, большинство ячеек определенно ›5, это данные подсчета, поэтому они превышают тысячи максимум. 12.03.2020
  • @KimSoYon, да, если он находится в этом диапазоне, вы можете получить очень маленькие значения p для небольших различий в соотношениях. извините, насколько силен эффект? как вы видите сильную ассоциацию? 12.03.2020
  • @StupidWolf И для теста Chi-Squared, и для теста Кокрана-Мантеля он дал мне p-значение '‹2.2e-16' в R. Я думаю, что это как минимум, который дает R? 12.03.2020
  • да, вы правы, если вам нужно точное, вы можете это сделать, test = chisq.test (‹matrix›), pchisq (test $ statistic, test $ parameter, lower.tail = FALSE, log.p = TRUE) 12.03.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..