Knockoff 変数

  • Knockoff 変数を使ったFDRについての概説記事はこちら
  • 説明変数 Xがnxp行列(nサンプル、p個の説明変数)であるときに
  • \begin{pmatrix}X,\tilde{X}\end{pmatrix}^T\begin{pmatrix}X,\tilde{X}\end{pmatrix} =\begin{pmatrix}\Sigma, \Sigma - diag(s)\\ \Sigma-diag(s), \Sigma \end{pmatrix}
  • この形は2p個の変数の分散共分散行列になっており、Positive definite
  • したがって、diag(s)(対角行列)の取り方に制約がある
  • その制約がある中で、なるべく、\Sigma - diag(s)の対角成分を0に近づけたい。なぜなら、オリジナル変数と対応するKnockoff 変数との関係はできるだけ「無関係〜対角成分が0」であってほしいから
  • ではどんな制約があるか、というと、Schur complementを使って以下のようにする
    • G= \begin{pmatrix}A,B\\C,D \end{pmatrix}であるとき、G/D = A - B D^{-1}Cである。今、A= D = \Sigma,B = C=\Sigma- diag(s)であるから
    • G/\Sigma = \Sigma -(\Sigma - diag(s)) \Sigma^{-1} (\Sigma - diag(s))となり、式変形していくと
    • G=diag(s) (2 \Sigma - diag(s))となる。両辺がpositive definiteなので、右辺の2項diag(s)\Sigma -diag(s)との両方がpositive definite
  • この条件を満たす\diag(s)を探せばよい
  • Knockoff パッケージでは、対角行列diag(s)の対角成分を全部同じにして探す方法(create_equicollerated)を採用していたり、凸最適化であるSemidefinite optimization(こちらこちらにて探索する方法を採用していたりする
  • このような方法でKnockoff 変数が作れるのは、n \ge 2pの場合
  • それ以外の場合は、\begin{pmatrix}X,\tilde{X}\end{pmatrix}の条件を満足するように工夫しながら、\tilde{X}を算出する