在吗?

#问题背景

莉莉和马克是靠手机消息联系的情侣。他们各自有着不同的生活节奏和看手机的习惯,一天中会在许多不确定的时刻查看手机,并可能在那个时候给对方发去消息。

对莉莉而言,能看到马克的及时回应或主动联系让她感到温暖。她经常拿起手机,看看有没有来自他的新消息。然而,如果她发现,自从她上次放下手机到现在,马克的对话框里一直悄无声息,没有新的信息进来,这种空白会让她感到失落和不确定。这种因“空等”而产生的感受,会随着类似经历的发生而一点点地在她心中累积。

#问题描述

把这个问题形式化建模:

现在有 A B 两个人,会在一段时间内互相发送消息。

  • A 的发送间隔为 tAExp(θA)t_A \sim \text{Exp}(\theta_A),定义其消息发送时刻为 TA,1,TA,2,T_{A,1}, T_{A,2}, \dots

  • B 的发送间隔为 tBExp(θB)t_B \sim \text{Exp}(\theta_B),定义其消息发送时刻为 TB,1,TB,2,T_{B,1}, T_{B,2}, \dots

  • 怒气机制是:如果 A 在 TA,iT_{A,i} 发消息时,发现 B 自上次 TA,i1T_{A,i-1} 到现在 TA,iT_{A,i} 之间没有发任何消息,则怒气值增加 1。

现在,A 在 T=0T = 0 时发送了一条信息。研究这些问题:

  1. 对于非负整数 kk,求 A 怒气值达到 kk 的时刻 TangryT_{angry} 的分布;

  2. 对于非负实数 TT,求 A 在时刻 TT 的怒气值 AngerAnger 的分布;

#解答

#第一问

对于 A 和 B 的联合消息过程,可以得到间隔仍服从指数分布,且其参数 θ0=θA+θB\theta_0 = \theta_A + \theta_B

现在计算任意一个消息为 A 所发的概率:

0θAeθAt(tθBeθBudu)dt=θAθA+θB\int_{0}^{\infty} \theta_A e^{-\theta_At}\left(\int_{t}^{\infty} \theta_B e^{-\theta_Bu}\text{d}u\right)\text{d}t = \dfrac{\theta_A}{\theta_A + \theta_B}

对于任意一条非初始的 A 的消息,其必然存在上一条消息,且它到上一条 A 的消息的间隔满足题述分布,故上述概率计算方法在此仍然适用。所以,对于任意一条非初始 A 消息,它增加怒气值的概率总是 θAθA+θB\dfrac{\theta_A}{\theta_A + \theta_B}。只取增加怒气值的消息作为新的事件,可以得到以下结论:

增加怒气值的消息构成一个速率为 λ=θA2θA+θB\lambda = \dfrac{\theta^2_A}{\theta_A + \theta_B} 的泊松过程。

此时恰好符合 Gamma 分布的定义:发生 kk 次增加怒气值事件对应的时刻 Tangry,kT_{angry, k} 分布为:

Tangry,kGamma(k,λ)T_{angry, k}\sim\text{Gamma}(k, \lambda)

E(Tangry,k)=kλE(T_{angry, k}) = \dfrac{k}{\lambda}

#第二问

同问题一解答,此时恰好符合泊松分布的定义:

AngerTPoisson(λT)Anger_T\sim \text{Poisson}(\lambda T)

E(AngerT)=λTE(Anger_T) = \lambda T

#扩展

以问题二为例,可以发现期望的怒气值随时间线性增加,系数为 λ=θA2θA+θB\lambda = \dfrac{\theta^2_A}{\theta_A + \theta_B}。直接研究增加怒气值的概率以排除消息速率的影响:

对于每一条非初始的 A 的消息,它增加怒气值的概率总是 θAθA+θB\dfrac{\theta_A}{\theta_A + \theta_B}

不幸的是,随着 θB\theta_B 的增长,此概率仅仅近似与 θB\theta_B 成反比,即要减小一半概率,需要近似翻倍 B 发送信息的频率。

我们选择一位研究对象,选择一段连续的活跃时间进行观察,得到 A 发送消息的时间如下:

[12:50,13:10,15:18,16:09,17:42,17:56,18:35,19:04,20:38,21:14,22:13,23:51,00:22,01:30][12:50, 13:10, 15:18, 16:09, 17:42, 17:56, 18:35, 19:04, 20:38, 21:14, 22:13, 23:51, 00:22, 01:30]

以小时为单位计算,估算 θA=40391\theta_A = \dfrac{40}{39} \approx 1

下面采用 julia 进行研究。先绘制 AngerTAnger - TTAngerT - Anger 的两个分布(图略),再对于 p 和 w 的组合,求 Pr(AngerT>wT)<pPr(Anger_T > wT) < p 所需的最小 θB\theta_B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--- Calculating Minimum theta_B ---
theta_A = 1.0, T = 12.0
For p_i = 0.5000, w_i = 0.08 (M_i = 1): Minimum theta_B is approximately: 6.1499
For p_i = 0.2500, w_i = 0.08 (M_i = 1): Minimum theta_B is approximately: 11.4834
For p_i = 0.1000, w_i = 0.08 (M_i = 1): Minimum theta_B is approximately: 21.5644
For p_i = 0.0500, w_i = 0.08 (M_i = 1): Minimum theta_B is approximately: 32.7684

For p_i = 0.5000, w_i = 0.17 (M_i = 2): Minimum theta_B is approximately: 3.4876
For p_i = 0.2500, w_i = 0.17 (M_i = 2): Minimum theta_B is approximately: 5.9473
For p_i = 0.1000, w_i = 0.17 (M_i = 2): Minimum theta_B is approximately: 9.8886
For p_i = 0.0500, w_i = 0.17 (M_i = 2): Minimum theta_B is approximately: 13.6755

For p_i = 0.5000, w_i = 0.33 (M_i = 4): Minimum theta_B is approximately: 1.5691
For p_i = 0.2500, w_i = 0.33 (M_i = 4): Minimum theta_B is approximately: 2.5623
For p_i = 0.1000, w_i = 0.33 (M_i = 4): Minimum theta_B is approximately: 3.9330
For p_i = 0.0500, w_i = 0.33 (M_i = 4): Minimum theta_B is approximately: 5.0909

For p_i = 0.5000, w_i = 0.50 (M_i = 6): Minimum theta_B is approximately: 0.7992
For p_i = 0.2500, w_i = 0.50 (M_i = 6): Minimum theta_B is approximately: 1.3610
For p_i = 0.1000, w_i = 0.50 (M_i = 6): Minimum theta_B is approximately: 2.0811
For p_i = 0.0500, w_i = 0.50 (M_i = 6): Minimum theta_B is approximately: 2.6526

For p_i = 0.5000, w_i = 1.00 (M_i = 12): Minimum theta_B is approximately: 0.0000
For p_i = 0.2500, w_i = 1.00 (M_i = 12): Minimum theta_B is approximately: 0.1514
For p_i = 0.1000, w_i = 1.00 (M_i = 12): Minimum theta_B is approximately: 0.3879
For p_i = 0.0500, w_i = 1.00 (M_i = 12): Minimum theta_B is approximately: 0.5606

从数据中,若希望 12h 内怒气值至多加一的概率足够大,需要很大的 θB\theta_B,即使是要求此概率达到 0.50.5 也需要 B 的速率为 A 的六倍。这也符合上文对消息先后的分析。

#致谢

对两道题目的解答和相关代码均使用 Gemini2.5 验证。

其实全是 gemini 写的……

感谢 sharkpretzel 想出来这个奇奇怪怪的问题