2

我正在尝试进行分组 t-test ,但我使用的代码返回错误。它以前和其他数据帧对我来说都很好,但是对于这个数据帧它给出了这个错误

t.test.default 中的错误(x = 0.0268,y = 0.0223,paired = FALSE,var.equal = FALSE,:'x' 观察值不足

我的代码是

stat.test.BACI5 <- Flaov %>%
  group_by(`Treatment`) %>%
  t_test(`Observed` ~  Control,  detailed = TRUE) %>%
  adjust_pvalue(method = "bonferroni") %>%
  add_significance()  

这是数据结构

structure(list(Treatment = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L
), .Label = c("Phase1", "Phase2"), class = "factor"), Group = structure(c(3L, 
4L, 2L, 3L, 2L, 4L, 1L, 2L, 4L, 3L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 
1L, 2L, 1L, 1L, 1L, 4L, 2L, 3L, 2L, 4L, 3L, 1L, 2L, 4L, 1L, 3L, 
1L, 1L, 1L, 2L, 1L, 3L, 2L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 
4L, 2L, 1L, 1L, 1L, 4L, 1L, 3L, 1L, 3L, 4L, 2L, 1L, 1L, 2L, 4L, 
2L, 3L, 1L, 1L, 2L), .Label = c("Group A ", "Group B", "Group C ", 
"Group D"), class = "factor"), Observed = c(0.1057, 0.151, 0.0576, 
0.1267, 0.0941, 0.1554, 0.0247, 0.0832, 0.2807, 0.1137, 0.0325, 
0.0777, 0.0362, 0.0637, 0.0303, 0.0223, 0.0932, 0.0363, 0.0641, 
0.0453, 0.0359, 0.0334, 0.2006, 0.0538, 0.1114, 0.0661, 0.2452, 
0.1043, 0.0489, 0.0663, 0.1967, 0.0321, 0.1042, 0.0268, 0.0313, 
0.0255, 0.0787, 0.038, 0.1212, 0.0839, 0.0446, 0.0986, 0.1364, 
0.0335, 0.0409, 0.0407, 0.0871, 0.0584, 0.0875, 0.1961, 0.0711, 
0.0191, 0.0363, 0.0474, 0.1608, 0.0349, 0.1099, 0.0399, 0.1095, 
0.2011, 0.057, 0.0418, 0.0394, 0.054, 0.2033, 0.0631, 0.1089, 
0.0441, 0.0261, 0.0686), Control = c(0.1061, 0.154, 0.0585, 0.1289, 
0.1076, 0.15856, 0.02997, 0.1022, 0.2849, 0.1193, 0.03292, 0.0888, 
0.04628, 0.06454, 0.03341, 0.0239, 0.1013, 0.0364, 0.0883, 0.06363, 
0.0566, 0.04036, 0.20641, 0.06206, 0.1158, 0.0687, 0.2457, 0.12643, 
0.05126, 0.05705, 0.1987, 0.04719, 0.08199, 0.02312, 0.0317, 
0.07045, 0.06395, 0.06043, 0.1251, 0.0912, 0.04575, 0.1018, 0.1379, 
0.03834, 0.048, 0.04131, 0.0926, 0.06242, 0.0965, 0.1972, 0.0742, 
0.0211, 0.04318, 0.05741, 0.1616, 0.06552, 0.1104, 0.04814, 0.11015, 
0.2081, 0.06341, 0.04329, 0.04486, 0.06179, 0.2114, 0.05545, 
0.1127, 0.04327, 0.03355, 0.07189), factors = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L), .Label = c("Phase1", "Phase2"), class = "factor")), row.names = c(NA, 
70L), class = "data.frame")
4

1 回答 1

0

如果您在不同治疗组的观察组和对照组之间进行测试,则公式是错误的,公式的左侧应该是响应变量,右侧应该是分组变量。

在您的情况下,您需要长时间旋转数据以获得如下内容:

library(tidyr)
Flaov[,c("Treatment","Observed","Control")] %>% 
pivot_longer(-c(Treatment)) %>% group_by(Treatment)
# A tibble: 140 x 3
# Groups:   Treatment [2]
   Treatment name      value
   <fct>     <chr>     <dbl>
 1 Phase1    Observed 0.106 
 2 Phase1    Control  0.106 
 3 Phase1    Observed 0.151 
 4 Phase1    Control  0.154 
 5 Phase1    Observed 0.0576
 6 Phase1    Control  0.0585
 7 Phase1    Observed 0.127 
 8 Phase1    Control  0.129 
 9 Phase1    Observed 0.0941
10 Phase1    Control  0.108 
# … with 130 more rows

然后我们进一步通过管道对其进行测试:

Flaov[,c("Treatment","Observed","Control")] %>% 
pivot_longer(-c(Treatment)) %>% 
group_by(Treatment) %>% 
t_test(value ~ name)

# A tibble: 2 x 9
  Treatment .y.   group1  group2      n1    n2 statistic    df     p
* <fct>     <chr> <chr>   <chr>    <int> <int>     <dbl> <dbl> <dbl>
1 Phase1    value Control Observed    46    46     0.482  90.0 0.631
2 Phase2    value Control Observed    24    24     0.323  46.0 0.748
于 2021-02-17T08:14:42.657 回答