感觉应该问这个问题,但是搜索了统计数据。我找不到答案
我有这个R中的数字向量:
x <- c(0.01, 0.50, 0.00, 0.28, 0.00, 0.15, 0.67, 0.00, 0.23, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.23, 0.00, 0.15, 0.00)
使用R代码,我如何计算一个范围的值的概率?例如,值在0到0.01之间的概率是多少?
另外,使用R代码,一个值等于或小于0.3的概率是多少?
当你说"between"时,你应该说明包括哪些端点(如果有的话)
有很多方法可以解决这些问题;我不是在用有效的方法来做这些,只是举例说明各种方法。
p (a
diff(ecdf(x)(c(0,0.01)))
and for p (X <= b):
ecdf(x)(0.3)
另一种获取p (X= X)的方法:
table(x)/length(x)
和p (X <= X):
cumsum(table(x))/length(x)
如果你想包含两个端点,你可以这样做:
For p (a <= X <= b):
p <- table(x)/length(x)
diff(ecdf(x)(c(0,0.01)))+ p[names(p)=="0"]
或:
p <- table(x)/length(x)
sum(p[names(p) %in% c("0","0.01")])
或仅
length(x[0<=x & x<=0.01])/length(x)
你还知道这些数字代表什么吗?例如,我注意到没有一个数字是负的。而且数字0出现了很多次(11次)所以假设没有一个数字是负的,你处理的不是正态分布。样本中只有19个数字,对这些数字进行任何计算都会有很大的误差条,除非你知道这些数字都来自一个特定的分布。否则,像"一个值等于或小于0.3的概率是多少"这样的问题的答案只能来自计数。样本中有19个数字,并且只有两个数字大于0.3,则值为0.3或更小的概率为17/19。
我刚刚创建了一个快速函数,它告诉您数值向量中大于等于start
且小于等于end
的值的比例:
emp_prob<-function(x,start,end){
sum(end>=x & x>=start)/length(x)}
x <- c(0.01, 0.50, 0.00, 0.28, 0.00, 0.15, 0.67, 0.00, 0.23, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.23, 0.00, 0.15, 0.00)
emp_prob(x,0,1)
[1] 1
这是一个非常基本的问题,所以R教程可能会有所帮助。