计算经验概率

时间:2014-05-02 15:08:24

标签: r probability

感觉这应该被问到了,但是搜索过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或更小的概率是什么?

3 个答案:

答案 0 :(得分:2)

当你说&#34;之间&#34;你应该说明包含哪些端点(如果有的话)

有很多方法可以解决这些问题;我没有以有效的方式做这些,只是说明了各种方法。

P(a&lt; X&lt; = b)类型问题的一种方法:

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)

答案 1 :(得分:1)

你知道这些数字代表什么吗?例如,我注意到这些数字都不是负数。数字0也经常发生(11次),所以假设没有数字是负数,你就不会处理正态分布。样本中只有19个数字,对于使用这些数字进行的任何计算都会出现大的误差条,除非您知道例如这些数字都来自特定的分布。否则,问题的答案如&#34;值为0.3或更小的概率是什么&#34;只是来自计数。如果样本中有19个数字,只有两个数字大于0.3,则值为0.3或更小的概率为17/19。

答案 2 :(得分:0)

我刚刚创建了一个快速函数,告诉您数值向量中值大于或等于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中的教程可能会有所帮助。