贝叶斯变量选择-真的有效吗?


14

我以为我可能会喜欢上一些不错的博客文章和其中的链接论文,以选择一些贝叶斯变量来玩。我用rjags(我是个菜鸟)编写了一个程序,并获取了埃克森美孚的价格数据,以及一些不太可能解释其收益的信息(例如,钯金价格)以及其他应该高度相关的信息(例如SP500) )。

运行lm(),我们看到有强有力的证据证明模型过度参数化,但是绝对应该排除钯:

Call:
lm(formula = Exxon ~ 0 + SP + Palladium + Russell + OilETF + 
    EnergyStks, data = chkr)

Residuals:
       Min         1Q     Median         3Q        Max 
-1.663e-03 -4.419e-04  3.099e-05  3.991e-04  1.677e-03 

Coefficients:
           Estimate Std. Error t value Pr(>|t|)    
SP          0.51913    0.19772   2.626 0.010588 *  
Palladium   0.01620    0.03744   0.433 0.666469    
Russell    -0.34577    0.09946  -3.476 0.000871 ***
OilETF     -0.17327    0.08285  -2.091 0.040082 *  
EnergyStks  0.79219    0.11418   6.938 1.53e-09 ***

转换为退货后,我尝试运行这样的简单模型

  model {
    for (i in 1:n) {
      mean[i]<-inprod(X[i,],beta)
      y[i]~dnorm(mean[i],tau)
    }
    for (j in 1:p) {
      indicator[j]~dbern(probindicator)
      betaifincluded[j]~dnorm(0,taubeta)
      beta[j] <- indicator[j]*betaifincluded[j]
    }
    tau~dgamma(1,0.01)
    taubeta~dgamma(1,0.01)
    probindicator~dbeta(2,8)
  }

但是我发现,无论选择何种伽玛分布参数,我都得到了非常荒谬的答案,例如每个变量的20%包含率不变。

我还得到了极小的回归系数,我愿意忍受,因为这应该是一个选择模型,但这仍然很奇怪。

                              Mean        SD  Naive SE Time-series SE
SP         beta[1]       -4.484e-03   0.10999  0.003478       0.007273
Palladium  beta[2]        1.422e-02   0.16646  0.005264       0.011106
Russell    beta[3]       -2.406e-03   0.08440  0.002669       0.003236
OilETF     beta[4]       -4.539e-03   0.14706  0.004651       0.005430
EnergyStks beta[5]       -1.106e-03   0.07907  0.002500       0.002647
SP         indicator[1]   1.980e-01   0.39869  0.012608       0.014786
Palladium  indicator[2]   1.960e-01   0.39717  0.012560       0.014550
Russell    indicator[3]   1.830e-01   0.38686  0.012234       0.013398
OilETF     indicator[4]   1.930e-01   0.39485  0.012486       0.013229
EnergyStks indicator[5]   2.070e-01   0.40536  0.012819       0.014505
           probindicator  1.952e-01   0.11981  0.003789       0.005625
           tau            3.845e+03 632.18562 19.991465      19.991465
           taubeta        1.119e+02 107.34143  3.394434       7.926577

贝叶斯变量选择真的那么糟糕/敏感吗?还是我犯了一些明显的错误?


5
原谅我的无知;但是您提到的过度拟合的证据是什么?
curious_cat

您应该在第二个输出中说明哪些变量是哪个。我已经在各种问题上使用了贝叶斯变量选择,并且在许多情况下(包括回归),它通常都可以正常工作。但是您的结果(尤其是估算值)对我来说很奇怪。
Glen_b-恢复莫妮卡

@curious_cat过度拟合的证据是,例如,埃克森(一家石油公司)与石油价格之间的负系数。之所以出现是因为我故意使这个模型成为多重共线性的牺牲品。(也许“过拟合”是用错误的词来形容它-我认为过参数化更准确)。
Brian B

@BrianB如果删除除油以外的所有解释变量,该系数是否变为正值?只是好奇。
curious_cat 2013年

@curious_cat是的,可以肯定(大约0.7)。这是多重共线性(另一个丑陋的词)的经典案例。
Brian B

Answers:


3

在BUGS代码中,mean[i]<-inprod(X[i,],beta)应为mean[i]<-inprod(X[i,],beta[])

您在tau和taubeta上的经验太丰富了。

您需要在betaifincluded上提供非信息性先验,例如gamma(0.1,0.1)在taubeta上使用。这可以解释为什么您得到的回归系数很小。


感谢您的注意。不幸的是,它并没有改善这种状况。
布莱恩B

2

它确实有效,但是您为所有变量包含指标赋予了相同的基础分布。

  model {
    for (i in 1:n) {
      mean[i]<-inprod(X[i,],beta)
      y[i]~dnorm(mean[i],tau)
    }
    for (j in 1:p) {
      indicator[j]~dbern(probindicator[j])
      probindicator[j]~dbeta(2,8)
      betaifincluded[j]~dnorm(0,taubeta)
      beta[j] <- indicator[j]*betaifincluded[j]
    }
    tau~dgamma(1,0.01)
    taubeta~dgamma(1,0.01)

  }

有限数量的变量可能会更好地工作。


尝试此配方效果至少要好于10000个样本。
Brian B

2

如果您使用对数返回,那么您会犯一个稍微偏差的错误,但是如果您使用将来值除以当前值,则可能性是错误的。实际上,无论哪种情况,您的可能性都是错误的。重要的是错了。

考虑统计是数据的任何函数。返回不是数据,它们是数据的转换。它们是未来价值除以当前价值。价格是数据。价格必须具有分配功能,但是收益的分配功能必须完全取决于价格的性质。

pŤpŤ+1个

pŤ+1个pŤ-1。

1个πσσ2+ÿ-β1个X1个-β2X2-βñXñ-α2

即使是错误的解决方案,OLS也会对观察到的数据进行最佳拟合。贝叶斯方法试图通过可能性来找到数据生成函数。您可能错了,所以找不到。

如果您需要其他信息,请提供我的论文。

编辑 我认为你误会了。如果将似然转换为密度函数并采用期望值,您会发现它没有。通过1852或1851年的Augustin Cauchy的证明,任何形式的最小二乘解都是完全不精确的。它将永远失败。不是因为贝叶斯对可能性很敏感而使用标准回归,而是因为贝叶斯是唯一可以接受的解决方案,但在某些特殊情况下有一些特殊例外。

在对此进行实证测试之前,并且在我没有足够多的数学知识之前,我天真地认为贝叶斯和频数解应该匹配。大约有一个定理说,随着样本变得足够大,两者将收敛。我使用了1925-2013年CRSP领域的所有日内交易进行测试。那不是定理说的。我误会了规则。

我还在日志中尝试了该问题,但仍然不匹配。因此我意识到,所有分布都是形状,因此我构造了几何解决方案以确定哪个解决方案是正确的。我将其视为纯几何问题,以确定哪个代数答案与数据匹配。

贝叶斯匹配。这使我走上了非常数学的道路,因为我无法弄清为何无偏估计量如此错误。仅作记录,使用1925-2013年期间的分类收益并除去空壳公司,封闭式基金等,地点中心之间的差异为2%,而风险度量的年收益率则低估了4% 。这种差异在对数转换下仍然有效,但原因有所不同。对于单个索引或数据子集来说可能有所不同。

差异的原因有两个。首先是所涉及的分布缺乏足够的统计量。对于某些类型的问题,这无关紧要。但是,出于预测目的,例如预测或分配,它们相当重要。第二个原因是,无偏估计量始终是均值的一种形式,但是分布没有均值。

上面的密度不像正态分布或伽玛分布那样是指数族的成员。根据Pitman-Koopman-Darmois定理,对于这些参数,没有足够的点统计量。这意味着创建点估计器的任何尝试都必须丢弃信息。对于贝叶斯解决方案,这不是问题,因为后验是整个密度,如果确实需要点估计,则可以找到预测密度并将其成本函数最小化以将其减少到单个点。贝叶斯可能性总是最低限度的。

上述函数的最小方差无偏估计量是保持数据中心的24.6%,找到其校正均值,并舍弃其余数据。这意味着将丢弃超过75%的数据,并且信息将丢失。请注意,可能是24.8%,因为我正在记忆中工作。您可以在以下位置找到Rothenberg的论文:

Rothenberg,TJ和FM Fisher,以及CB Tilanus,《关于柯西样本估计的注释》,《美国统计协会杂志》,1964年,第59卷(306),第460-463页。

第二个问题令我惊讶。直到研究完几何图形,我才意识到原因是什么。收益在-100%处位于底部。尽管半质量仍处于相同点,这使中位数移动了2%,四分位间距也移动了4%。半质量是正确的比例尺,但半宽度不是。如果没有截断,则半角和半数将处于相同的位置。同样,中位数和众数将保持在同一点。中位数是平均参与者或至少平均交易的回报。因此,它始终是MVUE和对数均值的位置。

对定理的正确理解是,所有贝叶斯估计量都是可接受的估计量。如果获得两个条件之一,则频繁估计量是可接受的估计量。首先是在每个样本中,频率和贝叶斯解决方案都是相同的。第二个问题是,如果贝叶斯方法的极限解与Frequentist解匹配,则Frequentist解是可接受的。

一旦样本量足够大,所有可允许的估计量都收敛到相同的解。Frequentist估计器假定其模型是真实模型,并且数据是随机的。贝叶斯假设数据是真实的,但是模型是随机的。如果您有无限数量的数据,那么主观模型必须收敛到现实。如果您有无限数量的数据,但是模型错误,那么Frequentist模型将以零概率收敛到现实。

在这种情况下,贝叶斯解决方案在合理的先验条件下,将总是随机地控制任何频率估计器,因为截断和创建估计器的信息丢失。

在对数中,似然函数是双曲正割分布。它具有有限的方差,但没有协方差。使用OLS找到的协方差矩阵是数据的人工产物,并不指向基础数据中存在的参数。与原始形式一样,对数形式也没有协变量,但是也没有独立的变量。取而代之的是,存在一种更复杂的关系,它违反了协方差的定义,但是它们可以在其中进行调节。

Markowitz和Usman在分配工作中几乎找到了它,但是双曲线割线分布不在Pearson家族中,他们误解了数据,没有注意到当您将分布从原始数据更改为日志数据时,也会更改其统计属性。 。他们基本上发现了这一点,但却错过了它,因为他们没有理由去寻找它,并且他们没有意识到使用日志的意外后果。

我没有Markowitz和Usman跟我一起去,但我在估计那里的分布方面做了很少的工作之一。

无论如何,我不使用JAGS。我不知道该怎么做。我手动编写所有MCMC工作代码。

关于以下主题,我有一篇论文更加完整和准确:

哈里斯,德国(2017)收益分配。数学金融学报,第7卷,第769-804页。

它将为您提供一种构建任何资产或负债类别以及会计比率的分配的方法。

我很罗word,但我可以看到您误解了贝叶斯和Pearson-Neyman方法之间的关系。你把它们颠倒了。贝叶斯始终有效,但是您会被先前的密度所困扰,这会扰乱您的解决方案。有了适当的先验,可以保证您有偏差的估计量,对于这种可能性函数,我相信您必须在使用适当的先验后才能保证整数的可积性。常用方法是快速且通常有效的方法。它们没有偏见,但可能无效。


对数和每日价格回报之间的差异约为500的1分之一(我以50个基点回报作为基准)。还值得注意的是,以任何一种方式衡量的日收益率都与正态分布相差甚远(与经济理论相反)。在任何情况下,如果算法对这些问题敏感,则对于实际目的是无用的。我想知道您引用的似然函数如何映射到JAGS代码-您能否详细说明?
布赖恩B

@BrianB我编辑了答案。你以为我犯了一个错误。我花了很长时间才弄清楚为什么我错了。
戴夫·哈里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.