正単体座標

simplex <- function(n) {
qr.Q(qr(matrix(1,nrow=n)),complete=T)[,-1]
}
  • QR分解は行列を直交行列と上三角行列の積に分解する
  • 今、行数n、列数1の行列をQR分解すると、nxn直交行列と、nx1上三角行列に分解される
  • nx1上三角行列とは、1列の行列で、その第1成分が非0で、残りのn-1個の成分が0であるようなもの
  • 今、分解されるべきnx1行列の成分が、すべて同じだとする(1という値にすることにしよう)
  • すると、QR分解の直交行列の第1列の値はすべて同じとなる。なぜなら、直交行列に、第1成分のみのベクトルをかけると、すべての成分が等しい長さnのベクトルになるから
  • そして、この行列は直交行列であるから、第1列の値がすべて等しいという制約のもとでの直交行列ができたことになる
  • 上の関数は、このすべての成分が等しい第1列を除去している