Tag: 统计

Ruby:在代码中使用rand(),但编写测试来validation概率

我有一些代码可以根据加权随机提供的东西。 重量更重的东西更有可能随机选择。 现在我是一个很好的rubyist,我想用测试来覆盖所有这些代码。 我想测试根据正确的概率获取的东西。 那么我该如何测试呢? 为随机的东西创建测试会使实际与预期的比较变得非常困难。 我有一些想法,以及为什么它们不会很好用: Stub Kernel.rand在我的测试中返回固定值。 这很酷,但rand()被多次调用,我不确定我是否可以通过足够的控制来测试它以测试我需要的东西。 获取随机项的次数很多次,并将实际比率与预期比率进行比较。 但除非我可以无数次运行它,否则这将永远不会是完美的,如果我在RNG中运气不好,可能会间歇性地失败。 使用一致的随机种子。 这使RNG可重复,但它仍然没有给我任何validation项目A将在80%的时间发生(例如)。 那么我可以使用什么样的方法来编写随机概率的测试覆盖率?

如何在半复杂场景中正确检测局部最大值和曲线窗口?

我有一系列数据,需要在一定数量的读数(窗口大小)内检测系列中的峰值,并排除一定程度的背景“噪音”。 我还需要捕捉可感知曲线的起点和终点(即,当它开始滴答时,然后当它停止滴答时)。 数据是高精度浮子。 这是一个快速草图,它捕捉了我在视觉上遇到的最常见情况: 我尝试的一种方法是沿着曲线向后通过一个大小为X的窗口以检测峰值。 它开始运作良好,但我错过了最初没有预料到的很多条件。 我开始研究的另一种方法是增长窗口,可以发现更长的持续时间曲线。 另一种方法使用基于更多微积分的方法来监视一些速度/梯度方面。 似乎没有人达到最佳位置,可能是由于我缺乏统计分析经验。 也许我需要使用某种统计分析软件包来覆盖我的基础而不是编写我自己的算法? 或者是否有一种有效的方法可以使用某种本地最大技术直接使用SQL来解决这个问题? 我只是不确定如何有效地处理这个问题。 我尝试的每种方法似乎都会丢失各种阈值,检测太多峰值或不捕获整个事件(在读取过程中过早报告峰值数据点)。 最终这是在Ruby中实现的,所以如果你可以建议用Ruby来解决这个问题的最有效和最正确的方法,那么我也会接受一种语言无关的算法方法 。 或者是否有某个库可以解决我在检测最大峰值的情况下遇到的各种问题?

ElasticSearch对整个字段进行聚合

如何编写考虑整个字段值的ElasticSearch术语聚合查询,而不是单个令牌? 例如,我想按城市名称进行汇总,但以下内容将new , york , san和francisco作为单独的桶返回,而不是new york和san francisco作为预期的桶。 curl -XPOST “http://localhost:9200/cities/_search” -d’ { “size”: 0, “aggs” : { “cities” : { “terms” : { “field” : “city”, “min_doc_count”: 10 } } } }’

趋势算法

我正在开发各种微型论坛,由特殊用户发布一个快速(接近推文大小)的主题消息,订阅者可以使用他们自己的大小相同的消息进行响应。 直截了当,没有“挖掘”或任何forms的投票,只是按时间顺序排列每个主题消息的响应。 但预计会有高流量。 我们希望根据他们使用0到10的等级的响应动态来标记主题消息。 谷歌搜索趋势算法和开源社区应用程序示例已有一段时间了,到目前为止已经收集了两个有趣的参考资料,我还没有完全理解: 了解用于衡量趋势的算法,使用基线趋势算法比较维基百科综合浏览量的讨论,此处为SO。 布兰妮斯皮尔斯问题 ,一篇关于如何在处理大量数据流时对搜索术语进行排名的深入文章。 从第一次开始,我理解需要检查活动的斜率,并平衡两个活动规模差异很大的项目之间的权重。 但是,我如何比较许多项目,随着时间的推移迅速增加? 然后,如何将“嗡嗡声等级”中的项目从0分到10分? 第二个参考是令人着迷的,但在这一点上我的头脑。 从第一遍开始,我了解到需要保持内存使用的稳定性,同时保留计数器并在必要时存储对项目的引用。 但我还没有为我的具体用例找到合适的算法。 值得注意的是,我来自非计算机科学和非统计学背景。 请耐心等待:)任何帮助和代码示例(特别是在Ruby中)将不胜感激。