感觉这个问题应该被问到,但是搜索了stats.stackexchange后我找不到答案。
我在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的概率是多少?
发布于 2014-05-02 23:22:03
当您说“介于”时,您应该说明包括哪些端点(如果有的话)。
有很多方法可以解决这些问题;我并不是以有效的方式来解决这些问题,只是演示了各种方法。
P(a
diff(ecdf(x)(c(0,0.01)))
对于P(X <= b):
ecdf(x)(0.3)
另一种方法,用于获得P(X=x):
table(x)/length(x)
为了得到P(X <= x):
cumsum(table(x))/length(x)
因此,如果您想要包含两个端点,可以这样做:
对于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)发布于 2014-05-03 02:12:59
你还知道其他关于这些数字代表什么的信息吗?例如,我注意到这些数字都不是负数。而且数字0出现的次数很多(11次),所以假设没有一个数字是负的,那么你处理的不是正态分布。样本中只有19个数字,在你对这些数字进行的任何计算中都会有很大的误差条,除非你知道这些数字都来自特定的分布。否则,像“一个值小于等于0.3的概率是多少”这样的问题的答案就来自于计数。如果样本中有19个数字,并且只有两个数字大于0.3,则值小于或等于0.3的概率为17/19。
发布于 2014-05-02 23:37:52
我刚刚创建了一个快速函数,它告诉您数值向量中大于或等于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的教程可能会有所帮助。
https://stackoverflow.com/questions/23431522
复制相似问题