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.
# 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.
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
# 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")
| 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) |
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
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
Libreria a utilizar son: ggplot2.
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. |
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")
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()
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()`).
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.
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.
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.
# 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'
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.
# 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
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.