炸弹在哪里:给定行和列的总数,如何估计概率?


14

这个问题的灵感来自《口袋妖怪魂银》的迷你游戏:

想象一下,在这个5x6区域隐藏了15枚炸弹(编辑:最多1枚炸弹/细胞):

求和

现在,考虑到行/列的总数,您如何估计在特定区域找到炸弹的概率?

如果查看第5列(炸弹总数= 5),那么您可能会认为:在此列中,在第2行中找到炸弹的机会是在第1行中找到一个炸弹的机会的两倍。

直接比例性的这种(错误)假设基本上可以描述为将标准独立性测试操作(例如在Chi-Square中)引入错误的上下文中,将导致以下估计:

卡方

如您所见,直接成比例导致概率估计超过100%,甚至在此之前是错误的。

因此,我对所有可能的排列进行了计算仿真,得出了放置15枚炸弹的276种独特可能性。(给出行和列的总数)

以下是276个解决方案的平均值: 计算解决方案

这是正确的解决方案,但是由于需要进行指数计算,因此我想找到一种估算方法。

我的问题现在是:是否有一种确定的统计方法来对此进行估算?我想知道这是否是一个已知问题,如何称呼它,以及是否有您可以推荐的论文/网站!


1
快速简便的方法:对于更多的行和列,您可以进行蒙特卡洛模拟,在此情况下,您将检查可能的配置的随机子样本,该样本低于可能的总数。它会为您提供一个近似的解决方案。
蒂姆

1
我不了解您的计算解决方案。单元格中的数字是多少?他们当然加起来不是100%,这不是PMF。它们看起来也不像CDF,右/底部单元格不是100%
Aksakal

2
@Aksakal这些是任何给定单元格包含炸弹的边际概率。这些数字加到了板上的炸弹总数15。
Dougal

2
如果您假设两个边距是独立的,则可以从以边距为条件的表分布中进行采样(通过Patefield算法)相对简单。这在R in的标准分布中实现r2dtablechisq.test并且fisher.test在某些情况下也使用)。
Glen_b-恢复莫妮卡

2
@Glen_b但是在Patefield算法中,每个单元的事件数不限于一个。
Jarle Tufto

Answers:


4

解空间(有效的炸弹配置)可以视为具有给定度数序列的二部图集。(网格是两性矩阵。)可以使用马尔可夫链蒙特卡洛(MCMC)方法获得在该空间上生成均匀分布的方法:可以使用一系列“开关”从任何其他解决方案中获取每个解决方案,这可以在您的难题公式中得出。看起来像:

(xx)(xx)

已经证明,它具有快速混合的特性。因此,从任何有效的配置开始,并将MCMC设置为运行一段时间,您应该最终得出解决方案的均匀分布的近似值,您可以平均地逐点求出所需的概率。

我只是模糊地熟悉这些方法及其计算方面,但至少以这种方式,您可以避免列举任何非解决方案。

一开始的话题文献:
https://faculty.math.illinois.edu/~mlavrov/seminar/2018-erdos.pdf
https://arxiv.org/pdf/1701.07101.pdf
的https:// WWW。 tandfonline.com/doi/abs/10.1198/016214504000001303


这是一个了不起的主意!我想我明白了!我将所有已知的解决方案混合在一起以进行一定数量的迭代(希望在论文中找到),然后对唯一的解决方案求平均值,希望能找到其中的大多数。非常感谢!
KaPy3141

2
MCMC正是要走的路,我也发现了这一点:arxiv.org/pdf/1904.03836.pdf
KaPy3141

106

这表明@Aksakal建议的枚举可能更有效。
Jarle Tufto

@JarleTufto,但是OP表示只有276个唯一(有效)状态;全部找到了!
Ben Reiniger

5

没有独特的解决方案

我认为除非您做出其他一些假设,否则无法恢复真正的离散概率分布。您的情况基本上是从边际恢复联合分布的问题。有时可以通过在行业中使用关联函数来解决该问题,例如财务风险管理,但通常用于连续分发。

独立存在,AS 205

在存在问题中,一个牢房中最多只能有一个炸弹。同样,对于独立性的特殊情况,存在相对有效的计算解决方案。

如果您知道FORTRAN,则可以使用该代码实现AS 205算法:Ian Saunders,算法AS 205:具有重复行总计的R x C表的枚举,应用统计,第33卷,第3期,1984年,第340-352页。它与@Glen_B所引用的Panefield的算法有关。

该算法枚举了所有存在表,即遍历了只有一个炸弹在野外的所有可能表。它还计算多重性,即看起来相同的多个表,并计算一些概率(不是您感兴趣的概率)。使用此算法,您可以比以前更快地运行完整的枚举。

存在,不是独立的

AS 205算法可以应用于行和列不独立的情况。在这种情况下,您必须对枚举逻辑生成的每个表应用不同的权重。重量将取决于炸弹的放置过程。

计数,独立

Pij=Pi×PjPiPjP6=3/15=0.2P3=3/15=0.2P63=0.04

计数,非独立,离散运算

为了解决行和列不是独立的计数问题,我们可以应用离散copulas。它们有问题:它们不是唯一的。但这并不会使它们无用。因此,我将尝试应用离散的copulas。您可以在Genest,C.和J.Nešlehová(2007)中找到有关它们的很好的概述。copulas上的引物,用于计数数据。Astin公牛。37(2),475–515。

Copulas可能特别有用,因为它们通常允许显式诱发依赖性,或者在数据可用时根据数据进行估计。我的意思是放置炸弹时行和列的依赖性。例如,如果炸弹在第一行是一个,则很有可能也是第一列。

θ

C(u,v)=(uθ+uθ1)1/θ
θ

独立

θ=0.000001

在此处输入图片说明

您可以在第5栏中看到第二行概率的确比第一行高两倍。与您在问题中似乎暗示的相反,这没有错。当然,所有概率的确加起来为100%,面板上的边际也与频率匹配。例如,下部面板中的第5列显示1/3,对应于预期的15枚炸弹中的5枚。

正相关

θ=10

在此处输入图片说明

负相关性

θ=0.2

在此处输入图片说明

您当然可以看到所有概率加起来为100%。此外,您还可以看到依赖性如何影响PMF的形状。对于正相关性(相关性),您将获得最高的PMF集中在对角线上,而对于负相关性,则它是非对角线


非常感谢您的回答以及与copulas的有趣链接!不幸的是,我从未使用过copulas,因此,我很难找到一个每个单元只能执行1枚炸弹的解决方案,但是一旦我有了更好的理解,我一定会尝试的!
KaPy3141

@ KaPy3141,我添加了对可用于解决问题的代码的引用。它在F90中,但是使用numpy转换为Python相对简单
Aksakal

θθ

您必须使参数适合流程。如果生成过程与之相符,则问题是纯组合的。
Aksakal

4

您的问题并不清楚,但我将假设炸弹最初是通过简单随机抽样分配的,而不是替换整个单元格(因此一个单元格不能包含多个炸弹)。您提出的问题本质上是要求开发一种概率分布的估计方法,该方法可以精确地计算(理论上),但是对于大参数值而言,在计算上变得不可行。


存在确切的解决方案,但计算量大

n×mb

x=(x1,...,xnm)s=(r1,...,rn,c1,...,cm)S:xs,它从分配向量映射到行和列总和。

P(x)1

P(x|s)=P(x,s)P(s)=P(x)I(S(x)=s)xP(x)I(S(x)=s)=I(S(x)=s)xI(S(x)=s)=1|Xs|I(S(x)=s)=U(x|Xs),

Xs{x{0,1}nm|S(x)=s}sx|sU(Xs)。也就是说,炸弹分配向量的条件分布在与观察到的行和列总数兼容的所有分配向量的集合上是均匀的。然后,可以通过对该联合分布进行边际化来获得给定单元格中炸弹的边际概率:

P(xij=1|s)=x:xij=1U(x|Xs)=|XijXs||Xs|.

Xij{x{0,1}nm|xij=1}ijXs|Xs|=276Xsnmb


寻找好的估算方法

Xs

天真的经验估计量:您在绿表中提出并使用的估计量为:

P^(xij=1|s)=ribcjbb=ricjb.

b


非常感谢您的深入回答!实际上,在我的绿色图表中,已经有高达133%的值。很高兴知道没有解决此问题的流行方法,可以自己尝试一下!我最准确的估算器类似于“绿色”方法,但不是使用与P(row)/ sum(P(rows))* P(c)/ sum(P(cols))成正比的炸弹分配,虚数P(r)/(1-P(r))/ sum(行),然后将乘积取回:P(实数)= P(imag)/(1 + P(imag)。这使P <1。现在我想,我只需要计算执行(略侵犯)行/列总和。
KaPy3141

@ KaPy3141,您可以使用某个单元格中没有特定炸弹的值(该问题不大于1),然后将问题描述为从该分布中抽取15枚炸弹,条件是每个单元格只有一个值0或1(绘图时无需更换)。这将为您提供不超过1的概率
塞克图斯经验派
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.