我为模拟创建了一个直方图,现在我需要找到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")
答案 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的端点。