我正在尝试估计赢得或丢失帐户的概率,我想使用贝叶斯方法来做到这一点。我对这些方法不是很熟悉,但我想我理解大体的想法。
我知道一些关于输赢的信息。胜利通常以某种活动的组合为特征;损失通常是不同活动组合的特征。我希望能够根据与该帐户关联的当前活动数量来获得新观察是否会赢或输的后验概率。
这是我的数据示例:(为简单起见,这只是一个示例)
Email Call Callback Outcome
14 9 2 1
3 2 4 0
16 14 2 0
15 1 3 1
5 2 2 0
1 1 0 0
10 3 5 0
2 0 1 0
17 8 4 1
3 15 2 0
17 1 3 0
10 7 5 0
10 2 3 0
8 0 0 1
14 10 3 0
1 9 3 1
5 10 3 1
13 5 1 0
9 4 4 0
所以从这里我知道 30% 的观察结果为 1(获胜),70% 的结果为 0(失败)。假设我想使用其他列来获取新观察的赢/输概率,该观察可能有少量事件(电子邮件、电话和回调)与之相关联。
现在假设我想使用不同事件的计数/比例作为新观察的先验。这就是我开始被绊倒的地方。我的想法是为赢和输创建一个狄利克雷分布,所以有两个独立的分布,一个代表赢,一个代表输。使用每个结果的事件计数/比例作为先验。我想我不确定如何在 R 中做到这一点。我认为我的行动方案是使用最大似然估计每个结果的狄利克雷分布(因为我有 3 个变量)。我一直在尝试使用 R 包中的dirichlet.simul
anddirichlet.mle
函数sirt
。我不确定是否需要先模拟一个?
另一个问题是,一旦我有了这个分布,我就不清楚如何获得新观察的后验分布。我已经阅读了几篇论文,似乎无法找到一个简单的过程来说明如何做到这一点。(或者我的理解可能存在一些漏洞)。任何朝着正确方向的推动将不胜感激。
这是我到目前为止尝试过的代码:
### FOR WON ACCOUNTS
set.seed(789)
N <- 6
probs <- c(0.535714286, 0.330357143, 0.133928571 )
alpha <- probs
alpha <- matrix( alpha , nrow=N , ncol=length(alpha) , byrow=TRUE )
x <- dirichlet.simul( alpha )
dirichlet.mle(x)
$alpha
[1] 0.3385607 0.2617939 0.1972898
$alpha0
[1] 0.7976444
$xsi
[1] 0.4244507 0.3282088 0.2473405
### FOR LOST ACCOUNTS
set.seed(789)
N2 <- 14
probs2 <- c(0.528037383,0.308411215,0.163551402 )
alpha2 <- probs2
alpha2 <- matrix( alpha2 , nrow=N , ncol=length(alpha2) , byrow=TRUE )
x2 <- dirichlet.simul( alpha2 )
dirichlet.mle(x2)
$alpha
[1] 0.3388486 0.2488771 0.2358043
$alpha0
[1] 0.8235301
$xsi
[1] 0.4114587 0.3022077 0.2863336
不确定这是否是正确的方法或如何从这里获得后验。我意识到所有输赢账户的输出看起来都相似。我只是使用了一些模拟数据来代表我正在使用的内容。