Ich muss eine Varianz-Kovarianz-Matrix in Ruby und Vektor durch Matrixmultiplikation invertieren. Welche numerische Ruby-Bibliothek/Gem sollte ich verwenden?Statistik und Matrixalgebra in Ruby
5
A
Antwort
1
Versuchen Sie, die 'Matrix' Bibliothek:
http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html
3
Eine numerisch stabile Möglichkeit als direkte Inversion ist ein Cholesky decomposition mit dem Paket verwenden Sie here finden:
require 'Cholesky.rb'
require 'pp'
# m is the covariance matrix you want to invert (it is positive semidefinite)
l = m.cholesky
li = l.inverse
lit = li.transpose
# lit*li is approximately the inverse and the next line shows this
pp lit*li*m
Besser als Umkehren l ist die Methode, die in dem oben verlinkten Wikipedia-Artikel beschrieben wird.
Wenn Ihr Problem numerisch zu instabil ist, dann denken Sie an die Singular Value Decomposition, aber ich habe keinen Code dafür.
3
Wenn Sie Code kompilieren können, verwenden rubin GSL
gem install gsl
Die inverse kann LU erhalten werden Modul
inverse=GSL::Linalg::LU.invert(matrix)
0
Es gibt NMatrix. Es gibt Unterstützung für verschiedene Operationen, einschließlich einiger von BLAS und LAPACK (durch Verwendung von ATLAS).