Skip to content

[R-es] factorización QR

4 messages · jmcontreras, Carlos J. Gil Bellosta, Carlos Ortega +1 more

#
Hola a todos

Una duda con la función qr
La factorización QR de una matriz A dará dos matrices, una Q ortogonal y 
un R triangular superior. Pero todas las funciones y paquetes que 
encuentro dan una matriz qr que no es ninguna de ellas. ¿En qué me 
equivoco? ¿Cómo consigo las dos matrices?

Por ejemplo:
 > A<-matrix(c(1,2,3,2,1,3,2,1,1), 3)
 > qr(A)$qr->kk


 > t(kk)%*%kk
          [,1]      [,2]     [,3]
[1,] 14.92857 14.009965 6.651530
[2,] 14.00997 14.111441 7.614529
[3,]  6.65153  7.614529 6.000000
 > kk%*%t(kk)
           [,1]       [,2]       [,3]
[1,] 29.571429 -8.8457246 -1.9996028
[2,] -8.845725  3.3809524 -0.3550511
[3,] -1.999603 -0.3550511  2.0876314

No es ortogonal ni triangular



Saludos

--
#
Hola, ¿qué tal?

Mira:
[,1]       [,2]       [,3]
[1,] -0.2672612  0.7715167 -0.5773503
[2,] -0.5345225 -0.6172134 -0.5773503
[3,] -0.8017837  0.1543033  0.5773503
[,1]         [,2]          [,3]
[1,]  1.000000e+00 5.551115e-17 -5.551115e-17
[2,]  5.551115e-17 1.000000e+00  0.000000e+00
[3,] -5.551115e-17 0.000000e+00  1.000000e+00
[,1]      [,2]      [,3]
[1,] -3.741657 -3.474396 -1.870829
[2,]  0.000000  1.388730  1.080123
[3,]  0.000000  0.000000 -1.154701

Todo está explicado en ?qr

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 6 de octubre de 2014, 14:48, José Miguel Contreras García
<jmcontreras en ugr.es> escribió:
#
http://rosettacode.org/wiki/QR_decomposition
----------------------
R <http://rosettacode.org/wiki/Category:R>

# R has QR decomposition built-in (using LAPACK or LINPACK)

a <- matrix(c(12, -51, 4, 6, 167, -68, -4, 24, -41), nrow=3, ncol=3, byrow=T)
d <- qr(a)
qr.Q(d)
qr.R(d)

# now fitting a polynomial
x <- 0:10
y <- 3*x^2 + 2*x + 1

# using QR decomposition directly
a <- cbind(1, x, x^2)
qr.coef(qr(a), y)

# using least squares
a <- cbind(x, x^2)
lsfit(a, y)$coefficients

# using a linear model
xx <- x*x
m <- lm(y ~ x + xx)
coef(m)




----------------------

El 6 de octubre de 2014, 14:48, José Miguel Contreras García <
jmcontreras en ugr.es> escribió:

  
    
#
Hola,

     Supongo que la contestación de Carlos J. Gil es más que suficiente. 
Por tratar de aclararlo algo más (y si no me equivoco...), realmente la 
matriz Q no está almacenada en la descomposición (solo las 
transformaciones necesarias para obtenerla). No se suele trabajar 
directamente con ella y por eso aparecen las funciones qr.qy y qr.qty 
por si quieres hacer operaciones...

     Comentar también que uno se puede encontrar con pequeños problemas 
cuando se utiliza la librería LAPACK para obtenerla (algo que yo 
recomiendo si la matriz no es de rango máximo), porque algunas de las 
funciones de R funcionan solo para la factorización obtenida con 
LINPACK  (qr.resid y qr.fitted si no me equivoco). R utiliza para este 
caso por defecto la librería FORTRAN LINPACK más antigua. LAPACK es la 
versión 'moderna' y es la que utiliza R para la mayoría de los cálculos 
matriciales. Si alguien necesita documentarse sobre este tema puedo 
darle algunas referencias...

     Un saludo,
         Rubén F.C.





El 06/10/2014 14:48, José Miguel Contreras García escribió: