对于多个箱,在两个数据集(例如,案例和控件)之间进行ttest

时间:2016-10-10 15:59:39

标签: r aggregate tapply

我想比较不同区域的两个数据集。我的输入数据是这样的:

 dataIn <- read.table(text =
"bin_slots  val_cases   val_controls
A   0.075   0.05
A   0.252   0.276
A   0.338   0.41
A   0.911   0.983
A   0.912   0.809
A   0.965   0.917
A   1   1
A   1   1
A   0   0
A   1   0.983
A   0.398   0.681
A   0.606   0.431
B   0.58    0.608
B   0.729   0.773
B   0.871   0.879
B   1   1
B   0.297   0.282
B   0.673   0.737
B   0.807   0.803
B   0.838   0.824
B   0.633   0.658"
, header = TRUE)

使用上面的数据集我想比较A和B的val_cases和val_controls等等......因此我想得到的输出可以是这样的:

bin_slots   p_value
A   0.416336774
B   0.066616655

非常感谢。 最好的祝愿, Meraj

1 个答案:

答案 0 :(得分:0)

如果数据已配对,您可以像我在这里一样分析差异(与配对t检验的含义相同),或为&#34;个人&#34;添加一列。并运行我下面的方差分析(将个体视为随机变量,用于解释目的)。在这里,我为差异添加一列(使用dplyr),然后运行查看拟合模型的输出。要获得更多控制权,请保存lm的结果,并使用aovanova及其方法查看结果。

ifPaired <-
  dataIn %>%
  mutate(diff = val_cases - val_controls)


lm(diff ~ bin_slots - 1
   , data = ifPaired) %>%
  summary()

输出(部分):

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
bin_slotsA -0.006917   0.024850  -0.278    0.784
bin_slotsB -0.015111   0.028695  -0.527    0.605

相反,如果数据不是配对,而是仅仅是独立的观察,请将数据转换为长格式(在此使用tidyr),然后使用bin和{{1运行ANOVA作为预测者。

group

输出(部分):

ifNotPaired <-
  dataIn %>%
  gather("group", "value", -bin_slots) %>%
  mutate(group = gsub("val_", "", group))

lm(value ~ group + bin_slots
   , data = ifNotPaired) %>%
  summary()