получить ранг матрицы, которую я уже взял разреженное разложение QR в R - PullRequest
0 голосов
/ 12 марта 2019

В РИ взяли QR-разложение разреженной матрицы с помощью удивительного пакета Matrix.Теперь я хочу знать (приблизительный) ранг этой матрицы.Как ни странно, хотя основание qr не соответствует ранговому приближению, я не вижу его в пакете Matrix.Я думаю, что я должен сделать QR-код внутри Matrix::rankMatrix.

Пример кода

require(Matrix)
X <- Diagonal(10) # rank should be 10
qrX <- Matrix::qr(X)
rankMatrix(qrX)
# Error in diff(sval) <= 0 : 
# no method for coercing this S4 class to a vector

Конечно, я сам смог бы оценить ранг, но это действительно кажетсяСтранно, что я должен реализовать это сам.

rkfn <- function(qrX) {
  d <- diag(qrR(qrX))
  tol <- length(d) * .Machine$double.eps
  sum(d > max(d) * tol)
}
rkfn(qrX)
# 10

Это основано на документации для Matrix::rankMatrix, но я чувствую, что в Матрице должно быть что-то, что делает это для меня.

...