r语言 - 计算经验概率



感觉应该问这个问题,但是搜索了统计数据。我找不到答案

我有这个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 <= b)类型问题:

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教程可能会有所帮助。

最新更新