我以为我可能会喜欢上一些不错的博客文章和其中的链接论文,以选择一些贝叶斯变量来玩。我用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
贝叶斯变量选择真的那么糟糕/敏感吗?还是我犯了一些明显的错误?