domingo, 2 de agosto de 2009

Cálculo matricial

Trabajar con matrices en R es muy sencillo.
En primer lugar, para crear una matriz podemos transformar un vector:

> x <- 1:9
> X <- matrix(x, ncol=3)

Por defecto el relleno de la matriz se hace por columnas. Si queremos que sea por filas, hay que indicarlo:

> Y <- matrix(x, ncol=3, byrow=T)

En cuanto a las operaciones con matrices, la suma de dos matrices se consigue con el operador "+"

> X + Y

El producto ordinario se puede hacer con el operador "*", pero éste sirve para calcular el producto término a término. No es el producto matricial.
El producto matricial se obtiene con el operador "%*%":

> X %*% Y

Recordar que es necesario que el número de columnas de la primera matriz coincida con el número de filas de la segunda.

La función t() calcula la matriz traspuesta:

> A <- t(X) %*% X

La función diag() se puede utilizar en dos sentidos, para construir una matriz diagonal o para extraer la diagonal de una matriz cuadrada:

> diag(1:3)
> d <- diag(X)

El determinante de una matriz cuadrada se consigue con la función det(). En cuanto a la inversa de una matriz, si tiene, se calcula con la función solve():



> b <- c(1,0,2,-1,1,0,0,0,1)
> B <- matrix(b, ncol=3)
> det(B) # no es cero, luego es inversible
> solve(B)

Si lo que queremos son los valores y los vectores propios de una matriz, debemos utilizar la función eigen() que nos da una lista:

> r.list <- eigen(X)
> valor.propio1 <- r.list$values[1]
> vector.propio1 <- r.list$vectors[ ,1]

Finalmente, si lo que queremos es la g-inversa de una matriz, podemos utilizar la función ginv() del paquete MASS que calcula la g-inversa de Moore-Penrose:

> library(MASS)
> ginv(X)

2 comentarios:

  1. holas.........porfavor me pueden ayudar necesito hacer el calculo de analisis de componentes para los que no sepan involucra sacar matriz de varianza-covarianza, valores y vectores propios y soy nueva en R ...............alguien tine un manual

    les agradeceria

    ResponderEliminar