У меня простой вопрос:
по заданным p точкам (неколлинеарным) в R ^ 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 определяет p-мерную гиперплоскость, перпендикулярную b и проходящую через x2.
Теперь мои вопросы:
Формула взята из моей интерпретации этой записи в википедии ("solve (A)" - это команда R для A ^ -1). Почему это не работает для p> 2? Что я делаю не так?
PS: я видел это сообщение (на редактировании в betoverflow: извините, я не могу опубликовать более одной ссылки), но каким-то образом оно мне не помогает.
Заранее спасибо,
У меня проблема с реализацией / пониманием решения Лю, когда p> 2:
не должно ли скалярное произведение между разложением qr развернутой матрицы и направлением гиперплоскости быть 0? (т.е. если векторы qr перпендикулярны гиперплоскости)
т.е. когда р = 2 это
c(-b[2:p],1)%*%c(a1)
дает 0. Когда p> 2, это не так.
Вот моя попытка реализовать решение Виктора Лю.
а) с учетом p линейно независимых наблюдений в R ^ p:
p<-2;x<-matrix(rnorm(p^2),p,p);x
[,1] [,2]
[1,] -0.4634923 -0.2978151
[2,] 1.0284040 -0.3165424
б) поставьте их в матрицу и вычтите первый ряд:
a0<-sweep(x,2,x[1,],FUN="-");a0
[,1] [,2]
[1,] 0.000000 0.00000000
[2,] 1.491896 -0.01872726
в) выполнить QR-разложение матрицы а0. Вектор в нулевом пространстве - это направление, которое я ищу:
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-1 (т. Е. (1,0) здесь) QR-вектор, когда p> 2?
Заранее спасибо,