(Todas as direcções perpendiculares) para hiperplana através de pontos de dados de p

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma pergunta simples: dadas p pontos (não-colineares) em R ^ p i encontrar o hiperplano passando por esses pontos (para ajudar a esclarecer i digite tudo em R):

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

, em seguida, dada a p + 1 ^ th pontos não colinear com primeiros pontos P, I encontrar a direcção perpendicular para b:

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

Isto é, define b2 uma p dimensional perpendicular hiperplano para B e passando por x2. Agora, minhas perguntas são:

A fórmula vem minha interpretação desta entrada wikipedia ( "resolver (A)" é o comando R para a ^ -1). Por que isso não funciona para p> 2? O que estou fazendo de errado?

PS: Eu vi este post (na edição stakeoverflow: Desculpe não pode postar mais de um link). Mas de alguma forma ele não me ajudar

Agradecemos antecipadamente,

i ter uma implementação problema / compreensão da solução de Liu quando p> 2:

não deve o produto escalar entre a decomposição QR da matriz sweeped e a direção do hiperplano ser 0? (Isto é, se os vectores de qr são perpendiculares ao hiperplana)

ou seja, quando p = 2 esta

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

dá 0. Quando p> 2 não.


Aqui é a minha tentativa de implementar uma solução de Victor Liu.

a) dado p observações linearmente independentes em R ^ p:

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

b) a participação deles em uma matriz e subtrair a primeira linha:

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

c) realizar uma decomposição de QR da a0 matriz. O vector no espaço nulo é a direção im procurando:

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

Na verdade; esta direcção é a mesma que a dada pela aplicação da fórmula de Wikipedia (usando x2 = (0.4965321,0.6373157)):

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

... com a vantagem de que ele funciona em dimensões superiores.

Eu tenho uma última pergunta: qual é o significado do outro p-1 (ou seja, (1,0) aqui) QR vector quando p> 2? -graças com antecedência,

Foi útil?

Solução

A p-1 hiperplana dimensional é definido por um vector normal e um ponto em que o plano passa por:

n.(x-x0) = 0

onde n é o vector normal do comprimento do p, x0 é um ponto através do qual o passa hiperplana, . é um produto de ponto, e a equação deve ser satisfeita para qualquer x ponto sobre o plano. Nós também podemos escrever isto como

n.x = p

onde p = n.x0 é apenas um número. Esta é uma representação mais compacta de um hiperplana, que é parametrizado por (n, p). Para encontrar o seu hiperplano, suponha que seus pontos são x1, ..., xp. Formar uma matriz com p-1 filas e colunas de p como se segue. As linhas de p são xi-x1, definidos como vetores linhas, para todo i> 1 (há apenas p-1 deles). Se seus pontos P não são "collinear" como você diz (eles precisam ser affinely independente), seguida matriz A terá rank p-1, e uma dimensão espaço nulo de 1. A um vector no espaço nulo é o vetor normal do hiperplano. Uma vez que você encontrá-lo (chamemos-lhe n), então p = n.x1. A fim de encontrar o espaço nulo de uma matriz, você pode usar uma decomposição QR (ver aqui para detalhes).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top