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
--
[R-es] factorización QR
4 messages · jmcontreras, Carlos J. Gil Bellosta, Carlos Ortega +1 more
Hola, ¿qué tal? Mira:
A<-matrix(c(1,2,3,2,1,3,2,1,1), 3) kk <- qr(A) qr.Q(kk)
[,1] [,2] [,3] [1,] -0.2672612 0.7715167 -0.5773503 [2,] -0.5345225 -0.6172134 -0.5773503 [3,] -0.8017837 0.1543033 0.5773503
qr.Q(kk) %*% t(qr.Q(kk))
[,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
qr.R(kk)
[,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ó:
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 --
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
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 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 --
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
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ó:
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 --
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es