Я хочу сделать pairwise.t.test каждого столбца против каждого столбца в кадре данных - PullRequest
0 голосов
/ 27 марта 2020

участки скрипки, сгенерированные из фрейма данных Числа в каждом столбце представляют локализацию сигнала относительно другого сигнала внутри ядер клеток. Существует 3 условия лечения и 7 временных точек обработки + 2 контроля, что дает в общей сложности 23 столбца (см. Графики для скрипки). Я хотел бы провести t-тест или t-тест Уилкокса с каждым столбцом в каждом столбце. Я думаю, что сделал это раньше с pairwise.t.test(Chr). Однако функция требует определить, как вы группируете свои данные, и я хотел бы сгруппировать мои по столбцам. Я импортировал свои данные:

Chr <- read_csv("Chromocenters-intensity.csv", 
+     na = "NA")

Проанализировано со спецификацией столбца: cols (.default = col_double ())

Импортированный набор данных в R

А затем попытался:

 pairwise.t.test(Chr, cols())

Ошибка в порядке (y): не реализован тип 'list' в 'orderVector1'

pairwise.wilcox.test(Chr,g=cols(Chr))

Ошибка: некоторые col_types не являются объектами сборщика S3: 1

Я не понимаю, что означают ошибки.

нормальный t.test отлично работает:

t.test(Chr$S0,Chr$S1)

t-тест Welch Two Sample

данные: Chr $ S0 и Chr $ S1 t = 0,85955 , df = 154,12, p-значение = 0,3914 альтернативная гипотеза: истинная разница в средних не равна 0 95-процентный доверительный интервал: -1,920629 4,879370 выборочных оценок: среднее значение x среднего y 100,41579 98,93642

но как мне увеличить его, чтобы включить каждый столбец по каждому столбцу?

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Привет, добро пожаловать в Stack Overflow!

Сначала убедитесь, что вы выполнили некоторую коррекцию p-значения для нескольких выполняемых тестов, ?p.adjust может быть полезным.

Вторая ваша проблема требует, чтобы вы получили все возможные пары из столбцов набора данных, что является задачей, которую должен выполнить ?combn:

mtcars_numbers <- dplyr::select_if(mtcars, is.numeric) # simulate some data like you describe

?combn
all_pairs <- combn(names(mtcars_numbers), 2, simplify = F)
all_pairs # I wanted a this to be a list for lapply, but you can get a matrix with simplify=T

Затем вы перебираете каждую пару, я использую ?lapply(), но Вы можете использовать for l oop или другую функцию:

lapply(all_pairs,
       function(x) {
         t.test(mtcars[[x[1]]], mtcars[[x[2]]])
       })
0 голосов
/ 27 марта 2020

Вы можете использовать expand.grid и apply.

data <- as.data.frame(sapply(1:23,function(x){runif(470,1,200)}))
names(data) <-c(paste0("S",0:7),paste0("N",1:7),paste0("P",1:7),"TKO")
pairs <- expand.grid(names(data),names(data))
result <- data.frame(pairs,p.val = apply(pairs,1,function(x){t.test(data[x[1]],data[x[2]])$p.val}))
result
    Var1 Var2          p.val
1     S0   S0 1.000000000000
2     S1   S0 0.573722556263
3     S2   S0 0.874552764274
4     S3   S0 0.467670724537
5     S4   S0 0.700539636188
6     S5   S0 0.736422364244
7     S6   S0 0.599066387580
8     S7   S0 0.940641228509
9     N1   S0 0.727290760056
10    N2   S0 0.057120608982
11    N3   S0 0.523554180769
12    N4   S0 0.485633891380

Не забудьте позже исправить несколько тестов.

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