使用具有不同样本大小的数据拟合R中的二项分布

时间:2018-03-26 19:00:31

标签: r statistics

我有一些看起来像这样的数据:

    x    y
1:  3    1
2:  6    1
3:  1    0
4: 31    8
5:  1    0
---

(编辑:如果有帮助,这里是x和y的样本向量

    x = c(3, 6, 1, 31, 1, 18, 73, 29, 2, 1)

    y = c(1, 1, 0, 8, 0, 0, 8, 1, 0, 0)

左侧(x)的列是我的样本大小,右侧的列(y)是每个样本中出现的次数。

我想使用二项分布拟合这些数据,以便找到成功的概率(p)。到目前为止,所有用于拟合二项分布的示例都假设所有数据点都有一个恒定的样本大小(n),但这里我的样本量不同。

  1. 如何将具有不同样本大小的数据拟合到二项分布中?期望的结果是p,即样本量为1时观察成功的概率。

  2. 如何使用R?

  3. 完成这样的拟合

    (编辑#2:下面的响应概述了解决方案和相关的R代码,如果我假设每个样本中观察到的事件可以假设是独立的,除了假设样本本身也是独立的。这适用于我的数据 - 谢谢!)

2 个答案:

答案 0 :(得分:0)

如何计算经验成功概率

x <- c(3, 6, 1, 31, 1, 18, 73, 29, 2, 1)
y <-  c(1, 1, 0, 8, 0, 0, 8, 1, 0, 0)

avr.sample <- mean(x)
avr.success <- mean(y)

p <- avr.success/avr.sample
[1] 0.1151515

或使用binom.test

z <- x-y # number of fails
binom.test(x = c(sum(y), sum(z)))
Exact binomial test

data:  c(sum(y), sum(z))
number of successes = 19, number of trials = 165, p-value < 2.2e-16
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.07077061 0.17397215
sample estimates:
probability of success 
             0.1151515 

然而,这假定:

  1. 与行对应的事件彼此独立
  2. 同一行中的事件也是相互独立的
  3. 这意味着在实验的每次迭代k(即x行)中,我们执行一项操作,例如投掷x[k] 相同的骰子(不一定)公平骰子)和成功意味着在n中获得给定(预定)的数字1:6

    如果我们假设在每次迭代1中投掷x[k]骰子时尝试获得k时达到了上述结果,则可以说获得a的经验概率1是(〜)0.1151515

    最后,有问题的分发将是B(sum(x), p)

    PS:在上图中,不仅在任何给定的迭代中,而且在所有迭代中,骰子彼此相同。

答案 1 :(得分:0)

library(bbmle)

x = c(3, 6, 1, 31, 1, 18, 73, 29, 2, 1)
y = c(1, 1, 0, 8, 0, 0, 8, 1, 0, 0)

mf = function(prob, x, size){
  -sum(dbinom(x, size, prob, log=TRUE))
}

m1 = mle2(mf, start=list(prob=0.01), data=list(x=y, size=x))
print(m1)

系数: 概率 0.1151535

对数似然:-13.47