2017-02-15 5 views
0

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

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

df <- data_frame(species = rep(c("X1", "X2", "X3", "X4"), times = 12), 
     condition = rep(c("Control", "Treat1", "Treat2"), each = 16), 
     values = rep(c(rnorm(16, mean = 16, sd = 4), 
         rnorm(16, mean = 14, sd = 3), 
         rnorm(16, mean = 5, sd = 10)))) 

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

df2 <- df %>% 
    group_by(species) %>% 
    mutate(new_column = ifelse("Value of each condition statistically different from Control", "Different", "Same") 

Итак, есть ли способ, чтобы применить статистический тест внутри IfElse заявление?

Или мне лучше использовать несколько более простых критериев для классификации данных. Может быть, классифицировать все значения, которые входят в ± 1 стандартное отклонение элемента управления как «одинаковое»?

Благодарим за помощь и помощь. Я с нетерпением жду ваших ответов и предложений.

+0

Можете ли вы более четко определить, какой тест вы хотите выполнить? Является ли это anova anova с некоторым пост-hoc-тестированием? Также посмотрите на пакет «метла». Это великолепно. – boshek

ответ

1

Вы хотите исследовать «t-тесты» и их различные предположения. Они предназначены для определения того, имеют ли два образца из нормальных распределений одно и то же среднее значение. Значение по умолчанию в R означает, что отклонения не равны, что хорошо для вашего симулированного набора.

Я пропущу данные пререкания

> set.seed(1) 
> control <- rnorm(16, mean = 16, sd = 4) 
> treat1 <- rnorm(16, mean = 14, sd = 3) 
> treat2 <- rnorm(16, mean = 5, sd = 10) 
> lapply(list(treat1,treat2), function(t) t.test(t,control)$p.value < 0.05) 
[[1]] 
[1] FALSE 

[[2]] 
[1] TRUE 

Таким образом, для этого моделируемого набора данных, т-тест не различает лечения 1 и контроль на уровне значимости 5%. С другим образцом он мог бы, и для более крупных образцов это было бы более вероятно.

Смежные вопросы