Docstoc

Matrices en R

Document Sample
Matrices en R Powered By Docstoc
					Chapter 1
Matrices en R

Deybi A. Morales León




  Nota: Este documento es presentado para ser revisado por la comunidad
  de Usuarios R Nicaragua. Errores u omisiones, comentarios y sugerencias
  escribir al grupo https://www.facebook.com/groups/usuariosrnicaragua/
  o a morales.economia@gmail.com.

Se le considera a R como un software con las misma potencialidades
matriciales que matlab. Además de su fácil programación las posi-
bilidades con matrices son ilimitadas. Esto pone al alcanze de to-
do economista aplicado una herramienta menos pesada y progra-
mación menos rígida que la de matlab para el tratamiento de matri-
ces. Veamos pues algunas posibilidadades matriciales de R.



1.1 Construyendo matrices

Las funciones necesarias para construir matrices se encuentran en
el paquete “Matrix”.
• Podemos convertir vectores en matrices.

  >X<-matrix(data, nrow, ncol, byrow)
. La sintaxis empieza con el nombre de la matriz, luego la función
para generar la matriz, seguido de abrir paréntesis, el nombre del
vector creado, sigue el número de filas, número de columnas y cómo
empezarán las observaciones por filas o por columnas. Para Darle el
orden de cómo agrupar por fila agregamos byrow=TRUE, para que se
agrupen en columnas byrow=FALSE.
   Miremos el ejemplo:
  >seq1 <- seq(1:6)


                                                                            1
2                                                Deybi A. Morales León

    >matrix1<-matrix(seq1,3,2, byrow=TRUE)
    > matrix1
         [,1] [,2]
    [1,]    1    2
    [2,]    3    4
    [3,]    5    6
    >
  Se notará que se empiezan a grupar las las observaciones de fila
en fila. Pero ecuando aplicamos byrow=FALSE, estas se agruparán
en columnas.
    > seq1<-seq(1:6)
    > seq1
    [1] 1 2 3 4 5 6
    > matrix1<-matrix(seq1,3,2,byrow=FALSE)
    > matrix1
         [,1] [,2]
    [1,]    1    4
    [2,]    2    5
    [3,]    3    6
    >
  Es simpática la forma en que se presenta un matriz en R. Si quer-
emos identificar la columna dos solo debemos guiarnos por el en-
cabezado, en el anterior caso [,2].
  Cada que veamos una matrix debemos recordar que se conforma
de [filas, columnas]. nrow=número de filas y ncol=número de colum-
nas.
  para conocer las dimenciones de una matriz creada utilizamos la
función dim:
    > dim(matrix1)
    [1] 3 2
    >
  Imaginémosnos en el caso de unir dos matrices con matrices o con
un vector, entonce utilizaremos la función cbind:
    > v1<-c(1,1,2)
    > matrix2<-cbind(matrix1,v1)
    > matrix2
             v1
    [1,] 1 4 1
    [2,] 2 5 1
    [3,] 3 6 2
    La función cbind convierte data.frame en matrices.
1 Matrices en R                                                    3

  > A<-as.matrix(tasasinflacion[,2:12])
  > A
       X2000 X2001 X2002 X2003 X2004 X2005 X2006 X2007 X2008 X2009 X2010
  [1,]    NA    NA    NA 2.60 3.10 3.70 4.20 2.30 6.40 -1.10 0.90
  [2,] 10.25 10.96 9.68 9.87 13.13 14.07 9.43 10.81 13.90 4.05 5.82
  [3,] 4.30 1.40 2.80 2.50 5.40 4.30 4.90 4.90 5.50 -0.20             NA
  [4,] 5.08 8.91 6.33 5.85 9.23 8.57 5.79 8.75 9.40 -0.28 4.51
  [5,] 0.10 0.09 0.08 0.08 0.07 0.08 0.07 0.09 0.10 3.00              NA
  [6,] 9.87 4.84 3.87 6.48 9.26 9.58 9.45 16.88 13.77 0.93            NA
  [7,] 14.00 14.30 15.50 0.10 0.50 3.40 6.00 10.40 20.00 22.90 25.60
  >
   En la tabla anterior tenemos la tasa anual de inflación por países
centromericanos. A través de la función cbind la hemos convertido a
la matriz A.
   Si tuvieramos la tasa de inflación para el año 2002 en Belice, solo
aplicamos según la ubicación del elemento para cambiar la obser-
vación. Por ejemplo supongamos que fue de dos puntos:
  > A[1,3]=2
  > A
       X2000 X2001 X2002 X2003 X2004 X2005 X2006 X2007 X2008 X2009 X2010
  [1,]    NA    NA 2.00 2.60 3.10 3.70 4.20 2.30 6.40 -1.10 0.90
  [2,] 10.25 10.96 9.68 9.87 13.13 14.07 9.43 10.81 13.90 4.05 5.82
  [3,] 4.30 1.40 2.80 2.50 5.40 4.30 4.90 4.90 5.50 -0.20             NA
  [4,] 5.08 8.91 6.33 5.85 9.23 8.57 5.79 8.75 9.40 -0.28 4.51
  [5,] 0.10 0.09 0.08 0.08 0.07 0.08 0.07 0.09 0.10 3.00              NA
  [6,] 9.87 4.84 3.87 6.48 9.26 9.58 9.45 16.88 13.77 0.93            NA
  [7,] 14.00 14.30 15.50 0.10 0.50 3.40 6.00 10.40 20.00 22.90 25.60
  >
  Para eliminar el los encabezados o nombres de columnas
  > dimnames(A)<-list(NULL,NULL)
  > A
        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]                    [,10] [,11]
  [1,]    NA    NA 2.00 2.60 3.10 3.70 4.20 2.30 6.40                   -1.10 0.90
  [2,] 10.25 10.96 9.68 9.87 13.13 14.07 9.43 10.81 13.90                4.05 5.82
  [3,] 4.30 1.40 2.80 2.50 5.40 4.30 4.90 4.90 5.50                     -0.20    NA
  [4,] 5.08 8.91 6.33 5.85 9.23 8.57 5.79 8.75 9.40                     -0.28 4.51
  [5,] 0.10 0.09 0.08 0.08 0.07 0.08 0.07 0.09 0.10                      3.00    NA
  [6,] 9.87 4.84 3.87 6.48 9.26 9.58 9.45 16.88 13.77                    0.93    NA
  [7,] 14.00 14.30 15.50 0.10 0.50 3.40 6.00 10.40 20.00                22.90 25.60
  >
  Si queremos extraer un elemento de la matriz solo damos la ubi-
cación del elemento. Supongamos que queremos la tasa de inflación
4                                                Deybi A. Morales León

de Nicaragua en el 2006. Esta se ubica en la fila en la fila 6, columna
8.
    > A[6,7]
    [1] 9.45
    >
  Podemos ponerle nombres a las filas o columnas de una matriz,
supongamos que creamos la matriz 3x4:
    > B<-matrix(c(3,4,2,5,2,1,3,4,5,4,2,5), 3,4, byrow=T)
    > B
         [,1] [,2] [,3] [,4]
    [1,]    3    4    2    5
    [2,]    2    1    3    4
    [3,]    5    4    2    5
    >
  Agreguemos nombres o encabezados. Arbitrariamente diremos
que son tasas de inflación del 2001 al 2004 para Nicaragua, Belice y
Honduras:
    > dimnames(B) <- list(c("Nicaragua",
    "Belice", "Honduras"),c("2001","2002","2003","2004"))
    > B
              2001 2002 2003 2004
    Nicaragua    3    4    2    5
    Belice       2    1    3    4
    Honduras     5    4    2    5
    >
    Si queremos eliminar los encabezados solo aplicamos:
    > dimnames(B) <- list(NULL, NULL)
    >
    > B
         [,1] [,2] [,3] [,4]
    [1,]    3    4    2    5
    [2,]    2    1    3    4
    [3,]    5    4    2    5
    >
    Llamemos la fila 2 de la matriz B:
    > B[2,]
    [1] 2 1 3 4
    >
    Si queremos llamar a la columna 3 de la matriz B:
1 Matrices en R                                                  5

  > B[,3]
  [1] 2 3 2
  >
  Conociendo la manera de crear matrices vamos a utilizar la po-
tencia de R cuya programación matricial permite realizar facilmente
operaciones matriciales.



1.2 Operaciones con matrices.

Vamos a generar tres matrices para que sean ejemplos a las sigu-
ientes opeaciones.
  > A<-matrix(c(3,4,2,1,2,1,1,4,5,4,5,5), 3,4, byrow=T)
  > A
       [,1] [,2] [,3] [,4]
  [1,]    3    4    2    1
  [2,]    2    1    1    4
  [3,]    5    4    5    5
  >


  > B<-matrix(c(3,4,2,4,4,4,1,4,5,4,3,5), 3,4, byrow=T)
  > B
       [,1] [,2] [,3] [,4]
  [1,]    3    4    2    4
  [2,]    4    4    1    4
  [3,]    5    4    3    5
  >
  > C<-matrix(c(2,4,2,4,5,4,1,4,5,4,3,5), 4,3, byrow=T)
  > C
       [,1] [,2] [,3]
  [1,]    2    4    2
  [2,]    4    5    4
  [3,]    1    4    5
  [4,]    4    3    5
  >
• Sumar matrices A y B
     > A
            [,1] [,2] [,3] [,4]
     [1,]      3    4    2    1
     [2,]      2    1    1    4
     [3,]      5    4    5    5
6                                              Deybi A. Morales León

    > B
            [,1] [,2] [,3] [,4]
    [1,]       3    4    2    4
    [2,]       4    4    1    4
    [3,]       5    4    3    5
    > A+B
            [,1] [,2] [,3] [,4]
    [1,]       6    8    4    5
    [2,]       6    5    2    8
    [3,]      10    8    8   10
    >
• Restar matrices A y B
    > A
            [,1] [,2] [,3] [,4]
    [1,]       3    4    2    1
    [2,]       2    1    1    4
    [3,]       5    4    5    5
    > B
            [,1] [,2] [,3] [,4]
    [1,]       3    4    2    4
    [2,]       4    4    1    4
    [3,]       5    4    3    5
    > A-B
            [,1] [,2] [,3] [,4]
    [1,]       0    0    0   -3
    [2,]      -2   -3    0    0
    [3,]       0    0    2    0
    >
• Multiplicar elemento por elemento matrices A y B
    > A
            [,1] [,2] [,3] [,4]
    [1,]       3    4    2    1
    [2,]       2    1    1    4
    [3,]       5    4    5    5
    > B
            [,1] [,2] [,3] [,4]
    [1,]       3    4    2    4
    [2,]       4    4    1    4
    [3,]       5    4    3    5
    > A*B
            [,1] [,2] [,3] [,4]
    [1,]       9   16    4    4
    [2,]       8    4    1   16
1 Matrices en R                                                7

     [3,]     25   16    15    25
     >
• Multiplicación para obtener el producto matricial de A y B
     > A
            [,1] [,2] [,3] [,4]
     [1,]      3    4    2    1
     [2,]      2    1    1    4
     [3,]      5    4    5    5
     > C
          [,1] [,2] [,3]
     [1,]    2    4    2
     [2,]    4    5    4
     [3,]    1    4    5
     [4,]    4    3    5
     > A%*%C
          [,1] [,2] [,3]
     [1,]   28   43   37
     [2,]   25   29   33
     [3,]   51   75   76
     >
• Obtener el producto cruzado de la matrices A y B
     > A
            [,1] [,2] [,3] [,4]
     [1,]      3    4    2    1
     [2,]      2    1    1    4
     [3,]      5    4    5    5
     > B
          [,1] [,2] [,3] [,4]
     [1,]    3    4    2    4
     [2,]    4    4    1    4
     [3,]    5    4    3    5
     > crossprod(A,B)
          [,1] [,2] [,3] [,4]
     [1,]   42   40   23   45
     [2,]   36   36   21   40
     [3,]   35   32   20   37
     [4,]   44   40   21   45
     >
• Productor cruzado de la matriz A
     > A
            [,1] [,2] [,3] [,4]
     [1,]      3    4    2    1
8                                                Deybi A. Morales León

    [2,]    2    1    1    4
    [3,]    5    4    5    5
    > crossprod(A)
         [,1] [,2] [,3] [,4]
    [1,]   38   34   33   36
    [2,]   34   33   29   28
    [3,]   33   29   30   31
    [4,]   36   28   31   42
    >



1.3 Funciones para matrices

• La transpuesta de A
    > A
         [,1] [,2] [,3] [,4]
    [1,]    3    4    2    1
    [2,]    2    1    1    4
    [3,]    5    4    5    5
    > t(A)
         [,1] [,2] [,3]
    [1,]    3    2    5
    [2,]    4    1    4
    [3,]    2    1    5
    [4,]    1    4    5
    >
• Crear la matriz con los valores de un vector como diagonales
    > x<-c(2,4,6)
    > diag(x)
         [,1] [,2] [,3]
    [1,]    2    0    0
    [2,]    0    4    0
    [3,]    0    0    6
    >
• Extraer los elementos de la diagonal principal de de la matriz A
    > A
         [,1] [,2] [,3] [,4]
    [1,]    3    4    2    1
    [2,]    2    1    1    4
    [3,]    5    4    5    5
    > diag(A)
    [1] 3 1 5
1 Matrices en R                                             9

     >
• Crear una matriz identidad de un escalar
     > k<-2
     > diag(k)
          [,1] [,2]
     [1,]    1    0
     [2,]    0    1
     > k<-6
     > diag(k)
          [,1] [,2] [,3] [,4] [,5] [,6]
     [1,]    1    0    0    0    0    0
     [2,]    0    1    0    0    0    0
     [3,]    0    0    1    0    0    0
     [4,]    0    0    0    1    0    0
     [5,]    0    0    0    0    1    0
     [6,]    0    0    0    0    0    1
     >


• El determinante de una matriz A
     > D<-matrix(c(1,3,2,3), 2)
     > D
          [,1] [,2]
     [1,]    1    2
     [2,]    3    3
     > det(D)
     [1] -3
     >
• Devuelve la inversa de la matrix C
     > D
          [,1] [,2]
     [1,]    1    2
     [2,]    3    3
     > solve(D)
          [,1]       [,2]
     [1,]   -1 0.6666667
     [2,]    1 -0.3333333
     >


• Obtener los autovalores y los autovectores de la matriz
     > D
            [,1] [,2]
10                                               Deybi A. Morales León

     [1,]    1   2
     [2,]    3   3
     > eigen(D)
     $values
     [1] 4.6457513 -0.6457513

     $vectors
                [,1]       [,2]
     [1,] -0.4809652 -0.7721779
     [2,] -0.8767397 0.6354064

     >
• Obtener las sumas de las columnas de la matriz A
     > A
          [,1] [,2] [,3] [,4]
     [1,]    3    4    2    1
     [2,]    2    1    1    4
     [3,]    5    4    5    5
     > colSums(A)
     [1] 10 9 8 10
     >


• Obtener las sumas de las filas de la matriz B
     > B
          [,1] [,2] [,3] [,4]
     [1,]    3    4    2    4
     [2,]    4    4    1    4
     [3,]    5    4    3    5
     > rowSums(B)
     [1] 13 13 17
     >


• Multiplicar, sumar, restar o dividir la matriz A por un escalar o
  número
     > A
           [,1] [,2] [,3] [,4]
     [1,]     3    4    2    1
     [2,]     2    1    1    4
     [3,]     5    4    5    5
     > k<-2
     > A+k
           [,1] [,2] [,3] [,4]
1 Matrices en R                                                    11

     [1,]         5     6    4    3
     [2,]         4     3    3    6
     [3,]         7     6    7    7
     > A*k
             [,1] [,2] [,3] [,4]
     [1,]       6    8    4    2
     [2,]       4    2    2    8
     [3,]      10    8   10   10
     > A/k
           [,1]       [,2] [,3] [,4]
     [1,] 1.5          2.0 1.0 0.5
     [2,] 1.0          0.5 0.5 2.0
     [3,] 2.5          2.0 2.5 2.5
     > A+3
           [,1]       [,2] [,3] [,4]
     [1,]     6          7    5    4
     [2,]     5          4    4    7
     [3,]     8          7    8    8
     > A-3
           [,1]       [,2] [,3] [,4]
     [1,]     0          1   -1   -2
     [2,]    -1         -2   -2    1
     [3,]     2          1    2    2
     > A*3
           [,1]       [,2] [,3] [,4]
     [1,]     9         12    6    3
     [2,]     6          3    3   12
     [3,]    15         12   15   15
     > A/3
               [,1]      [,2]      [,3]      [,4]
     [1,] 1.0000000 1.3333333 0.6666667 0.3333333
     [2,] 0.6666667 0.3333333 0.3333333 1.3333333
     [3,] 1.6666667 1.3333333 1.6666667 1.6666667
     >
• Obtener la medias de las filas o de las columnas de la matriz A
     > A
          [,1] [,2] [,3] [,4]
     [1,]    3    4    2    1
     [2,]    2    1    1    4
     [3,]    5    4    5    5
     > rowMeans(A)
     [1] 2.50 2.00 4.75
     > colMeans(A)
     [1] 3.333333 3.000000 2.666667 3.333333
12                                               Deybi A. Morales León

     >


• Otra función útil es cbind ó rbind. Estas la utilizamos para unir
  matrices, observe el ejemplo:
     > matrix1<-matrix(c(1,2,3,4),2)
     > matrix1
          [,1] [,2]
     [1,]    1    3
     [2,]    2    4
     > matrix2<-matrix(c(3,5,2,7),2)
     > matrix2
          [,1] [,2]
     [1,]    3    2
     [2,]    5    7
     > cbind(matrix1,matrix2)
          [,1] [,2] [,3] [,4]
     [1,]    1    3    3    2
     [2,]    2    4    5    7
     > matrix(cbind(matrix1,matrix2))
          [,1]
     [1,]    1
     [2,]    2
     [3,]    3
     [4,]    4
     [5,]    3
     [6,]    5
     [7,]    2
     [8,]    7
     > matrix(cbind(matrix1,matrix2),2)
          [,1] [,2] [,3] [,4]
     [1,]    1    3    3    2
     [2,]    2    4    5    7
     > matrix(rbind(matrix1,matrix2),2)
          [,1] [,2] [,3] [,4]
     [1,]    1    3    3    2
     [2,]    2    5    4    7
     >
• Otros usuarios en vez de utilizar matriz, utiliza el comando array.
     > array(rbind(matrix1,matrix2),2)
     [1] 1 2
     > array(rbind(matrix1,matrix2)
     + )
     [1] 1 2 3 5 3 4 2 7
1 Matrices en R                                                  13

     > array(rbind(matrix1,matrix2))
     [1] 1 2 3 5 3 4 2 7
     > array(rbind(matrix1,matrix2), c(2,4))
          [,1] [,2] [,3] [,4]
     [1,]    1    3    3     2
     [2,]    2    5    4     7
     > array(c(1,2,3,4,5,6,7,4), c(2,4))
          [,1] [,2] [,3] [,4]
     [1,]    1    3    5     7
     [2,]    2    4    6     4
     > array(c(1:3), c(2,4))
          [,1] [,2] [,3] [,4]
     [1,]    1    3    2     1
     [2,]    2    1    3     2
     > B<-array(c(2,3,4,5,6), c(2,2))
     > B
          [,1] [,2]
     [1,]    2    4
     [2,]    3    5
     > C<-array(c(2,3,4,5,6), c(2,2))
     > C
          [,1] [,2]
     [1,]    2    4
     [2,]    3    5

Ejemplo 1. Regresión Matricial
   Una utilidad de las matrices en Economía es en los temas econométri-
cos. Cuando aún no teníamos al alcance una computadora con pro-
gramas espacializados para realizar regresiones teníamos que hac-
er la estimaciones con lápiz y papel, para ello utilizábamos fórmu-
las que se complicaban conforme agregábamos más variables inde-
pendientes a la regresión. Entonces teníamos que aplicar matrices
cuando las fórmulas se complicaban. Aún se enseña con matrices
en las clases de econometría avanzada, se considera necesario pues
los avance econométricos surgen del juego con matrices. Las nuevas
pruebas econométricas y métodos son elaboradas con matrices, una
vez testeados y pulidos pasan a formar parte de la rutina automática
de algún programa estadístico y econométrico como R.
   El Método de Mínimo Cuadrado Ordinario (MCO) es por excelencia
el más difundido y sin muchas complicaciones para su aplicación.
   Una ecuación de regresion. Relaciona variables independientes
que consideran que afectar a una variable dependiente. En forma
matemática puede escribirse:

                        f (y) =f (x1 , x2 , x3 , xi )          (1.1)
14                                                             Deybi A. Morales León

   Expresa que y está en función de todas las variables x consider-
adas explicativas. Según el MCO esta relación tiene que lineal en los
parámetros aunque no necesariamente en las variables. Pero una
forma de representarlo es como una ecuación lineal.


                       yi = β0 +β1 x1 + β2 x + β3 x + βi xi                    (1.2)

   Ya que no conoceremos con exactitud todas las variables que ex-
plican a y, trabajamos con muestras y porque tampoco es práctico
agragarlas todas si sus influencias son muy pequeñas, tendremos
que considerar un término de error ui .


              yN = β0 +β1 x1N + β2 x2N + β3 x3N + βk xkN + εN                  (1.3)

  Esto es representación de la ordenación de observaciones ubican-
dolas según la ecuación 2.3.


             y1 = β0 +β1 x11 + β2 x21 + β3 x31 + ..... + βk xk1 + ε1           (1.4)



             y2 = β0 +β1 x12 + β2 x22 + β3 x32 + ..... + βk xk2 + ε2           (1.5)



     − − − − − − − − − − − − − − − − − − − − − − − − − − − − −−−



           yN = β0 +β1 x1N + β2 x2N + β3 x3N + ..... + βk xkN + εN             (1.6)

     La ecuación 2.3 se compondrá de forma matricial como

                                  y = Xβ + ε                                   (1.7)

     Se desgloza en:

                                                                      
                          1 x11      ....   xk1           β1         ε1
                y1        1 x12       ....   xk2   β =  β2  ε =  ε 2 
                                                                        
          y =  y1  X = 
                          .... ....                                           (1.8)
                                       ....    ....       ...      ... 
               yN
                            1 x2N      ....   xkN           βk         εN

  Esto nos dice que y es una matrix columna con los valores ob-
servador de y. En el caso de la matrix X esta contendrá todas las
1 Matrices en R                                                 15

observaciones de las variables independientes y la matrix β es una
matrix columna con los coeficientes que acompaña a cada variable
independiente. La matriz que queda es la de los errores.
  Una vez se tienen contruídas las matrices con los valores obser-
vados, nos resta encontrar las matriz de coeficientes.
                          ˆ
                          β = (X X)−1 X y                     (1.9)

   Como el lector sabrá y puede profundizar en libros especializa-
dos en econometría. Encontrar los coeficientes es el primer paso del
MCO. Vayamos a la aplicación.
   Tenemos la base de datos tomada del Métodos econométricos
del libro de J. Johnston, encuentra en el llamado a la base “in-
dice.importaciones”, en el que Y es el índice de importaciones de
bienes y servicios del Reino Unido a precios constantes (1948), X2
es el índice del producto bruto de Reino Unido a precios de 1948 y
X3 es el cociente de índices de precio de las importaciones y de la
producción general del Reino Unido:
  > indice.importaciones
    year   Y X2 X3
  1 1948 100 100 100
  2 1949 106 104 99
  3 1950 107 106 110
  4 1951 120 111 126
  5 1952 110 111 113
  6 1953 116 115 103
  7 1954 123 120 102
  8 1955 133 124 103
  9 1956 137 126 98
  > attach(indice.importaciones)
  >


  Conformamos las matrices.

                            y = Xβ + ε                       (1.10)

• Formamos la matriz Y.
     > y<-matrix(Y)
     > y
           [,1]
      [1,] 100
      [2,] 106
      [3,] 107
      [4,] 120
16                                                 Deybi A. Morales León

           [5,]   110
           [6,]   116
           [7,]   123
           [8,]   133
           [9,]   137
       >
• Formamos la matriz X
       > X<-matrix(cbind(1,X2,X3), ncol=3)
       > X
              [,1] [,2] [,3]
         [1,]    1 100 100
         [2,]    1 104    99
         [3,]    1 106 110
         [4,]    1 111 126
         [5,]    1 111 113
         [6,]    1 115 103
         [7,]    1 120 102
         [8,]    1 124 103
         [9,]    1 126    98
       >

                                     ˆ
Encontremos la matriz de coeficientes β:


                            ˆ
                            β = (X X)−1 X y                      (1.11)

     > b.hat<-solve(t(X)%*%X)%*%t(X)%*%y
     > b.hat
                 [,1]
     [1,] -49.3413390
     [2,]   1.3642379
     [3,]   0.1138806
     >


     Encontrando las varianzas y los errores estándares los parámetros
                            ˆˆ     ˆ
                            εε=y y−β X y                         (1.12)

     > ee<-t(y)%*%y-t(b.hat)%*%t(X)%*%y
     > ee
              [,1]
     [1,] 77.54154
     >
1 Matrices en R                                                    17



                                      ˆˆ
                                      εε
                              s2 =
                                     N −k


                              ˆ
                         V ar(β) =s2 (X X)−1


                              ˆ
                           ee(β) =         ˆ
                                      V ar(β)

  > s.cuadrado<-ee/(9-3)
  > s.cuadrado<-s.cuadrado[1,]
  > s.cuadrado
  [1] 12.92359
  > Var.b.hat<-s.cuadrado*solve(t(X)%*%X)
  > Var.b.hat
             [,1]         [,2]         [,3]
  [1,] 578.926281 -2.691128533 -2.579177384
  [2,] -2.691129 0.020492753 0.003541957
  [3,] -2.579177 0.003541957 0.020556002
  > sqrt(diag(Var.b.hat))
  [1] 24.0608870 0.1431529 0.1433736
  >
   Var.b.hat en su diagonal principal posee las Varianzas de los coefi-
cientes. El resto son las Covarianzas. Para el error estandar sacamos
la raíz cuadrada a la diagonal principal.
   Calculando los t-students para hipótesis individual

                                            ˆ
                                            β
                          t − student =
                                              ˆ
                                          ee(β)
  > b.hat/sqrt(diag(Var.b.hat))
             [,1]
  [1,] -2.0506866
  [2,] 9.5299354
  [3,] 0.7942926
  Los p-value se calculan de las siguiente manera


                  p − values =2(1 − |t − student|N −k )

  > 2*(1-pt(abs(b.hat/sqrt(diag(Var.b.hat))), 9-3))
               [,1]
18                                                    Deybi A. Morales León

     [1,] 8.616009e-02
     [2,] 7.616812e-05
     [3,] 4.572819e-01
     >
     Otro valor a estimar que nos interesa es el R2

                                          ˆˆ
                                          εε
                                R2 =1 −                             (1.13)
                                          yy

                                     ˆ    ˆ
                                     β X Xβ
                              R2 =                                  (1.14)
                                       yy
     > ((1-((t(y)%*%y-t(b.hat)%*%t(X)%*%y)/t(y)%*%y))*10^2)-99
               [,1]
     [1,] 0.9375813
     > ((1-(ee/t(y)%*%y))*10^2)-99
               [,1]
     [1,] 0.9375813
     > (((t(b.hat)%*%t(X)%*%X%*%b.hat)/t(y)%*%y)*10^2)-99
               [,1]
     [1,] 0.9375813
     >


                                   ˆˆ
                                   ε ε/(N − k)
                           ¯
                           R2 =1 −                                  (1.15)
                                   y y/(N − 1)
     > ((1-((ee/(9-3))/((t(y)%*%y)/(9-1))))*10^2)-99
              [,1]
     [1,] 0.916775
     >
     Para probar la hipótesis conjunta utilizamos la F


                                   R2 /(k − 1)
                          F =                                       (1.16)
                                (1 − R2 )/(N − k)
     > R.cuadrado<-(((t(b.hat)%*%t(X)%*%X%*%b.hat)/t(y)%*%y)*10^2)-99
     > (R.cuadrado/(3-1))/((1-R.cuadrado)/(9-3))
             [,1]
     [1,] 45.0625
     >
     Para econtrar las Y estimadas solo resolvemos
1 Matrices en R                                                 19

                            y = Xβ + ε                       (1.17)

  > y.hat<-X%*%b.hat
  > y.hat
             [,1]
   [1,] 98.47051
   [2,] 103.81358
   [3,] 107.79475
   [4,] 116.43803
   [5,] 114.95758
   [6,] 119.27572
   [7,] 125.98303
   [8,] 131.55386
   [9,] 133.71294
  >
  Por último pues obtengamos los residuos o errores

                             ε =y − y
                             ˆ      ˆ                        (1.18)

  > e<-y-y.hat
  > e
                [,1]
   [1,]    1.5294874
   [2,]    2.1864165
   [3,]   -0.7947461
   [4,]    3.5619744
   [5,]   -4.9575775
   [6,]   -3.2757228
   [7,]   -2.9830316
   [8,]    1.4461362
   [9,]    3.2870635
  >
  A como hemos visto R tiene una programación muy fácil para tra-
bajar con matrices, lo que lo convierte en oponente serio a Matlab.

				
DOCUMENT INFO
Categories:
Stats:
views:16
posted:9/16/2012
language:
pages:19
Description: Este documento ense�a a trabajar con matrices en el lenguaje del software estad�stico R. Tambi�n ense�a como resolver una regresi�n lineal con matrices. Elaborado para Usuarios R Nicaragua