【问题标题】:Bootstrapping Binomial Distribution自举二项分布
【发布时间】:2020-02-18 06:35:00
【问题描述】:

我正在研究一个简单的问题,我想编写一个函数,它会从二项分布(比如 60% 1 和 40% 0)中随机抽取 n 个大小为 q 的样本,然后从数组中的每个样本(以便我以后可以分析该数组)。例如,我想模拟,如果我从 60% 1 和 40% 0 的分布中抽取 1,000 个样本,每个样本大小为 30,我想输出一个长度为 1,000 的数组,其中每一行代表1 来自该样本。

【问题讨论】:

  • 你试过什么?

标签: python statistics sampling


【解决方案1】:

你的意思是伯努利分布吗?

from scipy.stats import bernoulli
data = [bernoulli.rvs(0.6, size=30) for _ in range(1000)]

【讨论】:

  • 如果要数“1”,则:[sum(bernoulli.rvs(0.6, size=30)) for _ in range(1000)]
【解决方案2】:

要得到1的个数,会是

import numpy as np
sim = np.random.binomial(n=30,p=0.6,size=1000)

要真正获得平局:

sim = np.random.binomial(n=1,p=0.6,size=(1000,30))
sim.shape
import matplotlib.pyplot as plt
plt.hist(np.mean(sim,axis=1))

【讨论】:

  • 正是我的想法谢谢。您是否知道如何获得 y 轴上的百分比?使用选项 density=True 时,由于某种原因不起作用。
  • draw_means=np.mean(sim,axis=1) plt.hist(draw_means,bins=50,weights=np.repeat(1/len(draw_means),len(draw_means)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多