Path: blob/master/site/ja/probability/examples/Gaussian_Copula.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
[copula](https://en.wikipedia.org/wiki/Copula_(probability_theory%29)とは、ランダム変数間の依存関係を捉えるための古典的な手法です。より正式には、コピュラは、マージナリゼーションによって が得られる多変量分布 です。
コピュラを使用すると任意の周辺分布を持つ多変量分布を作成できるため、コピュラは非常に興味深い関数と言えます。以下にそのレシピを示します。
確率積分変換を使って、任意の連続分布 R.V. を一様分布 に変換します。 は の CDF(累積分布関数)です。
コピュラ(二変量とした場合) がある場合、 と には一様周辺分布があります。
ここで、関心のある R.V が である場合に、 という新しい分布を作成します。 と の周辺分布は目的どおりの分布です。
周辺分布は単変量であるため、測定やモデル化が行いやすい場合があります。コピュラは周辺分布から開始することを可能にしますが、次元間の任意の相関関係を得ることも可能です。
ガウスコピュラ
コピュラがどのように成立しているかを説明するために、多変量のガウス相関関係に従って依存関係を捉えるケースを考察しましょう。ガウスコピュラは によって得られるもので、 は多変量正規分布の CFD を表し、共分散 と平均値 0 を持ち、 は標準正規分布の逆 CDF です。
正規の逆 CFD を適用すると、一様次元をラップして正規に分布されるようになります。多変量正規分布の CDF を適用すると、分布が押しつぶされてわずかに均一になり、ガウス相関が得られます。
したがって、ガウスコピュラは、一様な周辺分布を持つ単位超立方体 にわたる分布であることがわかります。
このように定義されると、ガウスコピュラは tfd.TransformedDistribution
と適切な Bijector
で実装することができます。つまり、tfb.NormalCDF
バイジェクターによって実装された正規分布の逆 CDF を使用して、多変量正規分布を変換しているということです。
以下では、共分散がコレスキー因子によってパラメータ化される(したがって、MultivariateNormalTriL
の共分散)という 1 つの単純化した仮定で、ガウスコピュラを実装します。(ほかの tf.linalg.LinearOperators
を使用して、行列のないさまざまな仮定をエンコードすることができます。)
しかし、このようなモデルの力は、確率積分変換を使用して任意の R.V. にコピュラを使用するところにあります。こうすることで、任意の周辺分布を指定し、コピュラを使って接合することができます。
次のモデルから開始します。
そして、コピュラを使って、二変量 R.V. を取得します。これには、周辺分布の Kumaraswamy と Gumbel があります。
まず、これらの 2 つの R.V. で生成された分布をプロットしましょう。これは、コピュラを適用したときの比較の基準としてのみ使用します。
異なる周辺分布を使用した同時分布
次に、ガウスコピュラを使用して分布を接合し、それをプロットします。ここでも、TransformedDistribution
を適切な Bijector
に適用して、目的の周辺分布を取得します。
具体的には、さまざまなベクトルで異なるバイジェクターを適用(全単射変換のままです)する Blockwise
バイジェクターを使用します。
これで、必要としているコピュラを定義できるようになりました。ターゲットとなる周辺分布のリスト(バイジェクターとしてエンコード)があれば、コピュラを使用し、指定された周辺分布を持つ新しい分布を簡単に構築できます。
最後に、このガウスコピュラを実際に使用してみましょう。バリアンス 1 に対応する のコレスキー、そして多変量正規分布の相関 を使用します。
いくつかのケースを見てみましょう。
最後に、実際に求めていた周辺分布を実際に取得することを確認しましょう。
結論
以上です!Bijector
API を使用してガウスコピュラを構築できることをお見せしました。
一般的には、Bijector
API を使用してバイジェクターを記述し、分布でこれらを作成すると、柔軟にモデル化できる豊富な分布族を作成できます。