19

Click here to load reader

Matrices en R

Embed Size (px)

DESCRIPTION

ste 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

Citation preview

Page 1: Matrices en R

Chapter 1Matrices en R

Deybi A. Morales León

Nota: Este documento es presentado para ser revisado por la comunidadde Usuarios R Nicaragua. Errores u omisiones, comentarios y sugerenciasescribir al grupo https://www.facebook.com/groups/usuariosrnicaragua/o a [email protected].

Se le considera a R como un software con las misma potencialidadesmatriciales 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 enel 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ónpara generar la matriz, seguido de abrir paréntesis, el nombre delvector creado, sigue el número de filas, número de columnas y cómoempezarán las observaciones por filas o por columnas. Para Darle elorden de cómo agrupar por fila agregamos byrow=TRUE, para que seagrupen en columnas byrow=FALSE.

Miremos el ejemplo:

>seq1 <- seq(1:6)

1

Page 2: Matrices en R

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 filaen fila. Pero ecuando aplicamos byrow=FALSE, estas se agruparánen 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 conformade [filas, columnas]. nrow=número de filas y ncol=número de colum-nas.

para conocer las dimenciones de una matriz creada utilizamos lafunción dim:

> dim(matrix1)[1] 3 2>

Imaginémosnos en el caso de unir dos matrices con matrices o conun 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.

Page 3: Matrices en R

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ísescentromericanos. A través de la función cbind la hemos convertido ala matriz A.

Si tuvieramos la tasa de inflación para el año 2002 en Belice, soloaplicamos 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

Page 4: Matrices en R

4 Deybi A. Morales León

de Nicaragua en el 2006. Esta se ubica en la fila en la fila 6, columna8.

> 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 diremosque son tasas de inflación del 2001 al 2004 para Nicaragua, Belice yHonduras:

> dimnames(B) <- list(c("Nicaragua","Belice", "Honduras"),c("2001","2002","2003","2004"))> B

2001 2002 2003 2004Nicaragua 3 4 2 5Belice 2 1 3 4Honduras 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:

Page 5: Matrices en R

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 facilmenteoperaciones 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

Page 6: Matrices en R

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

Page 7: Matrices en R

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

Page 8: Matrices en R

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

Page 9: Matrices en R

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]

Page 10: Matrices en R

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 onú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]

Page 11: Matrices en R

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

Page 12: Matrices en R

12 Deybi A. Morales León

>

• Otra función útil es cbind ó rbind. Estas la utilizamos para unirmatrices, 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

Page 13: Matrices en R

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 MatricialUna 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 matricescuando las fórmulas se complicaban. Aún se enseña con matricesen las clases de econometría avanzada, se considera necesario pueslos avance econométricos surgen del juego con matrices. Las nuevaspruebas econométricas y métodos son elaboradas con matrices, unavez testeados y pulidos pasan a formar parte de la rutina automáticade algún programa estadístico y econométrico como R.

El Método de Mínimo Cuadrado Ordinario (MCO) es por excelenciael más difundido y sin muchas complicaciones para su aplicación.

Una ecuación de regresion. Relaciona variables independientesque consideran que afectar a una variable dependiente. En formamatemática puede escribirse:

f(y) =f(x1, x2, x3, xi) (1.1)

Page 14: Matrices en R

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 losparámetros aunque no necesariamente en las variables. Pero unaforma de representarlo es como una ecuación lineal.

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

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

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

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

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

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

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

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

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

y = Xβ + ε (1.7)

Se desgloza en:

y =

y1y1yN

X =

1 x11 .... xk11 x12 .... xk2.... .... .... ....1 x2N .... xkN

β =

β1β2...βk

ε =

ε1ε2...εN

(1.8)

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

Page 15: Matrices en R

1 Matrices en R 15

observaciones de las variables independientes y la matrix β es unamatrix columna con los coeficientes que acompaña a cada variableindependiente. 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)−1X ′y (1.9)

Como el lector sabrá y puede profundizar en libros especializa-dos en econometría. Encontrar los coeficientes es el primer paso delMCO. Vayamos a la aplicación.

Tenemos la base de datos tomada del Métodos econométricosdel libro de J. Johnston, encuentra en el llamado a la base “in-dice.importaciones”, en el que Y es el índice de importaciones debienes y servicios del Reino Unido a precios constantes (1948), X2

es el índice del producto bruto de Reino Unido a precios de 1948 yX3 es el cociente de índices de precio de las importaciones y de laproducción general del Reino Unido:

> indice.importacionesyear Y X2 X3

1 1948 100 100 1002 1949 106 104 993 1950 107 106 1104 1951 120 111 1265 1952 110 111 1136 1953 116 115 1037 1954 123 120 1028 1955 133 124 1039 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

Page 16: Matrices en R

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)−1X ′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>

Page 17: Matrices en R

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 sacamosla 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]

Page 18: Matrices en R

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− ε′ε

y′y(1.13)

R2 =β′X ′Xβ

y′y(1.14)

> ((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>

R2 =1− ε′ε/(N − k)

y′y/(N − 1)(1.15)

> ((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

F =R2/(k − 1)

(1−R2)/(N − k)(1.16)

> 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

Page 19: Matrices en R

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.