(すべて)p個のデータポイントを通る超平面に垂直な方向

StackOverflow https://stackoverflow.com/questions/1622419

  •  06-07-2019
  •  | 
  •  

質問

簡単な質問があります: R ^ pでp点(非共線)が与えられると、これらの点を通る超平面を見つけます(Rにすべてを入力するのを明確にするため):

p<-2
x<-matrix(rnorm(p^2),p,p)
b<-solve(crossprod(cbind(1,x[,-2])))%*%crossprod(cbind(1,x[,-2]),x[,2])

その後、最初のp点と同一直線上にないp + 1 ^番目の点が与えられると、bに垂直な方向を見つけます:

x2<-matrix(rnorm(p),p,1)
b2<-solve(c(-b[-1],1)%*%t(c(-b[-1],1))+x2%*%t(x2))%*%x2

つまり、b2はbに垂直でx2を通るp次元の超平面を定義します。 さて、私の質問は次のとおりです。

式は、このウィキペディアエントリの私の解釈(&quot; solve(A) &quot;はA ^ -1のRコマンドです)。なぜこれがp&gt; 2で機能しないのですか?私は何を間違えていますか?

PS:私はこの投稿を見ました(stakeoverflow edit:sorryでは複数のリンクを投稿できません)が、どういうわけか私を助けません。

事前に感謝、

i p&gt; 2の場合、Liuのソリューションの実装/理解に問題があります:

掃引行列のqr分解と超平面の方向の間の内積は0にならないのですか? (つまり、qrベクトルが超平面に垂直である場合)

i.e、p = 2の場合

c(-b[2:p],1)%*%c(a1)

0を返します。p&gt; 2の場合は返しません。


Victor Liuのソリューションを実装するための私の試みです。

a)R ^ pでp個の線形独立な観測値が与えられた場合:

p<-2;x<-matrix(rnorm(p^2),p,p);x
      [,1]       [,2]
[1,] -0.4634923 -0.2978151
[2,]  1.0284040 -0.3165424

b)行列にそれらを杭打ちし、最初の行を引きます:

a0<-sweep(x,2,x[1,],FUN="-");a0
        [,1]        [,2]
[1,] 0.000000  0.00000000
[2,] 1.491896 -0.01872726

c)行列a0のQR分解を実行します。ヌルスペース内のベクトルは、探している方向です:

qr(a0)
          [,1]       [,2]
[1,] -1.491896 0.01872726
[2,]  1.000000 0.00000000

確かに。この方向は、ウィキペディアの式を適用した場合と同じです(x2 =(0.4965321,0.6373157)を使用):

       [,1]
[1,]  2.04694853
[2,] -0.02569464

...高次元で機能するという利点があります。

最後にもう1つ質問があります。p&gt; 2の場合、他のp-1(つまり、(1,0))QRベクトルの意味は何ですか? -よろしくお願いします、

役に立ちましたか?

解決

p-1次元超平面は、法線ベクトルと平面が通過する点によって定義されます:

n.(x-x0) = 0

n は長さpの法線ベクトル、 x0 は超平面が通過する点、は内積、方程式は、平面上の任意のポイント x を満たす必要があります。これを次のように書くこともできます

n.x = p

where p = n.x0 は単なる数字です。これは、(n、p)でパラメーター化された超平面のよりコンパクトな表現です。超平面を見つけるために、ポイントがx1、...、xpであるとします。 次のように、p-1行とp列で行列Aを形成します。 pの行はxi-x1で、すべてのi&gt; 1に対して行ベクトルとしてレイアウトされています(p-1のみです)。 p点が「共線」でない場合あなたが言うように(それらはアフィン独立である必要があります)、行列Aはランクp-1、1のヌル空間次元を持ちます。ヌル空間の1つのベクトルは超平面の法線ベクトルです。見つかったら(nと呼ぶ)、 p = n.x1 になります。マトリックスのヌルスペースを見つけるには、QR分解を使用できます(こちらをご覧ください) )。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top