数据框testdata中有若干个表格的数据,其中的8个表格数据如下: a,b,c,d,a1,b1,c1,d1 1 22,1,5,3,13.2266667,1.03333333,8.99,7.75 2 8,0,0,1,3.6906475,0.29136691,2.6546763,2.3633094 3 0,1,0,0,0.3925926,0.03703704,0.3037037,0.2666667 4 0,1,0,0,0.3925926,0.03703704,0.3037037,0.2666667 5 0,1,0,0,0.3925926,0.03703704,0.3037037,0.2666667 6 16,1,31,19,24.327381,1.99404762,22.5327381,18.1458333 7 2,0,7,2,4.2428571,0.35357143,3.4964286,2.9071429 8 0,0,0,5,1.9343066,0.16423358,1.4963504,1.4051095 说明:上面8个表格中各有8个数值,每个表格中的前四个值为观测频次(a,b,c,d),后面四个值为前面四个观测频次对应的期望频次(a1,b1,c1,d1)。例如,第一个表格中的四个观测频次为22,1,5,3,它们各自对应的期望频次为13.2266667,1.03333333,8.99,7.75。
我现在需要对每个表格中的每个观测频次进行二项分布检验(binomial test),计算出p值。 计算使用的公式为: binom.test(观测频次, 观测频次总数, 期望频次/(即除以)观测频次总数, alternative="??")$p.value,其中alternative选项部分由观测频次与其对应的期望频次大小关系来决定,当观测频次大于期望频次时,选用alternative="greater";当观测频次小于期望频次时,选用alternative="less". 例如第一个表格中四个观测频次的总数为31(即22+1+5+3),对第一个值22与其对应的期望频次13.2266667进行二项分布检验,计算过程为binom.test(22,31,13.2266667/31,alternative="greater")$p.value 最后的p值为0.001356598;对第二个值1与其对应的期望频次1.03333333进行二项分布检验,计算过程为binom.test(1,31,1.03333333/31,alternative="less")$p.value,最后的p值为 0.723323。
问题:1. 要对每个表格中的的每个观测频次与其期望频次进行二项分布检验,如何一次行计算出其所有p值? 2. 再将计算出的所有p值进行对数转换(以10为底)? |