Sean V y W espacios vectoriales reales. Una transformación lineal es una función que asigna a cada vector un vector único que satisface, para cada u y v en V y escalar:
\[ T(u+v) = Tu + Tv \\ T(\lambda v) = \lambda \, Tv \]
Considerando: \[ F \begin{pmatrix} x_{1} \\ x_{2} \\ x_{3} \end{pmatrix} = \begin{pmatrix} 5x_{1} + 8x_{2} \\ 3x_{1} - 2x_{3} \end{pmatrix} \]
Su reformulación como matriz de transformación quedará expuesta como
a <- as.matrix(rbind(c(5, 8, 0), c(3, 0, -2)))
a
## [,1] [,2] [,3]
## [1,] 5 8 0
## [2,] 3 0 -2
Si partimos del vector (2, 3, 8), la transformación lineal quedaría calculada como:
b <- c(2, 3, 8)
b
## [1] 2 3 8
c <- a %*% b
c
## [,1]
## [1,] 34
## [2,] -10
Aquí hay que destacar los siguientes comandos:
la función c()
crea un vector con todos los
argumentos (numéricos) que lo componen. Para crear el vector (2, 3, 5)
se expresa c(2, 3, 5)
la función rbind()
une vectores apilando cada fila
una encima de la otra.
la función as.matrix()
determina que la clase del
objeto sea una matriz
el operador *
aplicada a una matriz produce una
multiplicación valor por valor, y no una multiplicación
matricial. Para que la operación sea una multiplicación
matricial se debe enmarcar la operación *
entre
%
, de la forma %*%
.
Un fabricante produce 3 artículos diferentes, cada uno de los cuales requiere para su elaboración de 2 materias primas. Los tres productos se denotan por p1, p2 y p3 y las dos materias primas por M1 y M2. En la tabla que se indica a continuación se representa el número de unidades de cada materia prima que se requiere para elaborar una unidad de producto.
p1 | p2 | p3 | |
---|---|---|---|
M1 | 1 | 2 | 1 |
M2 | 3 | 1 | 2 |
\[ \begin{pmatrix} m_{1} \\ m_{2} \end{pmatrix} = \begin{pmatrix} 1 & 2 & 1 \\ 3 & 1 & 2 \end{pmatrix} \cdot \begin{pmatrix} p_{1} \\ p_{2} \\ p_{3} \end{pmatrix} \]
Si se establece que la producción será: 5 productos 1, 12 productos 2 y 17 productos 3, se podrá calcular el vector de materias primas:
mp <- matrix(data = c(1,2,1,3,1,2), ncol = 3, nrow = 2, byrow = TRUE)
mp
## [,1] [,2] [,3]
## [1,] 1 2 1
## [2,] 3 1 2
p <- c(5, 12, 17)
p
## [1] 5 12 17
mp %*% p
## [,1]
## [1,] 46
## [2,] 61
Consideremos ahora la producción de 7, 3 y 2 productos respectivamente. Evaluemos que se cumpla la primera condición de las transformaciones lineales
p_2 <- c(7, 3, 2)
p_2
## [1] 7 3 2
p_3 <- p + p_2
p_3
## [1] 12 15 19
mp %*% p_3
## [,1]
## [1,] 61
## [2,] 89
Este vector debería ser igual a
(mp %*% p)+(mp %*% p_2)
## [,1]
## [1,] 61
## [2,] 89
confirmando que:
\[ T(u+v) = T(u) + T(v) \]
Por otro lado, la segunda condición se podría evaluar de la siguiente
forma, considerando un escalar 3
:
p_4 <- p * 3
mp %*% p_4
## [,1]
## [1,] 138
## [2,] 183
es igual a
3*(mp %*% p)
## [,1]
## [1,] 138
## [2,] 183
confirmando que:
\[ T(\lambda v) = \lambda \, T(v) \]
Considerando la siguiente Matriz Insumo Producto
\[ \begin{array}{l|rrrrr} & \text{Agricultura} & \text{Industria} & \text{Servicios} & \text{Demanda} & \text{Valor Bruto de Producción} \\ \hline \text{Agricultura} & 70 & 150 & 10 & 170 & 400 \\ \text{Industria} & 50 & 300 & 200 & 450 & 1000 \\ \text{Servicios} & 100 & 250 & 100 & 450 & 900 \\ \text{Valor agregado} & 180 & 300 & 590 & & \\ \text{Valor bruto de Producción} & 400 & 1000 & 900 & & 2300 \end{array} \]
Podemos especificar el vector de Valor Bruto de la
Producción VBP
y de Demanda Final
DF
, y la matriz de consumos intermedios
C
:
VBP <- c(400, 1000, 900)
DF <- c(170, 450, 450)
C <- matrix(c(70, 150, 10, 50, 300, 200, 100, 250, 100), ncol = 3, nrow = 3, byrow = TRUE)
Se puede calcular la matriz de coeficientes técnicos dividiendo la
matriz de consumos intermedios por el vector de demanda final,
respetando que a cada columna lo divida su total. Una opción es usar la
función sweep
de la siguiente forma:
ct <- sweep(C, 2, VBP, FUN = "/")
round(ct,2)
## [,1] [,2] [,3]
## [1,] 0.17 0.15 0.01
## [2,] 0.12 0.30 0.22
## [3,] 0.25 0.25 0.11
Ahora, para obtener la matriz de Leontieff, debemos construir una
matriz unitaria del mismo tamaño que la de coeficientes técnicos
ct
, en nuestro caso, de 3 por 3, y luego restarle dicha
matriz. Podemos realizarlo con la función diag()
la cual,
al no definir argumentos, los determina como unitarios.
i <- diag(3)
i
## [,1] [,2] [,3]
## [1,] 1 0 0
## [2,] 0 1 0
## [3,] 0 0 1
leontieff <- i - ct
round(leontieff, 2)
## [,1] [,2] [,3]
## [1,] 0.82 -0.15 -0.01
## [2,] -0.12 0.70 -0.22
## [3,] -0.25 -0.25 0.89
Por último, debemos calcular su inversa para poder utilizar dicha
matriz como coeficientes multiplicadores del gasto autónomo de la
economía y sus efectos directos e indirectos. Para esto usamos la
función solve()
:
inversa <- solve(leontieff)
round(inversa, 2)
## [,1] [,2] [,3]
## [1,] 1.29 0.31 0.09
## [2,] 0.38 1.66 0.42
## [3,] 0.47 0.55 1.27
Aquí, podemos confirmar nuestra aproximación al Valor Bruto de Producción por medio del efecto multiplicador de la Demanda Final por la cual llegamos a:
\[ X = A X + D \\ X = (I-A)^{-1} D \]
inversa %*% DF
## [,1]
## [1,] 400
## [2,] 1000
## [3,] 900
Obteniendo el mismo valor que nuestro valor original de
VBP
. Para evaluar el efecto multiplicador de cada sector,
se puede ver el total de la suma de cada columna, identificando así
cuanto es el efecto multiplicador total de un aumento de la demanda
final de cada sector sobre el total del Valor Bruto de Producción:
round(colSums(inversa), 2)
## [1] 2.13 2.52 1.78
Estos últimos multiplicadores se leen de la siguiente manera: por
cada peso que aumenta la demanda final del sector “Industria”, genera un
aumento total del Valor Bruto de Producción de 2.52
pesos
en todos los sectores. Para ver el detalle por impacto en cada sector,
se puede observar la desagregación de la columna en la matriz inversa de
Leontieff, donde se especifica que el impacto es de 0.31
en
el sector Agropecuario, 1.66
(que se descompone en 1 como
aumento inmediato por el imacto exógeno de la demanda final, y 0.66 por
los encadenamientos del sector) el sector Industrial y 0.55
el sector Servicios.