ベイジアン変数選択—本当に機能しますか?


14

素敵なブログ投稿とそこにリンクされている論文に従って、私はベイジアン変数の選択をいじるかもしれないと思った。私はrjagsでプログラム作成し(私は非常に新人です)、Exxon Mobilの価格データを、そのリターンを説明する可能性が低いもの(パラジウム価格など)およびその他の関連性の高いもの(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

2番目の出力で、どの変数がどの変数であるかを説明する必要があります。さまざまな問題でベイジアン変数選択を使用しましたが、多くの状況(リグレッションを含む)で通常は適切に機能します。しかし、あなたの結果、特に見積もりは、私には奇妙に見えます。
Glen_b-モニカを復活

@curious_cat過剰適合の証拠は、たとえば、Exxon(石油会社)と石油価格の間の負の係数です。このモデルは、このモデルを多重共線性の犠牲にしたためです。(おそらく、「オーバーフィット」はそれを説明するのに間違った言葉です-オーバーパラメーター化の方がより正確だと思います)。
ブライアンB

@BrianBオイルを除くすべての説明変数を削除すると、その係数は正になりますか?ちょっと興味があるんだけど。
curious_cat

@curious_catはい、確かに(およそ0.7)です。これは、多重共線性の典型的なケースです(別のい言葉)。
ブライアンB

回答:


3

BUGSコードでmean[i]<-inprod(X[i,],beta)は、である必要がありますmean[i]<-inprod(X[i,],beta[])

タウとタウベタに関するあなたの事前知識は有益すぎます。

betaifincludedには事前に情報量の少ない情報が必要gamma(0.1,0.1)です。たとえば、taubetaにはa を使用します。これにより、小さな回帰係数が得られる理由を説明できます。


それに注意してくれてありがとう。残念ながら、状況は改善しませんでした。
ブライアンB 14年

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サンプルで、このレシピを試してもうまくいきませんでした。
ブライアンB 14年

2

ログリターンを使用した場合、わずかにバイアスエラーが発生しましたが、将来の値を現在の値で割った値を使用した場合、尤度は間違っています。実際、どちらの場合でもあなたの可能性は間違っています。それは問題になるほど間違っています。

統計はデータの関数であると考えてください。戻り値はデータではなく、データの変換です。それらは将来価値を現在価値で割ったものです。価格はデータです。価格には分布関数が必要ですが、返品の分布関数は価格の性質のみに依存する必要があります。

ptpt+1

pt+1pt1。

回帰の尤度関数はなければなりませんでした

1πσσ2+yβ1バツ1β2バツ2βnバツnα2

OLSは、間違ったソリューションであっても、観測されたデータに最適な適合を強制します。ベイジアン法は、尤度を通じてデータ生成関数を見つけようとします。あなたは間違っている可能性があったので、それを見つけることができませんでした。

追加の情報が必要な場合は、これに関するペーパーを用意しています。

編集 あなたは誤解していると思います。尤度を密度関数に変換し、期待値をとると、それがないことがわかります。1852年または1851年にオーガスティンコーシーが証明したことから、最小二乗解の形式は完全に不正確です。常に失敗します。ベイジアンは尤度に敏感であるため、標準回帰を使用する必要はありません。ベイズは、許容される唯一の利用可能なソリューションであり、いくつかの異常な特殊なケースについてはいくつかの特別な例外があります。

これに関する実証的テストを行う際に、そして十分な数学を読む前に、私はベイジアンとフリークエンティストのソリューションが一致するべきだと単純に考えました。およそ、サンプルが十分に大きくなると、2つが収束するという定理があります。私はそれをテストするために1925年から2013年までのCRSPユニバースのすべての終日取引を使用しました。しかし、それは定理が言っていることではありません。私はルールを誤解していました。

ログの問題も試しましたが、まだ一致しませんでした。だから私は何かに気づきました、すべての分布は形であり、だから私は幾何学の解を構築して、どの解が正しいかを決定しました。どの代数的回答がデータと一致したかを判断するために、純粋な幾何学問題として扱いました。

ベイジアンのものが一致しました。偏りのない推定量がそれほど間違っていた理由がわからなかったので、これは私を非常に数学的な道に導きました。記録のために、1925年から2013年までの期間にわたる分解されたリターンを使用し、シェル企業、クローズドエンドファンドなどを削除すると、ロケーションの中心間の不一致は2%であり、リスクの測定値は年間リターンで4%低く見積もられています。この不一致は、ログ変換の下でも保持されますが、理由は異なります。個々のインデックスまたはデータのサブセットによって異なる場合があります。

不一致の理由は2つあります。1つ目は、関係する分布に十分な統計がないことです。特定の種類の問題では、これは問題ではありません。ただし、予測や割り当てなどの射影目的では、かなり重要です。2番目の理由は、不偏推定量は常に平均のバージョンですが、分布には平均がないことです。

上記の密度は、正規分布またはガンマ分布がそうであるように、指数ファミリーのメンバーではありません。Pitman–Koopman–Darmoisの定理により、パラメーターの十分な点統計は存在しません。これは、ポイント推定器を作成しようとすると、情報を破棄する必要があることを意味します。事後分布は密度全体であり、ポイント推定が必要な場合は、予測密度を見つけ、その上のコスト関数を最小化して単一ポイントに減らすことができるため、これはベイジアンソリューションでは問題になりません。ベイズの尤度は常に最小限で十分です。

上記の関数の最小分散不偏推定量は、中央の24.6%のデータを保持し、そのトリミングされた平均を見つけ、残りのデータを破棄することです。つまり、データの75%以上がドロップされ、情報が失われます。ほんの一言ですが、メモリから作業しているため、24.8%になる可能性があります。ローテンバーグの論文は次の場所にあります。

ローテンバーグ、TJおよびFMフィッシャー、およびCBティラナス、コーシーサンプルからの推定に関するノート、Journal of the American Statistical Association、1964、vol 59(306)、pp.460-463

2番目の問題は私にとって驚くべきものでした。ジオメトリを操作するまで、原因が何であるかを理解していませんでした。返品は、-100%で底に拘束されます。これにより、中央値は2%シフトし、四分位範囲は4%シフトしますが、半質量はまだ同じポイントにあります。ハーフマスはスケールの適切な尺度ですが、ハーフ幅はそうではありません。切り捨てがなかった場合、半幅と半質量は同じポイントになります。同様に、中央値とモードは同じポイントのままです。中央値は、平均的なアクターまたは少なくとも平均的なトレードのリターンです。そのため、常にMVUEの位置と対数平均です。

定理の正しい理解は、すべてのベイズ推定量が許容可能な推定量であるということです。2つの条件のいずれかが得られる場合、頻度の高い推定量は許容可能な推定量です。1つ目は、すべてのサンプルで、頻度分析とベイジアン解が同一であることです。2つ目は、ベイジアン法の制限解がフリークエンティスト解と一致した場合、フリークエンティスト解が許容されることです。

サンプルサイズが十分に大きくなると、すべての許容可能な推定量が同じソリューションに収束します。Frequentist推定器は、そのモデルが真のモデルであり、データがランダムであると推定します。ベイジアンはデータが真であると仮定しますが、モデルはランダムです。データが無限にある場合、主観モデルは現実に収束する必要があります。無限の量のデータがあり、モデルが間違っている場合、頻度論モデルは確率ゼロで現実に収束します。

この場合、合理的な事前条件の下でのベイジアン解は、推定器を作成するための情報の切り捨てと損失のために、常に確率論的推定器を確率的に支配します。

ログでは、尤度関数は双曲線正割分布です。有限分散がありますが、共分散はありません。OLSを使用して見つかった共分散行列は、データのアーティファクトであり、基になるデータに存在するパラメーターを指していません。生形式と同様に、ログ形式には共変量はありませんが、独立したものもありません。代わりに、共分散の定義に違反するが、それらが交わることができるはるかに複雑な関係が存在します。

MarkowitzとUsmanは、分布に関する研究でほとんどそれを発見しましたが、双曲線正割分布はPearsonファミリではなく、分布を生データからログデータに変更すると統計特性も変更することに気付かないことでデータを誤って解釈しました。彼らは基本的にこれを発見しましたが、それを探す理由がなく、ログを使用することの意図しない結果に気付かなかったため、見逃しました。

MarkowitzとUsmanは私がいる場所を引用していないが、彼らはそこにある分布を推定するのに数少ない非常に良い仕事の1つをした。

いずれにしても、私はJAGSを使用しません。どうすればいいのかわかりません。MCMCのすべての作業を手作業でコーディングします。

このトピックに関するより完全で正確な論文があります:

Harris、DE(2017)The Distribution of Returns。Journal of Mathematical Finance、7、769-804。

資産または負債クラスの分配、および会計比率を構築する方法を提供します。

私は言葉が多かったが、ベイズとピアソン・ネイマンの方法の関係を誤解しているのを見ることができた。あなたはそれらを逆転させました。ベイズは常に機能しますが、ソリューションを混乱させる前の密度に閉じ込められます。適切な事前条件を使用すると、偏った推定量が保証され、このタイプの尤度関数では、統一性を保証するために適切な事前条件を使用する必要があります。頻繁なメソッドは高速で、通常は機能します。それらは公平であるが、有効ではないかもしれない。


1日レベルでの対数と価格リターンの差は、500分の1程度です(ベースラインとして50ベーシスポイントのリターンを取りました)。また、いずれかの方法で測定された日次リターンは、正規分布からはかなり遠いことも注目に値します(逆の経済理論に関係なく)。いずれにせよ、アルゴリズムがこれらの問題の影響を受けやすい場合、実用的な目的には役に立たない。引用する尤度関数がJAGSコードにどのようにマッピングされるかを知りたいのですが、詳しく説明できますか?
ブライアンB

@BrianB答えを編集しました。あなたは私が作ったと思うのを間違えています。私が間違っていた理由を理解するのに永遠に時間がかかりました。
デイブ・ハリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.