根据R中的分布计算经验pvalue

时间:2019-05-20 15:12:24

标签: r

我有一个列表,例如:

> generate_all[1,]
   [1] 16 16 19 17 17 16 17 18 13 18 18 21 19  9 27 16 13 18 20 23 17 18 17 14 13 22 20 17 20 16 15 15 19 14 15 13 19 18 18 15 19
  [42] 18 18 20 21 24 12 14 14 15 17 16 15 11 19 22 18 14 22  9 21 14 20 17 23 13 21 15 17 19 20 15 14 19 23 14 17 14 20 16 17 20
  [83] 14 17 17 22 14 20 26 24 13 13 15 21 20 19 13 17 20 13 17 17 23 19 23 13 22 18 14 15 22 13 21 15 25 15 22 17 19 10 16 18 18
 [124] 12  8 22 15 27 21 13 15 19 21 17 11 18 16 22 19 20 17 20 19 22 24 22 18 11 21 16 10 12 29 13 10 19 18 19 19 26 13 16 20 18
 [165] 17 18 15 14 16 19 25 21 11 16 16 17 11 22 16 13 19 24 18 13 19 24 11 17 11 25 11 11 24 20 18 15  8 13 14 11 21 19 17 21 21
 [206] 16 20 20 21 14 15 17 15 18 17 20 19 13 14 25 13 17 25  9 13 14 19 18 19 18 23 23 24 19 14 24 17 21 17 16 13 20 18 14 20 17
 [247] 22 20 12 19 19 20 21 21 12 19 18 16 16 11 15 11 15 26 15 18 13 18 18 17 20 26 13 15 16 12 15 16 18 20  9 20 18 17 19 23 12
 [288] 13 25 11 17 16 17 21 19 17 19 29 14 22 15 19 21 20 18 18 16 12 18 21 13  7 17 20 16 16 26 18  9 12 17 18 20 17 20 28 11 17
 [329] 21 28 11 20 17 10  8 24 15 20 17 15 17  8 14 13 18 15 17 14 20 28 16 19 17 18 26 19 17 23 19 24 10 12 14 17 15 16 17 12 17
 [370] 13 13 18 18 14 18 22 20 14 14 11 16 17 16 14 16 23 10 15 20 16 16 14 16 20 12 10 18 16 15 16 15 25 13 20 22 20 18 13 15 24
 [411] 14 21 18 14 20 11 13 19 13 13 12 19 23 21 17 25 16 12 15 19 14 15 21 19 20 17 18 15 16 23 17 14 23 21 15 14 19 20 13 16 18
 [452] 13 18 16 23 16 14 17 17 16 23  8 18 22 18 15 19 15 16 25 19 13 20 17 22 18 10 20 19 13 19 18 14 15 15 14 11 16 17 17 25 14
 [493] 11 12 19 14 14 16 15 14 11  9 15 21 19 25 19 13 17 12 15 22 12 22 15 14 20 19 19 12 20 18 11 18 17 22 13 17 15 18 17 22 16
 [534] 15 14 14 29 14 21 17 24 21 14 17 20 19 19 16 17 13 21 15 20 14 12 22 17 21 13 15 21  9 24 15 14 12 17 15 17 15 21 17 24 19
 [575] 18 14 16 12 17 11 14 17 20 21 22 17 16 18 24 24 21 17 12 18 18 17 19 22 27 14 16 15 18 24 17 24 18 13 13 12 14 19 11 16 15
 [616] 16 23 17 20  9 15 14 17 16 23 15 17 18 18  7 11 27 21 14 20 17 18 19 17 22 18 11 16 14 18 25 17 19 15 22 20 14 18 19 25 25
 [657] 16 17 17 22 16 11 23  7 20 18 17 24 17 16 19 14 19 12 17 21 20 16 23 16 14 14 20 22 12 22 19 19 18 23 19 13 22 14 16 24 20
 [698] 18 24 29 16 13 11 25 11 16 16 17 26 20 15 14 16 18 13 15 14 13 23 15 17 17 14 15 26 18 13 14 23 22 17 16 18 17 19 16 17 17
 [739] 11 16 21 12 14 14 15 17 18 15 19 20 25 16 19 10 27 12 25 14 23 14 22 19 19 13 18 12 18 16 19 21 13 12 16 17 19 19 18 20 17
 [780] 20 18 15 16 13 14  9 13 13 20 20 16 19 13 12 13 17 20 14 18 17 24 14 10 16 16 18 16 20 14 13 12 19 18 11 21 23 10 13 17 21
 [821] 15 16  9 16 19 15 15 15 20 19 11 19 21 16 13 16 19 22 20 14 15 12 20 21 10 16 17 13 13 15 12 18 19 21 25 12 23 16 19 17 16
 [862] 20 18 18 13 22 17 18 13 10 20 16 17 15 24  9 16 17 14 20 21 15 19  7 19 18 21 19 23 18 22 15 15 14 18 20 21 19 23 25 15 11
 [903] 19 13 14 16 17 14 15 15 14 11 21 20 17 21 12 21 16 20 17 22 15 20 13 17 17 16 24 19 17 28 22 15 19 16 21 15 22 17 16 13 18
 [944]  9 13 15 26 19 20 21 16 23 22  9 14 20 21 23 17 22 22 24 20 18 17 14 17 18 15 20 15 22 20 19 17 20 21 18 22 13 17 23 16 17
 [985] 22 16 17 16 15 15 22 21 14 18 24 14 18 12 13 21

,我想计算一个经验p值。 这是想法:

if value_obs > mean(generate_all[1,]):
                pvalue=(sum(i > value for i in generate_all[1,])/lenght(generate_all[1,])
            else:
                pvalue=(sum(i < value for i in generate_all[1,])/lenght(generate_all[1,])

所以因为value_obs = 5和示例分布的均值为

> mean(generate_all[1,])

[1] 17.2347

我想计算分布中的number of values的{​​{1}},然后用above 5除以得到%

有人对R有想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但是如果您要为pvalue的每一列计算自定义data.frame,则可以使用R中提供的apply函数

pvalue <- apply(df, 2, function(x) if(value_obs > mean(x)){
  return(sum(x>5)/nrow(df))} else {
  return(sum(x<5)/nrow(df))})

在这里,pvalue是一个向量,其中包含为数据帧的每一列计算的p值。

您应查看Grouping functions (tapply, by, aggregate) and the *apply family以获得详细说明。