感觉这应该被问到了,但是搜索过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或更小的概率是什么?
答案 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中的教程可能会有所帮助。