P. 1
Matrices en R

Matrices en R

|Views: 1.230|Likes:
Publicado porDeybi Morales León
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
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

More info:

Published by: Deybi Morales León on Sep 16, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/23/2015

pdf

text

original

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(x
1
, x
2
, x
3
, x
i
) (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.
y
i
= β
0

1
x
1
+ β
2
x + β
3
x + β
i
x
i
(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 u
i
.
y
N
= β
0

1
x
1N
+ β
2
x
2N
+ β
3
x
3N
+ β
k
x
kN
+ ε
N
(1.3)
Esto es representación de la ordenación de observaciones ubican-
dolas según la ecuación 2.3.
y
1
= β
0

1
x
11
+ β
2
x
21
+ β
3
x
31
+ ..... + β
k
x
k1
+ ε
1
(1.4)
y
2
= β
0

1
x
12
+ β
2
x
22
+ β
3
x
32
+ ..... + β
k
x
k2
+ ε
2
(1.5)
− − − − − − − − − − − − − − − − − − − − − − − − − − − − −−−
y
N
= β
0

1
x
1N
+ β
2
x
2N
+ β
3
x
3N
+ ..... + β
k
x
kN
+ ε
N
(1.6)
La ecuación 2.3 se compondrá de forma matricial como
y = Xβ + ε (1.7)
Se desgloza en:
y =


y
1
y
1
y
N


X =




1 x
11
.... x
k1
1 x
12
.... x
k2
.... .... .... ....
1 x
2N
.... x
kN




β =




β
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
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), X
2
es el índice del producto bruto de Reino Unido a precios de 1948 y
X
3
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
s
2
=
ˆ
ε

ˆ ε
N − k
V ar(
ˆ
β) =s
2
(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 R
2
R
2
=1 −
ˆ
ε

ˆ ε
y

y
(1.13)
R
2
=
ˆ
β

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
>
¯
R
2
=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 =
R
2
/(k − 1)
(1 − R
2
)/(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
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.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->