Организация кратных p-значений в R (kruskal.test) - PullRequest
0 голосов
/ 14 апреля 2020

Используя приведенный ниже код, я создал data.frame () с 5 переменными. Таким образом, я могу получить значение p с помощью kruskal.test ().

> sample1 <- c(3, 3, 3, 2, 3)
> sample2 <- c(7, 7, 10, 6, 10)
> sample3 <- c(10, 13, 12, 14, 13)
> sample4 <- c(15, 20, 18, 20, 17)
> sample5 <- c(4, 5, 3, 3, 4)
> table <- data.frame(sample1, sample2, sample3, sample4, sample5)
> 
> kruskal.test(sample1,sample2)$p.value
[1] 0.1353353
> kruskal.test(sample1,sample3)$p.value
[1] 0.2614641
> kruskal.test(sample1,sample4)$p.value
[1] 0.6822703
> kruskal.test(sample1,sample5)$p.value
[1] 0.4723666

Однако я хотел бы организовать результаты в data.frame () со всеми возможностями p-значения, аналогичного изображению ниже, с использованием переменной table.

enter image description here

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

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете использовать outer(), чтобы помочь здесь. Он принимает все комбинации значений, которые вы передаете. Например,

pvals <- outer(table, table, function(x,y) {
  mapply(function(x,y) kruskal.test(x,y)$p.value, x,y)
})

diag(pvals) <- NA
pvals

, который возвращает

          sample1   sample2   sample3   sample4   sample5
sample1        NA 0.1353353 0.2614641 0.6822703 0.4723666
sample2 0.1360371        NA 0.3748093 0.3207621 0.8232919
sample3 0.1467931 0.3311237        NA 0.3173651 0.6738573
sample4 0.2765005 0.5459307 0.4429172        NA 0.1905397
sample5 0.2635525 0.2710219 0.3207621 0.7344166        NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...