如何在ifelse语句中使用p值作为标准?

时间:2017-02-15 22:29:34

标签: r if-statement p-value

我正在尝试找到一种向我的数据框添加列的方法,该列将两个处理组中的值分类为与控件相似或不同,具体取决于值是否与控件在统计上不同。

我不确定这是否可行,但让我知道我有一些类似的数据

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标准分区内的所有值分类为“相同”?

感谢您的帮助和意见。 我期待着阅读你的回复和建议。

1 个答案:

答案 0 :(得分:1)

您想要研究&#34; t-tests&#34;以及他们的各种假设。这些用于确定来自正态分布的两个样本是否具有相同的均值。 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

因此,对于这个模拟的数据集,t检验不区分治疗1和5%显着性水平的对照。对于不同的样本,它可能会对更大的样本更有可能。