当前位置: 首页 > 知识库问答 >
问题:

丢失记录的可能数量

荣沈义
2023-03-14

在我复习的问题中,我很难理解概率假设。

鉴于:

  • 数据集中的每条记录都有一个唯一的事务id号(TXNID)
  • TXNID之间的增量变化可根据事务时间预测(具体方法与问题无关)
  • 因为增量变化是可预测的,所以我们可以确定两个连续TXNID之间是否缺少记录。具体来说,如果两个连续TXNID之间的差异大于预测的增量变化,则至少有一条记录丢失
    • 两个TXNID之间的增量始终是一个介于1和20(含)之间的整数。
    • 任何1到20的增量都有相同的可能性

    如果发现这种差距,我们希望估计缺失记录的数量。

    例如:

        Previous TXNID: 100 (given)
        Current TXNID: 125 (given)
        Predicted increment: 5 (given)
        Actual increment: 25 (current - previous)
    

    实际增量大于预测增量,因此我们知道至少有一条记录丢失。

    我们还知道,一条丢失的记录有一个TXNID,它等于当前的TXNID-5。剩余差距内的估计记录是问题的焦点。

       Remaining gap: 20 (actual increment - predicted increment)
    

    我们希望估计的是剩余差距内缺失记录的数量。在该示例中,缺失记录可由增量为20的单个记录、增量为1的20个记录或这些极端之间的任何相关组合组成。

        20 = 20 x 1
        ...
        20 = 1 x 20
    

    作者提出,由于存在相同的概率,即每个TXNID增量在1和20之间,因此剩余间隙的5%(1/20)是缺失记录数量的实际估计。

    在以非常有限的方式进行了测试后,这个假设似乎是可行的;然而,我很难理解这样一种逻辑:每种情况都有相同的概率。

    我同意一条记录有1/20(5%)的机会增加20(场景1 x 20)。但对于相反的情况(20 x 1),概率不应该复合吗?这里,我不仅要求单个记录的增量为1(5%概率),而且接下来的19个记录也为1。因此,在剩余间隙内存在20条缺失记录的概率似乎要小得多(0.05^20与0.05)。

    我是不是想得太多了?我错过了一点吗?对剩余的差距应用5%作为估计缺失记录数量的方法是否合理?

    谢谢

    安德鲁

共有1个答案

梁晋鹏
2023-03-14

坦率地说,我会从不同的角度来处理这个问题。我假设记录来自泊松流。因此,记录之间的差异按照泊松分布分布。

如果这是真的,您可以估计泊松参数\lambda,并得到在记录之间的任何给定距离处平均应存在多少条记录的估计值

 类似资料:
  • 我观察到,运动流中存在一些记录,但KCL消费者应用程序尚未收到这些记录。发生这种情况的原因是什么?之前和之后的记录都很好。 所有异常都在我的应用程序中消耗,KCL不会收到。所以http://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html#w1ab1c11c11c15b9的情况也没有发生。 一些细节:打开分片

  • 好的,我正在为我的网络课程编程,我必须使用UDP在Java中实现一个项目。我们正在实现一个HTTP服务器和客户端以及一个“gremlin”函数,该函数以指定的概率破坏数据包。HTTP服务器必须在应用层将一个大文件分成多个段,然后通过UDP发送到客户端。客户端必须在应用层重新组装接收到的段。然而,我想知道的是,如果UDP根据定义是不可靠的,为什么我必须在这里模拟不可靠? 我的第一个想法是,也许这仅仅

  • 问题内容: 我有一个像这样的熊猫数据框“ df”: 它丢失了一些行,我想像这样填补中间的空白: 有python方式可以做到这一点吗? 问题答案: 您需要构造完整索引,然后使用数据框的方法。像这样 然后,您可以使用该方法将NaN设置为所需的值。 更新(2014年6月) 只是必须自己重新审视一下……在当前版本的熊猫中,有一个函数可以从可迭代的笛卡尔积中构建。因此上述解决方案可能变为: 我认为这很优雅。

  • 我将事件发送到AWS Kinesis,这些事件由AWS lambda函数处理。但是,如果lambda抛出一些错误,则不会丢弃记录,并且会一次又一次地进行处理,从而阻止处理新记录。 我宁愿跳过错误的记录,消化新的记录。我不知道该怎么做。 lambda函数捕获任何异常,因此不应给出任何执行错误。 下面是python中的片段。 我知道lambda应该在“保留”期间重试(默认为24小时),但我希望放弃并最

  • 我有一种生产者-消费者设置,其中生产者(不同线程上的多个生产者)将数据排入redis队列,消费者(单个线程上的单个消费者)监视该队列。当队列长度达到时,例如 使用redis-py客户端,我使用以下代码提取前10000项,并删除它们: (用于lrange和ltrim的文件) 我的问题是,这里有数据丢失的机会吗?例如,在调用函数ltrim()和实际修剪队列之间的时间(在这种情况下,最新的日志将丢失,因

  • 我有一个JAX-RS方法,它采用Map来促进部分更新。 我不能使用补丁,说来话长。我需要记录客户端可以发送哪些参数,以便他们可以在昂首阔步的UI中看到它们。一种方法是使用 这是一个不错的工作。PartialUpdatePerson是一个包含允许发送的各种参数的类。 问题是在swagger UI中,它仍然用地图显示我的身体。样本值为: 以及有效载荷。 有没有,我可以告诉炫耀,不显示这个?即从文档的角