标签: poisson

Python/Numpy/Scipy:用不同的lambda绘制泊松随机值

我的问题是以最有效的方式提取N泊松随机值(RV),每个值具有不同的平均值/速率Lam.基本上是size(RV) == size(Lam).

这是一个天真(非常慢)的实现:

import numpy as NP

def multi_rate_poisson(Lam):
    rv = NP.zeros(NP.size(Lam))
    for i,lam in enumerate(Lam):
        rv[i] = NP.random.poisson(lam=lam, size=1)
    return rv
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上,1e6样品给出:

Lam = NP.random.rand(1e6) + 1
timeit multi_poisson(Lam)
1 loops, best of 3: 4.82 s per loop
Run Code Online (Sandbox Code Playgroud)

有可能从中改进吗?

python random numpy poisson scipy

6
推荐指数
1
解决办法
3890
查看次数

使用概率分布生成范围内的随机整数

我有一个问题,我想使用概率分布生成1到5之间的一组随机整数值.

Poisson和Inverse Gamma是两个分布,它们显示了我所发现的特征(多数均值,更低的数字).

我正在寻找使用Apache Commons Math,但我不知道如何使用可用的发行版生成我想要的数字.

java random probability poisson apache-commons-math

6
推荐指数
1
解决办法
7702
查看次数

在c ++中生成泊松变量

我实现了这个函数来生成一个泊松随机变量

typedef long unsigned int luint;
luint poisson(luint lambda) {
    double L = exp(-double(lambda));
    luint k = 0;
    double p = 1;
    do {
        k++;
        p *= mrand.rand();
    } while( p > L);
    return (k-1);
}
Run Code Online (Sandbox Code Playgroud)

其中mrand是MersenneTwister随机数生成器.我发现,当我增加lambda时,预期的分布将是错误的,其平均值在750左右饱和.是由于数值近似还是我犯了什么错误?

c++ knuth probability poisson

5
推荐指数
1
解决办法
6991
查看次数

random.expovariate等效于泊松过程

我在某处读到python库函数random.expovariate产生的等效间隔等于Poisson Process事件.
是真的如此,还是应该对结果强加一些其他功能?

python math statistics poisson

5
推荐指数
2
解决办法
9243
查看次数

理解随机数发生器的泊松分布

我正在使用C++ 11中提供的随机数生成器.目前,我正在使用统一分布,这应该给我一个相同的概率来获得我指定的A和B范围内的任何数字.

但是,我对生成泊松分布感到困惑.虽然我理解如何确定泊松概率,但我不明白如何根据泊松分布"随机分布"一系列随机数.

例如,泊松分布的C++ 11构造函数采用一个参数--λ,即分布均值

std::tr1::poisson_distribution<double> poisson(7.0);
std::cout << poisson(eng) << std::endl;
Run Code Online (Sandbox Code Playgroud)

在泊松概率问题中,这等于给定间隔期间的预期成功/发生次数.但是,我不明白它在这个例子中代表什么.随机数场景中的"成功"/"发生"是什么?

我感谢任何帮助或参考资料,我可以用它来帮助我理解这一点.

c++ random poisson

5
推荐指数
1
解决办法
4411
查看次数

R中的Rate变量的回归

我的任务是开发一个回归模型,查看不同项目中的学生注册情况.这是一个非常好的,干净的数据集,其中注册计数遵循泊松分布.我在R中拟合模型(使用GLM和零膨胀泊松.)得到的残差似乎是合理的.

然而,当时我被要求将学生的数量改为"费率",这个数字计算为学生/学校人口(每个学校都有自己的人口.))现在这不再是计数变量,而是0到1之间的比例这被认为是一项计划中的"入学比例".

这个"比率"(学生/人口)不再是泊松,但肯定也不正常.所以,我对适当的分布有点迷失,后续的模型代表它.

对数正态分布似乎很适合这个速率参数,但是我有很多0值,所以它实际上不适合.

关于这个新参数的最佳分布形式的任何建议,以及如何在R中建模?

谢谢!

regression r poisson glm

5
推荐指数
1
解决办法
2994
查看次数

Python 3中带numpy的Poisson Point Process,无秘

我需要在Python 3中编写一个函数,该函数返回根据均匀空间泊松过程分散的矩形字段(例如100x100点)上的位置(x,y)的数组。

到目前为止,我已经使用Python代码找到了该资源,但是不幸的是,我无法找到/安装适用于Python 3的scipy:

http://connor-johnson.com/2014/02/25/spatial-point-processes/

但是,它帮助我了解了泊松积分过程实际上是什么以及它如何工作。

我已经使用numpy.random.poisson已有一段时间了,但是我很难解释它的返回结果。

http://docs.scipy.org/doc/numpy/reference/generation/numpy.random.poisson.html

>>> import numpy as np
>>> np.random.poisson(1, (1, 5, 5))
array([[[0, 2, 0, 1, 0],
        [3, 2, 0, 2, 1],
        [0, 1, 3, 3, 2],
        [0, 1, 2, 0, 2],
        [1, 2, 1, 0, 3]]])
Run Code Online (Sandbox Code Playgroud)

我认为该命令的作用是创建一个5x5字段 =(1、5、5),并在该字段上以lambda = 1的速率分散对象。结果矩阵中显示的数字是物体位于该特定位置的概率。

我如何根据同一个空间泊松过程在5x5场上散射10个对象?我的第一个猜测是遍历整个数组,然后在每个位置上将一个对象插入一个“ 3”,然后在每个位置上将一个对象插入一个“ 2”,依此类推,但我不确定实际的概率应用于确定是否应插入对象。

根据以下资源,我可以通过简单地将速率和对象计数(10 * 1 = 10)相乘并将该值用作我的lambda来模拟以速率1散布在一个字段上的10个对象。

>>> np.random.poisson(10, (1, 5, 5))
array([[[12, 12, 10, 16, 16],
        [ 8,  6,  8, 12,  9],
        [12,  4, 10,  3, …
Run Code Online (Sandbox Code Playgroud)

python numpy spatial poisson

5
推荐指数
1
解决办法
2546
查看次数

指数危险模型系数的相反方向(存活和glm泊松)

我想用R中的一个预测器来估计指数危险模型.出于某种原因,当我使用带有偏移log t的glm poisson并且当我只使用生存包中的幸存函数时,我得到具有相反符号的系数.我确信这个解释非常明显,但我无法弄清楚.

t <- c(89,74,23,74,53,3,177,44,28,43,25,24,31,111,57,20,19,137,45,48,9,17,4,59,7,26,180,56,36,51,6,71,23,6,13,28,16,180,16,25,6,25,4,5,32,94,106,1,69,63,31)
d <- c(0,1,1,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,1,1,1,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1)
p <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1)
df <- data.frame(d,t,p)

# exponential hazards model using poisson with offest log(t)
summary(glm(d ~ offset(log(t)) + p, data = df, family = "poisson"))
Run Code Online (Sandbox Code Playgroud)

生产:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -5.3868     0.7070  -7.619 2.56e-14 ***
p             1.3932     0.7264   1.918   0.0551 .
Run Code Online (Sandbox Code Playgroud)

相比

# exponential hazards model using survreg exponential
require(survival)
summary(survreg(Surv(t,d) ~ p, data = df, dist = "exponential"))
Run Code Online (Sandbox Code Playgroud)

生产:

            Value Std. Error     z        p …
Run Code Online (Sandbox Code Playgroud)

r poisson exponential survival-analysis

5
推荐指数
1
解决办法
4219
查看次数

Zeroinfl“系统在计算上是奇异的”,而预测变量没有相关性

我正在尝试对一年中工人缺勤天数的计数数据(因变量)进行建模。我有一组预测变量,包括有关工人、有关他们的工作等的信息,其中大多数是分类变量。因此,需要估计大量系数 (83),但由于我有超过 600 000 行,我认为这应该不会有问题。此外,我的数据集中没有缺失值。

我的因变量包含很多零值,所以我想使用包zeroinfl的函数来估计零膨胀模型(泊松或负二项式) pscl,代码如下:

zpoisson <- zeroinfl(formule,data=train,dist = "poisson",link="logit")
Run Code Online (Sandbox Code Playgroud)

但长时间运行后出现以下错误:

Error in solve.default(as.matrix(fit$hessian)) : system is computationally singular: reciprocal condition number = 1.67826e-41
Run Code Online (Sandbox Code Playgroud)

我认为这个错误意味着我的一些协变量是相关的,但在检查成对相关性和方差膨胀因子(VIF)时似乎并非如此。此外,我还估计了其他模型,如 logit 和 Poisson 或负二项式计数模型,没有出现问题,而这些类型的模型对相关预测变量也很敏感。

您知道为什么该zeroinfl功能不起作用吗?这是否与我有太多的预测变量有关,即使它们不相关?我已经尝试使用该Boruta算法删除一些预测变量,但它保留了所有预测变量。

在此先感谢您的帮助。

regression r poisson singular

5
推荐指数
1
解决办法
2952
查看次数

Python:endog 已计算为具有多列的数组

我正在尝试运行泊松模型,如下所示:

poisson_model_xg = smf.glm(formula="xG ~ home + team + opponent", data=xg_model_data, 
                        family=sm.families.Poisson()).fit()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError:endog 已计算为具有形状 (760, 9) 的多列数组。当转换为 endog 的变量是非数字(例如 bool 或 str)时,就会发生这种情况。

但我无法弄清楚这是什么意思,因为我所有的数据框都是数字:

xg_model_data.apply(lambda s: pd.to_numeric(s, errors='coerce').notnull().all())
Out[10]: 
goals       True
xG          True
team        True
opponent    True
home        True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

python type-conversion poisson

5
推荐指数
1
解决办法
1万
查看次数