J'ai besoin d'inverser une matrice de variance-covariance dans Ruby et vecteur par multiplication matricielle. Quelle bibliothèque Ruby/Gem numérique dois-je utiliser?Statistiques et algèbre matricielle dans Ruby
5
A
Répondre
1
Essayez d'utiliser la bibliothèque 'matrice':
http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html
3
Une possibilité numériquement plus stable que l'inversion directe est d'utiliser un Cholesky decomposition avec le package que vous trouverez here:
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
Mieux que inverser l est d'utiliser la méthode décrite dans l'article wikpedia lié ci-dessus.
Si votre problème est numériquement trop instable, alors considérez le Singular Value Decomposition, mais je n'ai pas de code pour cela.
3
Si vous pouvez compiler le code, utilisez rubis GSL
gem install gsl
L'inverse peut être obtenue en utilisant le module LU
inverse=GSL::Linalg::LU.invert(matrix)
0
Il est NMatrix. Il existe un support pour diverses opérations, y compris certaines de BLAS et LAPACK (en utilisant ATLAS).