%ungroup()%>%summary(mean(lo%percent()centered_calibration[1]“91.1%”,这比理想值90%略高。这里的非中心斯坦实现是我们的对数正态层次模型的非中心斯坦实现。重要的区别在于\(\theta\)的表达式和\(\text customer \)的前面表达式。非中心的%Stan_模型(),因为非中心和中心模型是等效的,我们也可以将df看作是非中心先验预测分布的一个结果。非中心匹配(如rstan::sampling,但文件缓存如brms file=here::here('models/rf\u noncentred\u fit.rds'),#缓存数据=data_df,链=4,芯=4,热身=2000,ITER=3000,控制=列表(max_treedepth=12)种子=1259,pars=c(“客户”),include=false)非中心拟合-%检查-%hmc_diagnostics()发散:4000次迭代中有0次以发散结束。树深:0/4000次迭代饱和最大树深12。能量:e-bfmi无病理表现。再一次,HMC诊断显示没有问题。不管怎样,让我们检查一下成对的密度。非中心模型的成对后验密度尺度[1]和能量_uuuuu之间的相关性随着非中心参数化而减小。这反映在下面比例[1]的更高有效样本量中。不幸的是,购买率超先验的有效样本量下降了。neff%neff_ratio()%>%t表格(比率=,参数=名称(.)%>%过滤器(比率<0.5)%>%排列(比率)%>%头(20)参数,有效样本量最小。比值参数0.0631821对数中心[2]0.0681729标度[2]0.1579867 Lp_uuuuu0.1776186标度[1]0.2217369对数中心[1]0.3910369θ[830,1]0.4767405θ[639,1]0.4792693θ[250,2]0.4847856θ[41,1]0.4978518θ[231,1]再次,Rhat值似乎很好。非中心Rhat%Rhat()%>%Tibble(Rhat=,参数=名称(.)%>%摘要(min_rhat=min(rhat,na.rm=真)max_rhat=最大值(rhat,na.rm=true))最极端的rhat值min-rhat-max-rhat 0.9990501 1.013372让我们检查90%后验间隔中有多少包含真值。非中心_cis%分组_按(参数)%>%汇总(lo=分位数(值,0.05秒)点=分位数(值,0.50秒)Hi=分位数(值,0.95)%>%过滤器(!str_检测(参数,“uuuo”)超参数估计与中心参数化非常相似。非中心\校准\超%过滤器(链==1)%>%收集(参数,价值,-链)%>%内部连接(非中心连接,by='参数')%>%变异(hit=lo“/>

分级客户终身价值

5月4日,二千零一十九
通过

(本文首次发表于 布莱恩·卡兰德,并对 188bet appR博客)

分级客户终身价值

在一个上岗,我们描述了客户终身价值(CLV)模型是如何工作的,在斯坦实现了它,并根据模拟数据拟合模型。在这篇文章中,我们将对模型进行扩展,以两种不同的方式使用分层优先级:中心和非中心参数化。我不知道这个分层CLV模型的任何其他基于HMC的实现,所以我们将运行一些基本测试来检查它是否在做正确的事情。更具体地说,我们将它与从先前的预测分布中提取的数据集相匹配。结果拟合通过了主要的诊断测试,90%的后验间隔捕获了91%的真实参数值。金宝搏网址

一句警告:我遇到了一些例子,其中模型显示严重E-BFMI问题。当参数\(μ)(与预期寿命相反)和\(λ)(预期购买率)相当相似,但我还没有确定这些能量问题的确切原因。我怀疑这与区分短寿命和低购买率的困难有关。这是一个我们将留待将来发表的主题。

我们将与生斯坦合作,有时会有点烦躁。为了使这篇文章保持在可读性的范围内,我将定义一些自定义函数来简化这个过程。退房全码查看这些函数的详细信息。

\(\DeclareMathOperator{\dbinomial}{Binomial}\DeclareMathOperator{\dbernoulli}{Bernoulli}\DeclareMathOperator{\dpoisson}{Poisson}\DeclareMathOperator{\dnormal}{Normal}\DeclareMathOperator{\dt}{t}\DeclareMathOperator{\dcauchy}{Cauchy}\DeclareMathOperator{\dexponential}{Exp}\DeclareMathOperator{\duniform}{Uniform}\DeclareMathOperator{\dgamma}{Gamma}\声明方法操作工

数据生成过程

让我们回顾一下上次的故事。我们有一家成立2年的公司,该公司在这段时间内呈线性增长,共获得1000名客户。

结实种子六万五千一百三十#https://www.random.org/integers/?num=2&min=1&max=100000&col=5&base=10&format=html&rnd=new客户<- 藏匿的身份证= 以下内容:一千%>% 
  突变结束=  * 365个开始= 鲁尼夫n(),结束- t=结束- 开始)

在客户的有生之年\(tau),他们将以泊松率购买\(λ).我们可以模拟时间\(t)直到最后一次观察到的采购和采购数量[(k)]具有样本\条件.

样本\条件<- 功能(t)tau,lambda){#从0个购买开始T< K- 
  
  #模拟下次购买前的时间等待< 雷普斯,兰姆达)#持续购买直至生命结束/观察时间
  虽然(t)+ 等待<= 聚甲基丙烯酸甲酯(t)τ){t- T+ 等待K< K+ 等待< 雷普斯,λ)#返回表格数据
  藏匿的t=tK=K)} 样本\条件三百二百
样本输出示例条件
T K
一百九十八点二九二九 169个

在上面的例子中,即使观察时间是\(t=300\),时间\(t)直到最后一次购买都将低于寿命\(τ=200).购买率为每单位时间1,我们期待着(k=200)购买。

模型

我们将使用与以前相同的可能性,也就是说客户的概率\(i)给定参数的数据是

\[
\开始{Al}}
\ MathBB P(K,tT.M. Muui,兰贝达依)
=
\分形\ lambda_i^k \ lambda_i+\mu_i_
\左(\mu-t(\lambda-t(\lambda-t(\lambda-t(\lambda-i+\mu i)\right)
\\
&\普罗普托
p \dpoisson(k \mid t \lambda_i)s(t \mid \mu_i)
\\
&\ hphantom \道具
+(1–p)\dpoisson(k \mid t \lambda_i)\dpoisson(0 \mid(t-t)\lambda_i)s(t \mid \mu_i)

\\

& =
\压裂液

\{{Al}}
\]

在哪里?\(s)是指数生存函数。

为了将其转化为贝叶斯模型,我们需要参数的先验。最后一次,我们把简单的gamma先验放在参数上[(μi i])\(\LAMBDAdI).例如,我们可以选择\(\lambda_i\sim\dgamma(2,28)第\)如果我们使用上次的简单模型(类似于[(μi i]))这次我们要分等级。有很多种方法可以使这个层次化。让我们看看其中的两个。

一种方法直接来自于指定gamma先验参数的困难。它只需要将这些参数转换成随机变量,并与[(μi i])\(\LAMBDAdI).例如,我们说\(\lambda_i\sim\dgamma(\alpha,\β)β\),在哪里?\(\α\sim \dgamma(\α\alpha,β-α)\(\beta砬i \sim \dgamma(\alpha砬beta,β-β)(和类似的[(μi i]))我们最终想要合并协变量,这个参数化很困难,所以让我们换个想法。

另一种解决方案是使用对数正态先验。这意味着设置

\[
\开始{Al}}
兰贝达伊
& =
\EXP(\AlpHaI)
\\
阿尔法哈伊
\\SIM
\dAlm(\beta)西格玛)
\\

\\SIM
\ D正常(m,SYM)
\\
西格玛
\\SIM
\dAlqn+(0),s)

\{{Al}}
\]

在哪里?\(m)(Sym),和\(s)是用户指定的常量(与[(μi i]))这意味着

  • 总平均值[(e^β)]
  • 客户层面的影响[(alpHaaI)]与总体平均值的偏差,和
  • 这些偏差的程度由\(西格玛).

\(\sigma\约0\),与平均值的偏差很小,所以大多数顾客都是一样的。另一方面,大值\(西格玛)允许客户(几乎)完全不相关。这意味着\(西格玛)正在帮助我们规范模型。

上述参数化称为“中心化”,基本上是指[(alpHaaI)]用其他参数表示([(β)]\(西格玛))这可以重写为“非中心”参数化

\[
\开始{Al}}
兰贝达伊
& =
\ exp(\beta+\sigma\alpha\u i)
\\
阿尔法哈伊
\\SIM
\d正规(0),1)
\\

\\SIM
\ D正常(m,SYM)
\\
西格玛
\\SIM
\dAlqn+(0),s)
.
\{{Al}}
\]

注意,prioris现在不包含对任何其他参数的引用。这相当于中心参数化,因为\(\beta+\sigma\alpha\i\sim\d正常(\beta,\西格玛).非中心参数化很有趣,因为在某些情况下,它可以提高基于HMC的采样器(如Stan’s)的采样效率。

以斯坦为中心的实施

这里是一个以斯坦为中心的实施我们的对数正态层次模型。

中心的< 在这里地址:在这里'型号/rf中心.stan'%>% 
  斯坦纳模型()

注意,我们已经介绍了仅限先前版本旗帜。当我们指定我们想要仅限先前版本,然后斯坦不会考虑可能性,而是从先验中吸取教训。这使我们能够进行预先的预测模拟。我们将使用先前的预测分布生成一个数据集,然后使我们的模型适合那个数据集。从模型中我们至少可以预料到,它很好地适合于从其先前的分布中提取的数据。

模拟数据集

为了模拟数据集,我们将使用与前一篇文章中的优先级大致对应的超优先级。特别地,预期寿命约为31天,预计每两周购买一次。

数据超先验<- 列表对数寿命是指= 日志31岁对数寿命= 零点七对数寿命标度= 零点八对数λ= 日志 / 十四对数-λ-均值-西格玛= 零点三对数λ标度= 零点五 客户%>% 
  突变t= K= %>% 
  潮猴地址:合成数据(数据超先验,优先权= )数据优先%>% 战略研究()
14$id:int的列表[1:1000(1d)]1 2 3 4 5 6 7 8 9 10…$end:num[1:1000(1d)]730 730 730 730 730 730 730 730 730 730……$start:num[1:1000(1d)]328 707 408 342 666…$T:num[1:1000(1d)]401.6 22.6 322.2 388.5 64.5…$T:num[1:1000(1d)]0 0 0 0 0 0 0 0 0 0 0 0 0…$K:num[1:1000(1d)]0 0 0 0 0 0 0 0 0 0 0 0 0…$N:int 1000$log_life_mean_mu:num 3.43$log_life_mean_sigma:num 0.7$log_life_scale_sigma:num 0.8$log_lambda_mean_mu:num-2.64$log_lambda_mean_sigma:num 0.3$log_lambda_scale_sigma:num 0.5$prior_only:num 1

让我们模拟8个可能的先验数据集。注意数据集的中心和分布是如何变化的。

中心优先<- 中心的%>% 
  适合#rstan::sampling周围的包装,以允许缓存
    文件=在这里地址:在这里'models/rf_centered_prior.rds'高速缓存
    数据=数据优先帕尔斯= C“客户”#忽略此参数
    包含= 错误的链条= 核心= 热身= 一千#不知道为什么要这么高
    ITER公司= 一千零一#比预热多一个,因为我们只需要每个链一个数据集
    种子= 三千九百零一 #为了再现性)画前居中<- 中心优先%>% 
  获得绘图#提取,但也有能量
    帕尔斯= C“LP'”“能源公司”“西塔”'日志中心'“天平”%>% 
  命名参数()#添加客户ID,和idx=1(mu)或2(lambda)
一些先前的预测图。
一些先前的预测图。

下面是使用的精确超参数。

超< 画前居中%>% 
  滤波器斯特里特检测(参数,“^ Logi量表”%>% 
  选择(链,参数,价值)%>% 
  传播(参数,价值)
先前预测绘图的超参数。
原木中心[1] 日志中心〔2〕 音阶〔1〕 音阶〔2〕
三点六四三五四六 -2.057017年 一点零八六六一三八 一点零八七四八二零
四点五八六三四九 -2.23 1530 一点二零六四四三九 零点二七二五零三七
二点六七三九二四 -2.475 513 零点八八四七三三六 0.9429385
3.490525个 -2.557564 零点七七零八六六六 1.0124164
5个 3.422691号 -2.877842个 一点三二三二三六零 零点二九二零六九五
四点二零五八八四 -3.196397年 一点九二一七九五六 零点五三零七三四八
7 三点三八一八八一 -2.99 5128 一点零二九九二五一 0.7266123
三点零四六五三一 -2.328561 1.3993460个 0.4751674

我们将把前面的预测参数从链1中提取出来,添加到我们的客户数据集中。

结实种子三万三千一百九十四 画前居中%>% 
  滤波器(链条= %>% 
  滤波器(姓名)=“西塔”%>% 
  蜕变身份证=身份证件%>% A.整数()参数= 伊夫塞尔(IDX)=“1”“沐”“拉姆达”)价值)%>% 
  传播(参数,价值)%>% 
  突变τ= 雷普斯n()亩)%>% 
  内部连接(客户,被= “ID”%>% 
  分组依据(身份证)%>% 
  群映射~样本\条件(…$t.$tau,.$兰姆达)%>% 宾德科尔斯(x))DATAYDF < 数据超先验%>% 
  潮猴地址:合成数据(测向,优先权= 
客户及其财产样本
身份证件 T K lambda τ 结束 开始 T
四十四点四五三一零九 四十四 零点八五零八二七七 0.0383954 四十四点六六九零八六 七百三十 三百二十八点四三一二 四百零一点五六八七六
二十一点二三七七九零 5个 零点二二零二七五七 零点零零九一三零零 二百六十三点五四一五零四 七百三十 七百零七点三九零六 二十二点六零九三七
零点零二八五四三二 零点零五八三五二三 8.405014年 七百三十 四百零七点八一四四 322.18558年
61.946272 7 0.0970620 0.0424386个 七十一点六一七八四九 七百三十 三百四十一点五四六五 三百八十八点四五三四九
5个 八点二七三八三一 零点一七三二一七三 零点零六零八九六七 八点七四七七九九 七百三十 六百六十五点五二一零 六十四点四七八九八
一百零七点一八二六六一 十九 零点一二二四一三一 零点零一五九零二五 一百一十三点七九二六零四 七百三十 三百八十八点零二七一 三百四十一点九七二八七

使模型适合模拟

现在我们可以将模型与先前的预测数据相匹配。测向.

中心拟合 中心的%>% 
  适合#像rstan::sampling一样,但是在brms中使用文件缓存
    文件=在这里地址:在这里'型号/rf_-centered_-fit.rds'高速缓存
    数据=DATAYDF,链条= 核心= 热身= 二千ITER公司= 三千控制= 列表最大峰值深度= 十二种子= 二万四千二百零七帕尔斯= C“客户”包含= 错误的)中心拟合%>% 
  检查_hmc_诊断()
发散:4000次迭代中有0次以发散结束。树深:4000次迭代中有0次达到最大树深12。能量:e-bfmi表示没有病理行为。

HMC诊断通过。然而,在这里没有显示的一些跑步中,e-bfmi诊断有相当严重的问题(~0.01),我还没有弄清楚到底是哪种情况导致了这些能量问题。让我们用超参数检查能量的成对后验密度。

中心模型的成对后验密度
中心模型的成对后验密度

预期寿命的比例参数(音阶〔1〕)与能量相关,与上述能量问题有关。我不知道这会造成多大的问题,所以让我们再检查一些诊断。

内夫< 中心拟合%>% 
  尼夫比率()%>% 
  藏匿的比率=.,参数= 姓名()%>% 
  滤波器比率< 零点五%>% 
  安排(比率)%>% 
  二十
有效样本量最小的参数。
比率 参数
0.0937772 音阶〔1〕
0.1195873个 LPY
零点二五九二八一九 原木中心[1]
零点二七四八三六九 音阶〔2〕
零点三二二八零五六 日志中心〔2〕
0.4340080个 西塔[574,2]
零点四三八一六八五 θ[169,1]
零点四八零零七九五 θ[38,1]

两者都是LPY音阶〔1〕参数的有效样本量较低。不过,rhat值似乎不错。

中心RHAT < 中心拟合%>% 
  拉特()%>% 
  藏匿的RHAT=.,参数= 姓名()%>% 
  总结迷你RHAT= (RHAT)N.RM= 真的麦克斯拉特 最大值(RHAT)N.RM= 真的
最极端的Rhat值
米拉特 马克斯拉特
零点九九九零二四七 1.005071

现在让我们将90%的后验间隔与真实值进行比较。理想情况下,接近90%后段的90%捕捉其真实值。

C. 中心抽签%>% 
  分组依据(参数)%>% 
  总结Lo= 分位数(值,0.05分点= 分位数(值,零点五零嗨= 分位数(值,零点九五%>% 
  滤波器斯特里特检测(参数,'''#排除诊断参数

下表显示我们成功地恢复了三个超参数。这个音阶〔2〕参数估计值略高。

校准\超<- 超级%>% 
  滤波器(链条= %>% 
  聚集(参数,价值,-链)%>% 
  内部连接(中心)被= “参数”%>% 
  突变击中=<= 价值& 价值<= 嗨)
真正的超参数及其90%的后间隔。
参数 价值 指向 你好
原木中心[1] 三点六四三五四六 三点六二八零一一三 三点七三三九六四 三点八三一二八七 真的
日志中心〔2〕 -2.057017年 -2.1786705 -2009年2月8日 -2.08663 真的
音阶〔1〕 一点零八六六一四 零点九九八八三七三 一点一一九二五八 一点二四二七八零 真的
音阶〔2〕 1.087482个 1.0938685 一点一六零四一五 一点二三二二二五 错误的

我们得到了相当接近90%的客户级参数。

TrueLoValue< 测向%>% 
  选择(身份证,穆兰姆达)%>% 
  聚集(参数,价值,-身份证)%>% 
  突变IDX= 伊夫塞尔(参数=“沐”参数= 斯特林胶“theta[id,idx]”))中心校准<- 中心体%>% 
  内部连接(Ttruex值,被= “参数”%>% 
  取消分组()%>% 
  总结意思是<= 价值& 价值<= 嗨)%>% 
  ()%>% 
  百分比()中心校准
〔1〕“91.1%”

这比理想值90%略高。

非中心化斯坦实施

这里是一个非中心化斯坦实施我们的对数正态层次模型。重要的区别在于\(θ)在前面\(文本客户\).

无中心的< 在这里地址:在这里'型号/rf_noncentred.stan'%>% 
  斯坦纳模型()

由于非中心模型和中心模型是等效的,我们也可以考虑测向从非中心先验预测分布中得出。

非中心拟合<- 无中心的%>% 
  适合#像rstan::sampling一样,但是在brms中使用文件缓存
    文件=在这里地址:在这里'models/rf_noncentred_fit.rds'高速缓存
    数据=DATAYDF,链条= 核心= 热身= 二千ITER公司= 三千控制= 列表最大峰值深度= 十二种子= 一千二百五十九帕尔斯= C“客户”包含= 错误的)非中心拟合%>% 
  检查_hmc_诊断()
发散:4000次迭代中有0次以发散结束。树深:4000次迭代中有0次达到最大树深12。能量:e-bfmi表示没有病理行为。

再一次,HMC诊断显示没有问题。不管怎样,让我们检查一下成对的密度。

非中心模型的成对后验密度
非中心模型的成对后验密度

两者之间的相关性音阶〔1〕能源公司与非中心参数化比较小。这反映在音阶〔1〕下面。不幸的是,购买率超先验的有效样本量下降了。

内夫< 非中心拟合%>% 
  尼夫比率()%>% 
  藏匿的比率=.,参数= 姓名()%>% 
  滤波器比率< 零点五%>% 
  安排(比率)%>% 
  二十
有效样本量最小的参数。
比率 参数
零点零六三一八二一 日志中心〔2〕
零点零六八一七二九 音阶〔2〕
0.1579867 LPY
零点一七七六一八六 音阶〔1〕
零点二二一七三六九 原木中心[1]
零点三九一零三六九 θ[830,1]
零点四七六七四零五 θ[639,1]
0.4792693 西塔[250,2]
零点四八四七八五六 θ[41,1]
零点四九七八五一八 θ[23,1]

再一次,Rhat值似乎很好。

非中心区<- 非中心拟合%>% 
  拉特()%>% 
  藏匿的RHAT=.,参数= 姓名()%>% 
  总结迷你RHAT= (RHAT)N.RM= 真的麦克斯拉特 最大值(RHAT)N.RM= 真的
最极端的Rhat值
米拉特 马克斯拉特
零点九九九零五零一 一点零一三三七二

让我们检查90%后验间隔中有多少包含真值。

非中心独联体<- 非中心画%>% 
  分组依据(参数)%>% 
  总结Lo= 分位数(值,0.05分点= 分位数(值,零点五零嗨= 分位数(值,零点九五%>% 
  滤波器斯特里特检测(参数,'''

超参数估计与中心参数化方法基本相同。

非中心校准超<- 超级%>% 
  滤波器(链条= %>% 
  聚集(参数,价值,-链)%>% 
  内部连接(非中心独联体,被= “参数”%>% 
  突变击中=<= 价值& 价值<= 嗨)
真正的超参数及其90%的后间隔。
参数 价值 指向 你好
原木中心[1] 三点六四三五四六 三点六三二五一五九 3.735363号 3.838160 真的
日志中心〔2〕 -2.057017年 -2.1770703 -2.092537 -2.014462 真的
音阶〔1〕 一点零八六六一四 0.9970698 1.109297个 一点二三五一六六 真的
音阶〔2〕 1.087482个 一点零九六三五零三 一点一五九六二六 一点二三四一九零 错误的

金宝搏网址约91%的客户级后验间隔包含真值。

非中心校准<- 非中心独联体%>% 
  内部连接(Ttruex值,被= “参数”%>% 
  总结意思是<= 价值& 价值<= 嗨)%>% 
  ()%>% 
  百分比()非中心校准
〔1〕“91%”

讨论

中心模型和非中心模型在所考虑的数据集上都表现良好。非中心模型显示规模能源公司,建议最好是解决低E-BFMI问题。因为我们只检查了一次预测抽签的匹配度,最好检查一下是否适合更多的绘画。我的一些偶然尝试(此处未显示)表明存在导致严重E-BFMI问题的情况。确定这些情况将是一个有趣的下一步。如果能看到它在btyplus公司包裹。

留下评论对于作者来说,请关注他们博客上的链接和评论: 布莱恩·卡兰德.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, R作业,可视化( GGPROTT2箱形图地图动画)程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特Hadoop公司刮网)统计 回归主成分分析时间序列交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers

赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)