本から欠損データを使用して統計を行うためのいくつかの手法を学んでいます(リトルとルービンによる欠損データを使用した統計分析)。単調な無応答データを操作するのに特に役立つ機能の 1 つは、Sweep Operator (詳細は 148 ~ 151 ページ) です。Rモジュールgmmにはこれを行うswp関数があることは知っていますが、理想的にはNumpy行列が入力データを保持するために、Pythonでこの関数を実装した人がいるかどうか疑問に思っていました。私は StackOverflow を検索し、いくつかの Web 検索も成功しませんでした。助けてくれてありがとう。
更新: 誰かが私のために書いてくれるとは思っていませんでした。しかし、それも素晴らしいでしょう。これが定義です。
PxP 対称行列 G は、要素が次のように定義された別の対称 PxP 行列 H に置き換えられる場合、行と列 k でスイープされると言われます: これもそうですが、コード ブロックに従います。
h_kk = -1/g_kk
h_jk = h_kj = g_jk/g_kk for j != k
h_jl = g_jl - g_jk g_kl / g_kk j != k, l != k
G = [g11, g12, g13
g12, g22, g23
g13, g23, g33]
H = SWP(1,G) = [-1/g11, g12/g11, g13/g11
g12/g11, g22-g12^2/g11, g23-g13*g12/g11
g13/g11, g23-g13*g12/g11, g33-g13^2/g11]
kvec = [k1,k2,k3]
SWP[kvec,G] = SWP(k1,SWP(k2,SWP(k3,G)))
Inverse function
H = RSW(k,G)
h_kk = -1/g_kk
h_jk = h_kj = -g_jk/g_kk for j != k
h_jl = g_jk g_kl / g_kk j != k, l != k
G == SWP(k,RSW(k,G)) == RSW(k,SWP(k,G))