【问题标题】:Calculating empirical probabilities计算经验概率
【发布时间】:2019-02-12 02:18:54
【问题描述】:

感觉应该问这个问题,但是搜索了 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 的概率是多少?

【问题讨论】:

  • 你想凭经验回答一些值之间的值的比例,还是想拟合某种概率密度估计?
  • 这就是我所追求的:“凭经验回答一些值之间的值的比例”。但是,如果您能展示如何“拟合某种概率密度估计”,那就太好了
  • 这纯属个人兴趣。事实上,我感到内疚,因为我整天都在摆弄概率分布,而我应该试图完成我的论文

标签: r probability


【解决方案1】:

当你说“介于”时,你应该说包括哪些端点(如果有的话)

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

P(a

diff(ecdf(x)(c(0,0.01)))

对于 P(X

ecdf(x)(0.3)

另一种获取 P(X=x) 的方法:

table(x)/length(x)

为了得到 P(X

cumsum(table(x))/length(x)

所以如果你想同时包含两个端点,你可以这样做:

对于 P(a

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)

【讨论】:

    【解决方案2】:

    你还知道这些数字代表什么吗?例如,我注意到没有一个数字是负数。数字 0 也经常出现(11 次),所以鉴于没有一个数字是负数,你不是在处理正态分布。样本中只有 19 个数字,除非您知道,否则您对这些数字进行的任何计算都会出现很大的误差线。这些数字都来自特定的分布。否则,诸如“值等于或小于 0.3 的概率是多少”之类的问题的答案只是来自计数。样本中有 19 个数字,只有两个数字大于 0.3,一个值小于等于 0.3 的概率为 17/19。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        相关资源
        最近更新 更多