Применяя t.test по фактору - PullRequest
       23

Применяя t.test по фактору

0 голосов
/ 19 января 2019

У меня есть данные, которые выглядят так:

Replicate    Group   Value
1            A       1.0
1            A       1.1
1            A       1.1
1            B       2.0
1            B       2.0
1            B       2.2
2            A       1.1
2            A       1.2
2            A       0.9
2            B       2.2
2            B       2.4

Я хотел бы использовать t.test(), чтобы получить разницу в средних между A и B, p-значением и 95% CI для каждого отдельногоРепликация.Как мне проще всего это сделать?

Вот код для переноса приведенного выше примера игрушки в кадр данных:

df = data.frame("Replicate"=c(1,1,1,1,1,1,2,2,2,2,2), "Group"=c("A","A","A","B","B","B","A","A","A","B","B"), "Value"= c(1.0, 1.1, 1.1, 2.0, 2.0, 2.2, 1.1, 1.2, 0.9, 2.2, 2.4))

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 19 января 2019

Я не совсем уверен, что понимаю, что вы подразумеваете под "для каждого отдельного Реплика" . Чтобы охарактеризовать разницу в средних между Value с для разных Group с, мы можем указать formula в t.test как

ttest <- t.test(Value ~ Group, data = df)
ttest
#
#Welch Two Sample t-test
#
#data:  Value by Group
#t = -12.729, df = 6.4248, p-value = 8.52e-06
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
#-1.3001853 -0.8864814
#sample estimates:
#mean in group A mean in group B
#  1.066667        2.160000

95% ДИ определяется как

ttest$conf.int
#[1] -1.3001853 -0.8864814
#attr(,"conf.level")
#[1] 0.95

Если подумать, если вы действительно хотите выполнить отдельные t-тесты для измерений из Replicate 1 и 2, мы можем group_by Replicate, nest данные за Replicate, а затем map a t.test к вложенным данным. Затем мы можем извлечь соответствующие количества из t.test за Replicate:

library(tidyverse)
df %>%
    group_by(Replicate) %>%
    nest() %>%
    mutate(ttest = map(data, ~t.test(Value ~ Group, .x))) %>%
    transmute(
        Replicate,
        diff = map_dbl(ttest, ~.x$estimate[1] - .x$estimate[2]),
        pval = map_dbl(ttest, ~.x$p.value),
        CI = map(ttest, ~data.frame(CI.low = .x$conf.int[1], CI.high = .x$conf.int[2]))) %>%
    unnest()
## A tibble: 2 x 5
#  Replicate  diff     pval CI.low CI.high
#      <dbl> <dbl>    <dbl>  <dbl>   <dbl>
#1         1 -1.   0.000990  -1.24  -0.760
#2         2 -1.23 0.00599   -1.72  -0.746
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...