1 Vectores y Matrices

1.1 Introduccion

Hoy en día, en la estadística es muy fundamental usar las matrices y los vectores, según denominado por la “programación”, en inglés se le denomia el nombre array, a esto se le denomina una una zona de almacenamiento continuo que contiene series de elementos del mismo tipo, los elementos de la matriz. Para aterrizar bien, los vectores son una colección de datos que esta ordenada de datos.

1.1.1 Como crear vectores

# Crear un vector numérico
vector_numerico <- c(1, 2, 3, 4, 5, 100, 200, 300)
vector_numerico
## [1]   1   2   3   4   5 100 200 300
# Crear un vector de caracteres
vector_caracter <- c("a", "b", "c", "d", "e")
vector_caracter
## [1] "a" "b" "c" "d" "e"
# Secuencias y repeticiones
vector_seq <- seq(1, 10, by = 2)  # Secuencia del 1 al 10 con secuencia de 2 en 2
vector_seq
## [1] 1 3 5 7 9
vector_rep <- rep(3, times = 5)    # Repetir el número 3 cinco veces
vector_rep
## [1] 3 3 3 3 3
# Acceder a elementos de un vector
vector_numerico[2]  # Segundo elemento
## [1] 2
vector_numerico[c(1, 3)]  # Primer y tercer elemento
## [1] 1 3
# En este caso nos referimos al primer ejercicio.

1.1.2 Como crear matrices

library(knitr)
## Warning: package 'knitr' was built under R version 4.4.2
# Crear una matriz de 3x3
matriz <- matrix(1:9, nrow = 3, ncol = 3)
matriz
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
# Observar que clase tiene nuestros datos
class(matriz)
## [1] "matrix" "array"
#  Observar la dimension que tiene nuestra matriz
dim(matriz)
## [1] 3 3
# Acceder a elementos de la matriz
matriz[1, 2]  # Fila 1, columna 2
## [1] 4
matriz[ ,2]   # Segunda columna completa
## [1] 4 5 6
matriz[2, ]   # Segunda fila completa
## [1] 2 5 8
# Operaciones con matrices
matriz_transpuesta <- t(matriz)  # Transponer la matriz
matriz_transpuesta
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
matriz_suma <- matriz + 2        # Sumar 2 a todos los elementos
matriz_suma
##      [,1] [,2] [,3]
## [1,]    3    6    9
## [2,]    4    7   10
## [3,]    5    8   11
matriz_producto <- matriz %*% matriz_transpuesta  # Producto
matriz_producto
##      [,1] [,2] [,3]
## [1,]   66   78   90
## [2,]   78   93  108
## [3,]   90  108  126
matriz_determinante <- det(matriz) #Determinante
matriz_determinante
## [1] 0

1.2 Operaciones de Álgebra Lineal en R

1.2.1 Tabla de Operaciones

# Crear la tabla de operaciones
operaciones <- data.frame(
  OPERACIÓN = c("Transpuesta", "Diagonal", "Traza", "Determinante", "Inversa",
                "Descomposición QR", "Rango", "Descomposición de Cholesky", "Varianza"),
  SINTAXIS = c("t(A)", "diag(A)", "sum(diag(A))", "det(A)", "solve(A)",
               "qr(A)", "qr(A)$rank", "chol(A)", "var(A)")
)

# Mostrar tabla en formato bonito con knitr
kable(operaciones, caption = "Tabla de Operaciones de Álgebra Lineal en R o en RStudio")
Tabla de Operaciones de Álgebra Lineal en R o en RStudio
OPERACIÓN SINTAXIS
Transpuesta t(A)
Diagonal diag(A)
Traza sum(diag(A))
Determinante det(A)
Inversa solve(A)
Descomposición QR qr(A)
Rango qr(A)$rank
Descomposición de Cholesky chol(A)
Varianza var(A)

1.3 Ejemplos

1.3.1 Ejercicio 1: Producción de una fábrica

Tres tipos de productos (A, B y C) estres plantas diferentes.

Donde cada fila representa una planta y cada columna representa un producto.

La empresa quiere aumentar la producción en 10 unidades por producto en cada planta. ¿Cuál será la nueva matriz de producción?

# Matriz de producción original
M <- matrix(c(50, 30, 20, 40, 25, 35, 30, 45, 50), nrow = 3, byrow = TRUE)

# Matriz con incremento de producción
incremento <- matrix(10, nrow = 3, ncol = 3)

# Nueva matriz de producción
M_nueva <- M + incremento

# Mostrar resultado
M_nueva
##      [,1] [,2] [,3]
## [1,]   60   40   30
## [2,]   50   35   45
## [3,]   40   55   60

1.3.2 Ejercicio 2: Costo total de insumos

Una empresa necesita calcular el costo total de los insumos utilizados en su producción. Tiene la siguiente matriz que muestra la cantidad de tres tipos de insumos usados en dos líneas de producción.

Cada columna representa un insumo, y cada fila representa una línea de producción.

Los costos unitarios de los insumos.

¿Cuál es el costo total de insumos por línea de producción ?

# Matriz de cantidades de insumos
C <- matrix(c(2, 3, 5, 4, 2, 3), nrow = 2, byrow = TRUE)

# Vector de precios unitarios
P <- c(10, 15, 20)

# Cálculo del costo total por línea de producción
costo_total <- C %*% P

# Mostrar resultado
costo_total
##      [,1]
## [1,]  165
## [2,]  130

2 Visualización de datos

Libreria a utilizar son: ggplot2.

2.1 Introducción

La visualización de datos es el proceso de representar información de manera gráfica para que sea más fácil de entender y analizar. En lugar de ver solo números en una tabla, los datos se convierten en gráficos, diagramas o mapas, lo que ayuda a identificar patrones, tendencias y relaciones de forma más rápida e intuitiva.

Librería Descripción
ggplot2 Gráficos personalizados basados en la gramática de gráficos.
graphics Gráficos base de R (plot, hist, boxplot).
lattice Gráficos multivariados de alto nivel.
ggthemes Temas adicionales para ggplot2.
scales Personalización de escalas en ggplot2.
Librería Descripción
plotly Gráficos interactivos en 3D y web.
ggiraph Gráficos interactivos con ggplot2.
highcharter Gráficos tipo Highcharts en R.
Librería Descripción
leaflet Mapas interactivos.
sf Análisis espacial en R.
tmap Mapas temáticos.

2.1.1 Histograma

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
data("mtcars")

ggplot(mtcars, aes(x = hp)) +
  geom_histogram(binwidth = 20, fill = "steelblue", color = "black") +
  labs(title = "Distribución de Caballos de Fuerza", x = "HP", y = "Frecuencia")

2.1.2 Diagrama de dispersión

data("iris")

ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = Species)) +
  geom_point(size = 3) +
  labs(title = "Relación entre Largo y Ancho del Pétalo", x = "Largo del Pétalo", y = "Ancho del Pétalo") +
  theme_minimal()

2.1.3 Gráfico de cajas y alambres (Boxplot)

data("airquality")

ggplot(airquality, aes(x = factor(Month), y = Ozone)) +
  geom_boxplot(fill = "orange", color = "black") +
  labs(title = "Concentración de Ozono por Mes", x = "Mes", y = "Ozono (ppb)") +
  theme_minimal()
## Warning: Removed 37 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

2.1.4 Gráfico de lineas

data("economics")

ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "blue", size = 1) +
  labs(title = "Evolución del Desempleo en EE.UU.", x = "Año", y = "Desempleados") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

2.2 Conclusión

Se tiene que existen más variedad de gráficos estadisticos, como los que son gráficos de barras, gráficos de estrellas, etc. En este capitulo se muestran gráfico en el cual se utilizan más en la estadística hacia empresas, en la salud, en la economia, etc.

3 Regresión lineal y múltiple

3.1 Introducción

La regresión lineal es un método estadístico que se usa para analizar la relación entre dos variables: una dependiente (la que queremos predecir o explicar) y una independiente (la que usamos para hacer la predicción). En términos simples, busca encontrar una línea recta que mejor represente cómo cambia una variable con respecto a la otra.

Por otro lado, la regresión múltiple es una extensión de la regresión lineal, pero con más de una variable independiente. Es decir, en lugar de usar solo un factor para predecir la variable dependiente, se usan varios factores al mismo tiempo. Esto permite modelos más complejos y precisos.

Las áreas o campos se tuilizan en: Economía, Ciencias de la salud, Marketing, Ingeniería, Ciencias sociales.

3.1.1 Regresión lineal

# Cargar los datos
data(mtcars)

# Inspeccionar los datos
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# Ajustar el modelo de regresión lineal
modelo <- lm(mpg ~ wt, data = mtcars)

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

El modelo ajustado es:

mpg =37.2851−5.344 * wt \ Esto significa que: Intersección (𝛽0) = 37.2851: Cuando el peso del vehículo (wt) es 0, el consumo de combustible estimado es de 37.29 millas por galón. (Ojo: en la realidad, no existen autos con peso 0, así que este valor es más bien teórico). Pendiente (β1) = -5.3445: Por cada aumento de 1,000 lbs en el peso del vehículo, el consumo de combustible disminuye en 5.34 millas por galón.

p-valor para el intercepto (< 2e-16) y para wt (1.29e-10): Ambos coeficientes son altamente significativos ( 𝑝< 0.001 p<0.001), lo que significa que hay una relación fuerte entre el peso y el consumo de combustible. Valor t para wt (-9.559): Un valor tan grande en valor absoluto indica que la variable wt es un predictor importante de mpg.

R 2 = 0.7528: El 75.28% de la variabilidad en mpg es explicada por wt. Este es un buen nivel de ajuste.

𝑅2 ajustado = 0.7446: Como es muy similar al 𝑅2, esto confirma que wt es un predictor fuerte.

Error estándar de los residuos = 3.046: En promedio, los valores reales de mpg se desvían en aproximadamente 3.05 unidades del valor predicho por el modelo.

# Instalar ggplot2 si no está instalado
if (!require(ggplot2)) install.packages("ggplot2", dependencies=TRUE)

# Cargar ggplot2
library(ggplot2)

# Gráfico de dispersión con línea de regresión
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "blue") +
  geom_smooth(method = "lm", col = "red") +
  ggtitle("Regresión Lineal: mpg vs. wt") +
  xlab("Peso del vehículo (1000 lbs)") +
  ylab("Millas por galón")
## `geom_smooth()` using formula = 'y ~ x'

3.2 Conclusión

El modelo sugiere una fuerte relación entre el peso del auto y su eficiencia en el consumo de combustible: a mayor peso, menor rendimiento en millas por galón. Además, el modelo es altamente significativo y explica una gran parte de la variabilidad en mpg.

3.2.1 Regresión lineal múltiple

# Cargar datos mtcars
data(mtcars)

# Mostrar las primeras filas
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# Modelo de regresión lineal múltiple
modelo <- lm(mpg ~ cyl + disp + hp + wt, data = mtcars)

# Mostrar resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = mpg ~ cyl + disp + hp + wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0562 -1.4636 -0.4281  1.2854  5.8269 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 40.82854    2.75747  14.807 1.76e-14 ***
## cyl         -1.29332    0.65588  -1.972 0.058947 .  
## disp         0.01160    0.01173   0.989 0.331386    
## hp          -0.02054    0.01215  -1.691 0.102379    
## wt          -3.85390    1.01547  -3.795 0.000759 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.513 on 27 degrees of freedom
## Multiple R-squared:  0.8486, Adjusted R-squared:  0.8262 
## F-statistic: 37.84 on 4 and 27 DF,  p-value: 1.061e-10

Intercept: Valor del consumo de combustible cuando todas las variables son 0.

cyl (cilindros): Cada cilindro adicional disminuye el consumo de combustible en -1.2260 mpg.

disp (desplazamiento del motor): No es tan significativo en este modelo.

hp (caballos de fuerza): Tiene un impacto negativo, pero no es significativo.

wt (peso del vehículo): Es significativo y reduce el rendimiento del combustible.

# Diagnóstico del modelo
par(mfrow=c(2,2))
plot(modelo)

# Crear un nuevo conjunto de datos
nuevos_datos <- data.frame(cyl = c(4, 6), disp = c(150, 250), hp = c(100, 180), wt = c(2.5, 3.2))

# Hacer predicciones
predict(modelo, newdata = nuevos_datos)
##        1        2 
## 25.70655 19.93903

3.3 Conclusión

El modelo muestra que wt (peso) y cyl (cilindros) son las variables más influyentes.

El R² ajustado es 0.7995, lo que indica que el modelo explica el 79.95% de la variabilidad en el consumo de combustible.

Se recomienda revisar los supuestos para validar la calidad del modelo.