(Todas as direcções perpendiculares) para hiperplana através de pontos de dados de p
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 ??p>
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,
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).