Выполните t-тест с двумя выборками и выведите значения t, p для двух групп матриц в R - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь выполнить t-тест с двумя выборками, подобный этому

enter image description here

Матрицы wt1, wt2, wt3, mut1, mut2, mut3 представляют собой матрицы 3x3. После запуска t-теста я хотел бы получить матрицы t.stat и p.value, в которых

t.stat[i,j] <- the t value from t.test(c(wt1[i,j],wt2[i,j],wt3[i,j]),c(mut1[i,j],mut2[i,j],mut3[i,j]))
p.value[i,j] <- the p-value from t.test(c(wt1[i,j],wt2[i,j],wt3[i,j]),c(mut1[i,j],mut2[i,j],mut3[i,j]))

с i и j, указывающими индексы строки и столбца.

Есть ли эффективный способ добиться этого без цикла?


Большое спасибо за помощь, все работает!

Теперь я обнаружил, что все мои данные в диагональных направлениях равны 1, что приведет к Error in t.test.default(c(wt1[x], wt2[x], wt3[x]), c(mut1[x], mut2[x], : data are essentially constant.

Чтобы передать эти ошибки, я хотел бы вывести N/A в t.stat и p.value. Если матрицы должны содержать значения одинакового типа, 0 и 1 могут использоваться для t.stat и p.value соответственно. Кажется, что tryCatch может сделать эту работу, но я не уверен, как справиться с этим с sapply?

enter image description here

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете сделать что-то вроде этого:

test<- sapply(1:9, function(x) t.test(c(wt1[x], wt2[x], wt3[x]), 
                                      c(mut1[x], mut2[x], mut3[x])))
t.stat<- matrix(test["statistic", ], nrow = 3)
p.value<- matrix(test["p.value", ], nrow = 3)

Что касается второй части вашего вопроса, я думаю, использование tryCatch внутри sapply поможет. К сожалению, я не мог придумать, как предварительно выделить test, а затем создать 2 матрицы при использовании tryCatch. Для этого я адаптирую ответ Аарона.

t.stat<- matrix(sapply(1:9, function(x) 
                                  tryCatch({t.test(c(wt1[x], wt2[x], wt3[x]), 
                                                 c(mut1[x], mut2[x], mut3[x]))$statistic},
                             error = function(err) {return(NA)})), nrow = 3)

p.value<- matrix(sapply(1:9, function(x) 
                                  tryCatch({t.test(c(wt1[x], wt2[x], wt3[x]), 
                                                 c(mut1[x], mut2[x], mut3[x]))$p.value},
                             error = function(err) {return(NA)})), nrow = 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...