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

机器算法验证 回归 贝叶斯 多重回归 特征选择 锯齿
2022-03-10 22:52:02

在一篇不错的博客文章和其中的链接论文之后,我想我可能会玩弄一些贝叶斯变量选择。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

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

3个回答

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

你关于 tau 和 taubeta 的先验知识太丰富了。

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

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

  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)

  }

使用有限数量的变量可能会更好。

如果你使用对数回报,那么你犯了一个轻微的偏差错误,但如果你使用未来值除以现值,那么你的可能性是错误的。实际上,无论哪种情况,您的可能性都是错误的。这已经足够重要了。

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

对于双重拍卖中的证券,没有“赢家的诅咒”。理性的行为是出价你的期望。对于许多买家和许多卖家,限价簿应该收敛到正态分布,因为它是预期分布。所以应该是正态分布的。应该是正态分布的。因此收益应该是ptpt+1

pt+1pt1.

回归的似然函数应该是

1πσσ2+(yβ1x1β2x2βnxnα)2.

OLS 强制对观察到的数据进行最佳拟合,即使它是错误的解决方案。贝叶斯方法试图通过似然度找到数据生成函数。你可能错了,所以它找不到它。

如果您需要更多信息,我有一篇关于此的论文。

编辑 我认为你误解了。如果您将可能性转换为密度函数并获取期望值,您会发现它没有。通过奥古斯丁柯西在 1852 年或 1851 年的证明,任何形式的最小二乘解都是完全不精确的。它总是会失败。并不是说您应该使用标准回归,因为贝叶斯对可能性很敏感,而是贝叶斯是唯一可以接受的可用解决方案,对于一些不寻常的特殊情况有一些特殊例外。

在对此进行实证测试时,在我阅读足够多的数学知识之前,我天真地认为贝叶斯和频率论的解决方案应该匹配。大约有一个定理说,当样本变得足够大时,两者将收敛。从 1925 年到 2013 年,我使用了 CRSP 领域的所有日终交易来测试它。但这不是定理所说的。我误解了规则。

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

贝叶斯匹配。这使我走上了一条非常数学化的道路,因为我无法弄清楚为什么无偏估计量如此错误。仅作记录,使用 1925-2013 年期间的分类回报并去除空壳公司、封闭式基金等,位置中心之间的差异为 2%,风险度量被低估了 4% 的年度回报. 这种差异在对数转换下仍然存在,但原因不同。对于单个索引或数据子集,它可能会有所不同。

造成差异的原因有两个。首先是所涉及的分布缺乏足够的统计数据。对于某些类型的问题,这无关紧要。但是,对于预测或分配等投影目的,它们非常重要。第二个原因是无偏估计量始终是均值的一个版本,但分布没有均值。

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

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

Rothenberg、TJ 和 FM Fisher 和 CB Tilanus,关于从 Cauchy 样本进行估计的说明,美国统计协会杂志,1964 年,第 59 卷 (306),第 460-463 页

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

对定理的正确理解是,所有的贝叶斯估计量都是可接受的估计量。如果满足两个条件之一,频率估计量是可接受的估计量。首先是在每个样本中,Frequentist 和 Bayesian 解是相同的。第二,如果贝叶斯方法的极限解与Frequentist 解相匹配,那么Frequentist 解是可以接受的。

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

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

在对数中,似然函数是双曲正割分布。它有一个有限的方差,但没有协方差。使用 OLS 找到的协方差矩阵是数据的产物,并不指向基础数据中存在的参数。与原始形式一样,对数形式中没有任何东西是协变的,但也没有什么是独立的。相反,存在一种更复杂的关系,它违反了协方差的定义,但它们可以在其中共同移动。

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

我没有 Markowitz 和 Usman 引用我所在的位置,但他们在估计现有分布方面做了为数不多的非常好的工作之一。

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

我有一篇关于这个主题的论文更加完整和准确:

哈里斯,DE(2017 年)收益分布。数学金融杂志,7,769-804。

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

我很罗嗦,但我可以看出你误解了贝叶斯和 Pearson-Neyman 方法之间的关系。你把它们颠倒过来了。贝叶斯总是有效的,但你被困在了一个会扰乱你的解决方案的先验密度中。有了适当的先验,就可以保证有偏估计量,对于这种类型的似然函数,我相信您必须使用适当的先验才能保证可积性与统一性。频率论方法很快并且通常有效。它们是公正的,但可能无效。