(所有)方向垂直于超平面通过p数据点

时间:2009-10-25 23:10:38

标签: r math geometry

我有一个简单的问题: 在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 + 1 ^点与第一个p点不共线,我发现方向垂直于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维超平面。 现在,我的问题是:

公式来自my interpretation of this wikipedia entry(“solve(A)”是A ^ -1的R命令)。为什么这不适用于p> 2?我做错了什么?

PS:我看过这篇文章(在关注流量编辑上:抱歉不能发布多个链接)但不知何故它对我没用。

提前致谢,

当p> 2:

时,我对Liu的解决方案的实施/理解有问题

浮点矩阵的qr分解与超平面方向之间的点积不应为0? (即,如果qr向量垂直于超平面)

即,当p = 2时

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

给出0.当p> 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分解。 nullspace中的向量是我正在寻找的方向:

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

......具有更高维度的优势。

我还有最后一个问题:当p> 2时,另一个p-1(即此处为(1,0))QR向量的含义是什么? - 提前谢谢,

1 个答案:

答案 0 :(得分:5)

p-1维超平面由法向量和平面通过的点定义:

n.(x-x0) = 0

其中n是长度为p的法线向量,x0是超平面通过的点,.是点积,并且对于任何点都必须满足等式x在飞机上。我们也可以把它写成

n.x = p

其中p = n.x0只是一个数字。这是超平面的更紧凑的表示,其由(n,p)参数化。要找到超平面,假设您的点是x1,...,xp。 形成具有p-1行和p列的矩阵A,如下所示。 p的行是xi-x1,布局为行向量,对于所有i> 1(其中只有p-1)。如果你的p点不像你所说的那样“共线”(它们需要非常独立),那么矩阵A将具有秩p-1,并且零空间维度为1.零空间中的一个向量是法线向量。超平面。一旦找到它(称之为n),然后p = n.x1。为了找到矩阵的零空间,您可以使用QR分解(有关详细信息,请参阅here)。