はじめに
『Pythonによるはじめての地理空間データサイエンス』の独学時のまとめノートです。「導出編」「実装編」「可視化編」の三部構成でモデルやアルゴリズムの理解を目指します。
本の内容から寄り道・回り道しながら進めます。本を読んだ上で補助的に読んでください。
この記事では、空間ラグモデルのヘッセ行列について、数式を使って解説します。
【前の内容】
【他の内容】
【今回の内容】
0.2.1 空間ラグモデル(SLM)のヘッセ行列の導出
空間ラグモデル(SLM・Spatial Lag Model・空間自己回帰モデル・SARモデル・Spatial Autoregressive Model)におけるヘッセ行列(Hessian matrix)を導出します。
SLMの定義式については「【Python】0.1.2:空間ラグモデル(SLM)の定義式【はじめての地理空間DSのノート】 - からっぽのしょこ」を参照してください。
モデルの確認
まずは、SLMの定義(仮定)を数式で確認します。
空間重み行列については「空間重み行列の定義式」、多変量正規分布については「多次元ガウス分布の定義式 - からっぽのしょこ」を参照してください。
定義式
SLMの定義式については「SLMの定義式」を参照してください。
SLMは、次の式で定義されます。
ここで、 は地域
の説明変数(
次元ベクトル)、
は
個の地域の説明変数(
の行列)、
は地域
の被説明変数(スカラ)、
は
個の地域の被説明変数(
次元ベクトル)、
は回帰パラメータ(
次元ベクトル)、
は地域
の誤差項(スカラ)、
は
個の地域の誤差項(
次元ベクトル)、
は地域
に関する重み(
次元ベクトル)、
は 空間重み行列(
の行列)、
は空間パラメータ(スカラ)です。
誤差項 は、平均ベクトル
・分散共分散行列
の多変量正規分布に従うと仮定します。
ここで、 は分散パラメータ(スカラ)です。
計算式
SLMに関する計算式については「SLMの定義式」を参照してください。
空間自己回帰に関する項について、次のようにおきます。
定義式(0.12.a)を誤差項 について整理すると、次の式となります。
誤差項 の内積(2乗和)は、次の式となります。
尤度関数
SLMの尤度関数については「SLMの尤度関数の導出」を参照してください。
SLMのパラメータ をまとめて、パラメータベクトル
とします。
尤度関数 は、次の式となります。
ここで、 は行列式です。
対数尤度関数は、次の式となります。
以上の式を用いてヘッセ行列を求めます。
スポンサードリンク
対数尤度関数の1階微分の導出
次は、SLMの対数尤度関数の1階微分を導出します。
対数尤度関数の微分の設定
対数尤度関数の微分を確認します。
対数尤度関数 の1階微分を求めます。
各要素は、各パラメータ による偏微分で求まるのが分かります。
対数尤度関数の1階微分(5)の各要素の式を求めていきます。
回帰パラメータによる偏微分
各種の変数の回帰パラメータに関する微分を求めます。
対数尤度関数の1階微分(5)の1番目の要素は、対数尤度関数(0.13)を回帰パラメータ に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2: 和の微分
より、微分の和に分割します。
- 3:
の内積の微分に、式(6)を代入します。
誤差項 の内積を
に関して微分します。
途中式の途中式(クリックで展開)
- 1-2: 式(3)の偏微分の式を立てます。
- 3: 和の微分
より、微分の和に分割します。
- 4:
の二次形式の微分に、式(7)を代入します。
- 6: 共通の項と
を括り出します。
- 7: 括弧を、式(2)で置き換えます。
説明変数・回帰パラメータ の二次形式を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 二次形式の微分
より、
を1つの行列とみなして微分を計算します。
- 2: 転置の性質
より、括弧を展開します。
以上で、対数尤度関数の1階微分(5)の1番目の要素の式が得られました。
分散パラメータによる偏微分
各種の変数の分散パラメータに関する微分を求めます。
対数尤度関数の1階微分(5)の2番目の要素は、対数尤度関数(0.13)を分散パラメータ に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2: 和の微分
より、微分の和に分割します。
- 2: 微分の計算が分かりやすいように、分数の指数表記
に書き換えています。
- 3: 自然対数の微分
より、微分を計算します。
- 3: べき乗の微分
より、
を1つの変数とみなして微分を計算します。
- 4: 分数の指数表記
を戻します。
以上で、対数尤度関数の1階微分(5)の2番目の要素の式が得られました。
空間パラメータによる偏微分
各種の変数の空間パラメータに関する微分を求めます。
対数尤度関数の1階微分(5)の3番目の要素は、対数尤度関数(0.13)を空間パラメータ に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2: 和の微分
より、微分の和に分割します。
- 3:
の対数行列式の微分に、式(0.15)を代入します。
- 3:
の内積の微分に、式(0.14)を代入します。
の対数行列式を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 合成関数の微分(連鎖率)
、自然対数の微分
より、
を中間変数とみなして微分を計算します。
- 2:
に依存する行列
における行列式の微分(ヤコビの公式)
より、トレースを用いた微分に変形します。
- 3:
の微分に、式(8)を代入します。
- 4: トレースの性質
より、符号をトレースの外に出します。
を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 式(1)の偏微分の式を立てます。
- 2: 和の微分
より、微分の和に分割します。
誤差項 の内積を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 積の微分
より、2つの微分の和に変形します。
- 2:
の微分に、式(9)を代入します。
- 3: 転置の性質
より、括弧を展開します。
- 4: 二次形式はスカラなので、転置できます。
2つの項が一致するのでまとめます。
誤差項 を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 式(2)の偏微分の式を立てます。
- 2:
に、式(1)を代入します。
- 3: 括弧を展開します。
- 4: 和の微分
より、微分の和に分割します。
以上で、対数尤度関数の1階微分(5)の3番目の要素の式が得られました。
対数尤度関数の微分
対数尤度関数の微分を求めます。
対数尤度関数の1階微分(5)の各要素をそれぞれの式(0.16)(0.17)(0.18)と置き換えます。
以上で、対数尤度関数の1階微分の式が得られました。
スポンサードリンク
対数尤度関数の2階微分の導出
続いて、SLMの対数尤度関数の2階微分を導出します。
ヘッセ行列の設定
対数尤度関数のヘッセ行列を確認します。
対数尤度関数 の2階微分を求めます。関数の2階偏微分を並べた行列をヘッセ行列
と呼びます。
各要素は、各パラメータ の組み合わせによる偏微分で求まるのが分かります。
ヘッセ行列(10)の各要素の式を求めていきます。
回帰・回帰パラメータによる偏微分
各種の変数の回帰パラメータに関する2階微分を求めます。
ヘッセ行列(10)の1行1列目の要素は、対数尤度関数(0.13)を空間パラメータ に関して2階微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2:
による微分の順番を入れ換えます。
- 3:
の微分に、式(0.16)を代入します。
- 4:
と無関係な項を微分の外に出します。
- 5:
の微分に、式(11)を代入します。
誤差項 を
の転置に関して微分します。
途中式の途中式(クリックで展開)
- 1: 式(2)の偏微分の式を立てます。
- 2: 和の微分
より、微分の和に分割します。
以上で、ヘッセ行列(10)の1行1列目の要素の式が得られました。
回帰・分散パラメータによる偏微分
各種の変数の回帰パラメータと分散パラメータに関する微分を求めます。
ヘッセ行列(10)の1行2列目の要素は、対数尤度関数(0.13)を回帰パラメータ と分散パラメータ
に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、それぞれ他の項は定数として扱います。
- 2:
の微分に、式(0.17)を代入します。
- 3: 和の微分
より、微分の和に分割します。
- 4:
の内積の微分に、式(6)を代入します。
以上で、ヘッセ行列(10)の1行2列・2行1列目の要素の式が得られました。
回帰・空間パラメータによる偏微分
各種の変数の回帰パラメータと空間パラメータに関する微分を求めます。
ヘッセ行列(10)の1行3列目の要素は、対数尤度関数(0.13)を回帰パラメータ と空間パラメータ
に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、それぞれ他の項は定数として扱います。
- 2:
の微分に、式(0.18)を代入します。
- 3: 和の微分
より、微分の和に分割します。
- 4:
の内積の微分に、式(12)を代入します。
誤差項 の転置を
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 式(2)の偏微分の式を立てます。
- 2: 転置の性質
より、括弧を展開します。
- 3: 転置の性質
より、括弧を展開します。
- 4: 和の微分
より、微分の和に分割します。
以上で、ヘッセ行列(10)の1行3列・3行1列目の要素の式が得られました。
分散・分散パラメータによる偏微分
各種の変数の分散パラメータに関する2階微分を求めます。
ヘッセ行列(10)の2行2列目の要素は、対数尤度関数(0.13)を分散パラメータ に関して2階微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2:
の微分に、式(0.17)を代入します。
- 3: 和の微分
より、微分の和に分割します。
- 3: 微分の計算が分かりやすいように、分数の指数表記
に書き換えています。
- 4: べき乗の微分
より、
を1つの変数とみなして微分を計算します。
- 5: 分数の指数表記
を戻します。
以上で、ヘッセ行列(10)の2行2列目の要素の式が得られました。
分散・空間パラメータによる偏微分
各種の変数の分散パラメータと空間パラメータに関する微分を求めます。
ヘッセ行列(10)の2行3列目の要素は、対数尤度関数(0.13)を分散パラメータ と空間パラメータ
に関して微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、それぞれ他の項は定数として扱います。
- 2:
の微分に、式(0.18)を代入します。
- 3: 和の微分
より、微分の和に分割します。
- 3: 微分の計算が分かりやすいように、分数の指数表記
に書き換えています。
- 4: べき乗の微分
より、
を1つの変数とみなして微分を計算します。
- 5: 分数の指数表記
を戻します。
以上で、ヘッセ行列(10)の2行3列・3行2列目の要素の式が得られました。
空間・空間パラメータによる偏微分
各種の変数の空間パラメータに関する2階微分を求めます。
ヘッセ行列(10)の3行3列目の要素は、対数尤度関数(0.13)を空間パラメータ に関して2階微分して求まります。
途中式の途中式(クリックで展開)
- 1: 式(0.13)の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2:
の微分に、式(0.18)を代入します。
- 3: 和の微分
より、微分の和に分割します。
- 4:
のトレースの微分に、式(13)を代入します。
- 4:
の微分に、式(9)を代入します。
のトレースを
に関して微分します。
途中式の途中式(クリックで展開)
- 1:
に依存する行列
におけるトレースの微分
より、微分のトレースに変形します。
- 2:
と無関係な項を微分の外に出します。
- 3:
に依存する行列
における逆行列の微分
より、元の行列の微分と逆行列の積に変形します。
- 4:
の微分に、式(8)を代入します。
以上で、ヘッセ行列(10)の3行3列目の要素の式が得られました。
ヘッセ行列
対数尤度関数のヘッセ行列を求めます。
ヘッセ行列(10)の各要素をそれぞれの式(0.24)(0.25)(0.26)(0.27)(0.28)(0.29)と置き換えます。
ヘッセ行列の式が得られました。
以上で、対数尤度関数の2階微分の式が得られました。
この記事では、SLMのヘッセ行列を数式で確認しました。次の記事では漸近分散共分散行列を数式で確認します。
参考文献
おわりに
求める微分の数が多いので面倒ですが、対数行列式の微分が謎な変形をするくらいで、他は基本的な微分の公式に当てはめれば計算できて難しくはないかと思います。とても面倒ではありますが。
せめて読みやすくなるように、線形回帰モデルのOLSで説明したレベルの内容は省略することも考えたのですが、SLM編の一連の記事だけを読んで理解できる構成と粒度にする方針で書くことにしました。よって、細々と長々とした解説になりましたとさ。
最後に、モーニング娘。のライブ映像をどうぞ♪
【次の内容】
SLMの漸近分散共分散行列を数式で確認します。
SEMのヘッセ行列を数式で確認します。
https://www.anarchive-beta.com/entry/2026/06/29/180000www.anarchive-beta.com
