- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在 Python 中根据某种丑陋的分布生成随机变量。我有一个 PMF 的显式表达式,但它涉及一些产品,这使得获取和反转 CDF 变得不愉快(有关 PMF 的显式形式,请参见下面的代码)。
本质上,我试图通过其 PMF 在 Python 中定义一个随机变量,然后让内置代码完成从分布中采样的艰苦工作。如果 RV 的支持是有限的,我知道如何做到这一点,但这里的支持是无限的。
根据@askewchan 下面的建议,我目前尝试运行的代码是:
import scipy as sp
import numpy as np
class x_gen(sp.stats.rv_discrete):
def _pmf(self,k,param):
num = np.arange(1+param, k+param, 1)
denom = np.arange(3+2*param, k+3+2*param, 1)
p = (2+param)*(np.prod(num)/np.prod(denom))
return p
pa_limit = limitrv_gen()
print pa_limit.rvs(alpha,n=1)
但是,这会在运行时返回错误:
File "limiting_sim.py", line 42, in _pmf
num = np.arange(1+param, k+param, 1)
TypeError: only length-1 arrays can be converted to Python scalars
基本上,np.arange()
列表似乎无法在 def _pmf()
函数中正常工作。我不知道为什么。任何人都可以在这里启发我和/或指出修复方法吗?
编辑 1: 清除了 askewchan 提出的一些问题,编辑反射(reflect)在上面。
编辑 2: askewchan 建议使用阶乘函数进行有趣的近似,但我正在寻找更精确的解决方案,例如我尝试使用 np.arange 的解决方案。
最佳答案
您应该能够像这样子类化 rv_discrete
:
class mydist_gen(rv_discrete):
def _pmf(self, n, param):
return yourpmf(n, param)
然后您可以创建一个分发实例:
mydist = mydist_gen()
并生成样本:
mydist.rvs(param, size=1000)
或者您可以创建一个卡住的分布对象:
mydistp = mydist(param)
最后生成样本:
mydistp.rvs(1000)
对于您的示例,这应该可行,因为 factorial
会自动广播。但是,对于足够大的 alpha
,它可能会失败:
import scipy as sp
import numpy as np
from scipy.misc import factorial
class limitrv_gen(sp.stats.rv_discrete):
def _pmf(self, k, alpha):
#num = np.prod(np.arange(1+alpha, k+alpha))
num = factorial(k+alpha-1) / factorial(alpha)
#denom = np.prod(np.arange(3+2*alpha, k+3+2*alpha))
denom = factorial(k + 2 + 2*alpha) / factorial(2 + 2*alpha)
return (2+alpha) * num / denom
pa_limit = limitrv_gen()
alpha = 100
pa_limit.rvs(alpha, size=10)
关于python - SciPy:从 PMF 生成自定义随机变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276631/
是否有任何函数或库可以像绘制样本的概率密度函数一样帮助我绘制样本的概率质量函数? 例如,使用 pandas,绘制 PDF 就像调用一样简单: sample.plot(kind="density") 如
我的用例是在小于 10 的所有点上评估 Poisson pmf,我会使用不同的 lambda 多次调用这样的函数。无法提前知道 lambda,因此我无法矢量化 lambda。 我从某个地方听说了一个
我试图在 Python 中根据某种丑陋的分布生成随机变量。我有一个 PMF 的显式表达式,但它涉及一些产品,这使得获取和反转 CDF 变得不愉快(有关 PMF 的显式形式,请参见下面的代码)。 本质上
是否有一个库可以帮助我在 python 中巧妙地绘制样本的概率质量函数,如下所示: 最佳答案 通过 matplotlib.pyplot 的主干模块 matplotlib.pyplot.stem(*ar
我正在使用 AppEngine 将我的 api 从 Python 移植到 Java。我决定使用JDO。我已经创建了模型,现在正在尝试创建一个持久保存到数据存储区的新对象。 我按照此处的说明进行操作:
我在 pandas 数据框中有以下数据集。我希望提取每个 user_id 的 trajectory 中每个项目的计数,计算/返回每个项目的概率质量函数 (pmf)在列表中,并通过 pmf 返回前 3
我正在尝试使用 scipy.stats (python) 中的 multinominal.pmf 函数。 当我在输入中所有概率都大于零的情况下使用此函数时,它工作正常。问题是当我想在其中一个概率为零时
假设一个黑盒随机数生成器在某个时间间隔内连续发出整数值(对于直接感兴趣的情况,[0, 255])。我想估计概率质量函数及其变化的一些度量,并且我想在新样本进入时定期更新这些估计,而不必存储到目前为止的
scipy/numpy 中是否有用于获取多项式的 PMF 的内置函数?我不确定 binom 是否以正确的方式概括,例如 # Attempt to define multinomial with n =
根据 App Engine 文档,PersistenceManagerFactory 只能在应用程序中创建一次。 它提供了这个示例: package guestbook; import javax.j
是否可以让scipy.stats.binom.pmf(x, n, p)返回试验次数(n),概率为,数字成功次数 (x) 和成功概率 (p) 已知吗? 示例问题: Alex 需要 throw 多少次才能
在下面的程序中,案例 1 尝试通过指向成员函数的指针使用默认参数。案例 2 尝试通过函数引用使用默认参数。案例 3 使用 operator() 中的默认参数。这里唯一有趣的断言是使用别名 can_ca
是否可以写一些f()采用类型的模板函数 T和指向签名成员函数的指针 void(T::*pmf)()作为(模板和/或函数)参数并返回 const char*指向成员函数的 __func__变量(或损坏的
我有一个联合概率质量函数数组,其形状例如 (1,2,3,4,5,6),我想计算概率表,以某些维度的值为条件(导出cpts),用于决策目的。 我现在想出的代码如下(输入是形式为 {'variable_1
我是一名优秀的程序员,十分优秀!