计算最终市场分布 - 竞争性规划

时间:2018-04-06 03:00:48

标签: algorithm math probability distribution

我在练习竞争性编程时遇到了以下问题。我手动解决了,有点设计方法,但我的答案是错误的,我无法想象如何扩展我的方法。

问题

N咖啡连锁店正在通过激烈的广告战争争夺市场份额。每天,一定比例的客户将被说服从一个链转换到另一个链。

给出了当前的市场份额和客户转换的每日概率。如果广告永远存在,那么市场份额的最终分配是什么?

假设:总市场份额为1.0,客户转换的概率独立于其他客户和天数。

示例:2个咖啡连锁店:A和B市场份额A:0.4市场份额B:0.6。

每天,客户从A切换到B的概率为0.2每天,客户从B切换到A的概率为0.1

input: market_share=[0.4,0.6]

switch_prob = [[.8,.2][.1,.9]]

output: [0.3333 0.6667]

直到这里的一切都是问题的一部分,我没有形成这个例子或假设,他们给出了问题。

My_attempt :根据我的理解,切换概率表示从A切换到B的概率。

因此,

market_share_of_A = current_market_share - lost_customers + gained_customers and 
marker_share_of_B = (1 - marker_share_of_A)

iter_1: 
    lost_customers = 0.4 * 0.8 * 0.2 = 0.064
    gained_customers = 0.6 * 0.2 * 0.1 = 0.012
    market_share_of_A = 0.4 - 0.064 + 0.012 = 0.348
    marker_share_of_B = 1 - 0.348 = 0.652

iter_2:
    lost_customers = 0.348 * 0.1 * 0.2 = 0.00696
    gained_customers = 0.652 * 0.9 * 0.1 = 0.05868
    market_share_of_A = 0.348 - 0.00696 + 0.05868 = 0.39972
    marker_share_of_B = 1 - 0.32928 = 0.60028

my answer: [0.39972, 0.60028]

如前所述,预期答案为[0.3333 0.6667]

  1. 我不明白我哪里错了?如果出现问题,必须是我对这个问题的理解。请提供您的想法。

  2. 在这个例子中,他们展示了一个简单的案例,即只有两个竞争对手。怎么样还有什么?我们先说三个 - A, B, C。我认为输入必须以[[0.1, 0.3, 0.6]..]的形式提供切换概率,因为A可能会将其客户丢失为B以及C,并且会有很多这样的实例。现在,我将至少计算两个公司的市场份额,第三个将是(1-sum_of_all)。在计算B的市场份额时,我将不得不计算它失去的客户以及获得的,公式将是(current - lost + gained)。获得的将是gain_from_A and gain_from_C的总和。它是否正确?

1 个答案:

答案 0 :(得分:5)

根据我的评论,这个问题可以表示为矩阵方程。

“过渡”矩阵的元素T(i, j)(维度N x N)定义如下:

  • i = j(对角线):客户与<{1}}
  • 一起的概率
  • i(非对角线):链i != j的客户转移到链j
  • 的概率

这个矩阵的物理意义是什么?让市场份额状态由大小为i的向量P(i)表示,其N - 值是链i的市场份额。向量i是每天之后的下一个共享状态。

考虑到这一点,均衡方程P' = T * P给出,即最终状态在转换T * P = P下是不变的:

T

然而,这本身是无法解决的 - | T(1, 1) T(1, 2) T(1, 3) ... T(1, N) | | P(1) | | P(1) | | T(2, 1) T(2, 2) ... | | P(2) | | P(2) | | T(3, 1) ... | | P(3) | | P(3) | | . . | * | . | = | . | | . . | | . | | . | | . . | | . | | . | | T(N, 1) T(N, N) | | P(N) | | P(N) | 只能在其元素之间确定多个比率(这种情况的技术名称逃脱了我 - 因为P表明它是由于简)。还有一个附加约束,股票加起来为1:

MBo

我们可以选择任意共享值(例如P(1) + P(2) + ... P(N) = 1 个)并将其替换为此表达式。乘以,等式的第一行是:

N

第二行的等效公式为:

T(1, 1) P(1) + T(1, 2) P(2) + ... T(1, N) (1 - [P(1) + P(2) + ... P(N - 1)]) = P(1)

--> [T(1, 1) - T(1, N) - 1] P(1) + [T(1, 2) - T(1, N)] P(2) + ... "P(N - 1)" = -T(1, N)

总结一般模式,我们定义:

  • 矩阵[T(2, 1) - T(2, N)] P(1) + [T(2, 2) - T(2, N) - 1] P(2) + ... = -T(2, N) (尺寸S(i, j)):

    [N - 1] x [N - 1]
  • 大小为- S(i, i) = T(i, i) - T(i, N) - 1 - S(i, j) = T(i, j) - T(i, N) (i != j) 的向量Q(i)包含N - 1的第一个N - 1元素

  • 大小为P(i)的向量R(i),以便N - 1

然后等式变为R(i) = -T(i, N)

S * Q = R

求解上面的等式给出了| S(1, 1) S(1, 2) S(1, 3) ... S(1, N-1) | | Q(1) | | R(1) | | S(2, 1) S(2, 2) ... | | Q(2) | | R(2) | | S(3, 1) ... | | Q(3) | | R(3) | | . . | * | . | = | . | | . . | | . | | . | | . . | | . | | . | | S(N-1, 1) S(N-1, N-1) | | Q(N-1) | | R(N-1) | ,它给出了第一个Q份额值(当然也是约束中的最后一个)。这样做的方法包括高斯消除 LU分解,这两者都比直接计算N - 1的天真路线更有效。

请注意,您可以在Q = inv(S) * RS中翻转标记,以便进行更方便的评估。

上面给出的玩具示例结果非常简单:

R

| 0.8 0.1 | | P1 | | P1 | | | * | | = | | | 0.2 0.9 | | P2 | | P2 | --> S = | -0.3 |, R = | -0.1 | --> Q1 = P1 = -1.0 / -0.3 = 0.3333 P2 = 1 - P1 = 0.6667 的示例:

N = 3

请原谅Robinson Crusoe风格的格式 - 稍后我会尝试在LaTeX中编写这些格式以便于阅读。