我一直在四处寻找,但我不知道该怎么办.
我发现这个页面在最后一段中说:
使用这个简单的方法得到一个从泊松分布中取得的随机数的简单生成器:如果x 1,x 2,...是一个在0和1之间均匀分布的随机数序列,k是第一个整数,乘积x 1 ·x 2 ·...·x k + 1 <e -λ
我发现了另一个描述如何生成二项式数的页面,但我认为它使用的是泊松生成的近似值,这对我没有帮助.
例如,考虑二项式随机数.二项式随机数是硬币的N次投掷中的头数,在任何单次投掷中具有头部的概率p.如果在区间(0,1)上生成N个均匀随机数并计算小于p的数,则计数是具有参数N和p的二项式随机数.
我知道有库可以做到这一点,但我不能使用它们,只能使用语言提供的标准统一生成器(在本例中为java).
在Excel(或OpenOffice Calc)中使用POISSON函数时,它需要两个参数:
并返回一个浮点数.
在Python(我尝试过RandomArray和NumPy)中,它返回一个随机泊松数的数组.我真正想要的是这个事件将发生的百分比(它是一个常数,并且数组每次都有不同的数字 - 所以它是一个平均数?).
例如:
print poisson(2.6,6)
Run Code Online (Sandbox Code Playgroud)
返回[1 3 3 0 1 3](每次运行它都会有所不同).
我从calc/excel得到的数字是3.19(POISSON(6,2.16,0)*100).
我使用python的poisson错误(没有双关语!)或者我错过了什么?
有没有办法随机生成一组正数,使它们具有所需的均值和标准差?
我有一个算法来生成具有高斯分布的数字,但我不知道如何以保留均值和标准差的方式处理负数.
看起来泊松分布可能是一个很好的近似值,但它只需要一个均值.
编辑:回复中有一些混乱,所以我会试着澄清一下.
我有一组数字给出了平均值和标准差.我想生成一组大小相同的数字,具有相等的均值和标准差.通常情况下,我会使用高斯分布来执行此操作,但在这种情况下,我有一个额外的约束,所有值必须大于零.
我正在寻找的算法不需要是基于高斯的(从评论到目前为止判断,它可能不应该是)并且不需要是完美的.如果得到的数字集的平均值/标准偏差略有不同并不重要 - 我只想要一些通常会在球场上的东西.
想象一下,我有一组x的测量值,这些测量值在时间t 0 ... t N被许多过程x 0 ... x N所取.假设在时间t我想基于我不知道的长期趋势的假设来估计x的当前值,并且可以从诸如指数平滑的算法预测x.由于我们有很多进程,N可以变得非常大,我不能存储多个值(例如以前的状态).
这里的一种方法是调整正常指数平滑算法.如果样品采取定期,我会保持一个估计Ÿ ñ这样的:
y n = α.y n-1 +(1 - α).X ñ
在采样不规则的情况下,这种方法并不是很好,因为许多样本在一起会产生不成比例的影响.因此,这个公式可以适用于:
ÿ Ñ = α Ñ.ý N-1 +(1 - α Ñ).X ñ
哪里
α Ñ = È -k(吨.ñ -吨N-1 )
IE根据前两个样本之间的间隔动态调整平滑常数.我很满意这种方法,似乎有效.这是这里给出的第一个答案,Eckner在2012年的论文(PDF)中给出了这些技术的一个很好的总结.
现在,我的问题如下.我想调整上述内容来估计发生率.偶尔会发生一个事件.使用类似的指数技术,我想估计事件发生的速率.
两个明显的策略是:
我试图了解如何在Java中实现HashMap.我决定尝试理解该课程的每一行(代码和评论),显然我很快就遇到了阻力.以下代码片段来自HashMap类,并讨论泊松分布:
- 理想情况下,在随机hashCodes下,频率为
- 箱中的节点遵循泊松分布
- (http://en.wikipedia.org/wiki/Poisson_distribution)带有
- 默认大小调整的平均参数约为0.5
- 阈值为0.75,虽然因为有很大的差异
- 调整粒度.忽略方差,预期
- 列表大小k的出现是(exp(-0.5)*pow(0.5,k)/
- 阶乘(K)).第一个值是:*
- 0:0.60653066
- 1:0.30326533
- 2:0.07581633
- 3:0.01263606
- 4:0.00157952
- 5:0.00015795
- 6:0.00001316
- 7:0.00000094
- 8:0.00000006
- 更多:不到千万分之一
我是数学中的普通人,必须先了解泊松分布是什么.感谢简单的视频向我解释.
现在,即使了解了如何使用Poisson计算概率,我也无法理解上面描述的内容.
有人可以用更简单的语言解释一下,如果可能,请举例说明吗?这将使我的任务更有趣.
提前致谢
我想生成一个泊松过程.如果到时间t的到达次数是N(t)并且我有一个带参数λ的泊松分布,我该如何产生N(t)?我将如何在C++中执行此操作?
我原本想用泊松分布生成过程.但是,我对我需要的过程中的参数感到困惑; 我以为我可以使用N(t),但是它告诉我在间隔(0,t)上发生了多少到达,这不是我想要的.所以,我认为我可以使用N(t2)-N(t1) )获得区间[t1,t2]上的到达次数.由于N(t)〜泊松(tx lambda),我可以使用Poisson(t2 x lambda)-Poisson(t1 x lambda)但我不希望一个区间内的到达人数.
相反,我想生成到达时出现的明确时间.
我可以通过使间隔[t2,t1]足够小以使每个间隔只有一个到达(发生为| t2-t1 | - > 0)来做到这一点.
我为R找到了一个包'bivpois',用于评估两个相关泊松过程的模型(例如,足球比赛中主队和客队的进球数).但是,这个软件包似乎不再适用于较新版本的R.
有没有合理的方法来修改glm()函数来执行类似的过程,或者在我的新版本的R上运行这个旧的包?我发现关于这些类型的过程的文献很少,并且在STATA等其他统计软件包中很容易实现.
任何建议将不胜感激.
据我所知,标准发生器用于正态分布.我必须根据Normal,Uniform和Poisson分布生成随机数,但我似乎找不到最后2个的类.
我必须在0 - 999999范围内生成它们.
我在C中编写一些代码,从R动态调用.
此代码生成一个随机泊松过程的路径,直到所需的时间T.因此,在每次调用我的C函数时,返回的向量的长度将根据生成的随机数而不同.
我必须创建什么R数据结构?一个LISTSXP?另一个?
我怎样才能创建它,我怎样才能添加它?特别是如何将它还给R?
感谢帮助.
我知道Knuth用于生成随机泊松分布数的算法(在Java下面)但是我如何将其转换为generateEvent()随机调用方法?
int poissonRandomNumber(int lambda) {
double L = Math.exp(-lambda);
int k = 0;
double p = 1;
do {
k = k + 1;
double u = Math.random();
p = p * u;
} while (p > L);
return k - 1;
}
Run Code Online (Sandbox Code Playgroud) poisson ×10
java ×4
random ×4
algorithm ×2
r ×2
statistics ×2
c ×1
c++ ×1
distribution ×1
events ×1
exponential ×1
gaussian ×1
generator ×1
hashmap ×1
math ×1
probability ×1
python ×1
simulation ×1
smoothing ×1