MCMC将永远在SAS中运行

时间:2019-01-02 20:41:09

标签: sas mcmc

假设我有一个回归变量,其中响应变量是sales,我有各种销售动因作为自变量。我想使用MCMC建立模型,但不确定(甚至在SAS中运行)是否可行。参见下面的简化模型结构(生产模型中还有更多变量和随机交互):

Yij =β0+β1TVX1ij+γ(TV×dma)i +εi

对于上述模型,我对以β1表示的电视以及DMA(在美国有210个DMAS)与以gamma表示的电视之间的随机相互作用有一个主要影响。我具有所有参数的先验知识,当我在SAS中运行MCMC时,要花几个小时才能运行。 MCMC可以为随机项处理210个随机交互吗?我之所以使用MCMC,是因为我想利用以前的建模回合中的先验知识,但是如果要花很长时间运行,那是没有意义的。

proc mcmc data=modeldbsubset outpost=postout thin=1000 nmc=20000 seed=7893

         monitor=(b0 b1);
  ods select PostSummaries PostIntervals tadpanel;
  parms b0 0 b1 0;
  parms s2 1 ;
  parms s2g 1;
  prior b: ~ normal(0, var = 10000);
  prior s2: ~ igamma(0.001, scale = 1000);
    random gamma ~ normal(0, var=s2g) subject = dmanum monitor = (gamma) namesuffix = position;


  mu = b0 + b1*TV + gamma;

  model Y ~ normal(mu, var = s2);

1 个答案:

答案 0 :(得分:0)

我不使用SAS,但是使用他们的默认随机行走都会区这种规模的模型会惨败,这并不奇怪,该都会区会使用提案分配的身份Cov矩阵进行初始化。 The documentation on scale tuning说,您可以调整为cov的MAP估算值(这是PyMC3的默认设置),所以也许尝试从那里开始。但是,文档还说这样做会使用MAP进行参数初始化,这是一个坏主意,因为MAP通常不在高尺寸的典型集中。

最后,我希望您需要针对您的数据进行大量调整,以使其真正正常运行,但不幸的是,这只是其中的一部分。

或者,您最好选择一个更高级的实现HMC / NUTS的MCMC采样框架,例如Stan或PyMC3或Edward。甚至还有一些高级软件包,例如RStanArm,专门用于贝叶斯回归建模,但将较低级的MCMC内容保留在后台。