如何在直方图中找到给定范围的总频率?

时间:2015-09-21 13:56:36

标签: r histogram frequency

我为模拟创建了一个直方图,现在我需要找到x变量大于给定值的实例总数。具体来说,我的数据是相关性(范围从-1到1,bin大小为0.05),我想找到相关性大于0.1的事件的百分比。找到大于0.1的事件总数很好,因为它很容易计算。

library(psych) 
library(lessR)

corrData=NULL 
for (i in 1:1000){ 
    x1 <- rnorm(mean=0, sd = 1, n=20) 
    x2 <- rnorm(mean=0, sd = 1, n=20) 
    data <- data.frame(x1,x2) 
    r <- with(data, cor(x1, x2)) 
    corrData <- append(corrData,r) 
} 

describe(corrData) 
hist <- hist(corrData, breaks=seq(-1,1,by=.05), main="N=20") 
describe(hist) count(0.1, "N=20")

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

N=500
bh=hist(runif(N,-1,1))
#str(bh)
sum(bh$counts[bh$mids>=.1])/N

答案 1 :(得分:0)

查看hist实际给你的内容(请参阅?hist):

set.seed(10230)
x<-hist(2*runif(1000)-1)
> str(x)
List of 6
 $ breaks  : num [1:11] -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 ...
 $ counts  : int [1:10] 92 99 100 105 92 116 95 102 100 99
 $ density : num [1:10] 0.46 0.495 0.5 0.525 0.46 0.58 0.475 0.51 0.5 0.495
 $ mids    : num [1:10] -0.9 -0.7 -0.5 -0.3 -0.1 0.1 0.3 0.5 0.7 0.9
 $ xname   : chr "2 * runif(1000) - 1"
 $ equidist: logi TRUE
 - attr(*, "class")= chr "histogram"

breaks列表项告诉您&#34;捕获&#34;的端点。间隔。 counts项告诉您这些中断定义的(少一个)分档中的计数。

因此,为了尽可能地使用您的hist对象尽可能接近您想要的内容,您可以这样做:

sum(x$counts[which(x$breaks>=.1)-1L])/sum(x$counts)

但是,正如@Frank所说,这可能是不正确的,特别是如果包含.1的bin没有.1的端点。