Modelado Lineal en R: Guía Práctica para Funciones, Gráficos y Sistemas de Ecuaciones
Continuando con nuestra exploración de R y su utilidad para el análisis numérico, en esta clase profundizaremos en la construcción de modelos lineales y en la representación gráfica de datos. Aprenderemos a utilizar y combinar funciones algebraicas simples, a modificar parámetros de visualización con la función plot() y a resolver ecuaciones y sistemas lineales de manera algebraica y gráfica, sentando las bases para aplicaciones más avanzadas en estadística y ciencia de datos.
OBJETIVOS DE APRENDIZAJE
- Realizar operaciones numéricas en R utilizando variables, constantes y funciones algebraicas básicas.
- Diseñar y personalizar representaciones gráficas de datos numéricos en R mediante la función
plot()y sus principales parámetros. - Analizar y graficar funciones lineales en R, comprendiendo el impacto de sus coeficientes y sus intersecciones.
- Resolver ecuaciones y sistemas lineales en R utilizando métodos algebraicos, gráficos y matriciales, y comparar sus soluciones.
ÍNDICE DE CONTENIDOS
Operaciones Numéricas y Visualización Básica
Funciones Lineales y Gráficas en R
Ecuaciones Lineales y Sistemas de Ecuaciones
Conclusión
Operaciones Numéricas y Visualización Básica
Uso de Variables y Constantes en R
En R, las variables son identificadores simbólicos que nos permiten almacenar datos en memoria para reutilizarlos o transformarlos mediante operaciones matemáticas o lógicas. Las constantes, por su parte, representan valores fijos que no varían a lo largo del programa (por ejemplo, el número π, si lo tratamos como una constante). Utilizar variables y constantes correctamente en R es fundamental para cualquier tipo de análisis, desde operaciones simples hasta modelos estadísticos avanzados.
A continuación, se muestra un ejemplo de cómo definir dos variables (x e y) y realizar operaciones básicas de suma y multiplicación, almacenando sus resultados en nuevas variables.
# Ejemplo de declaración de variables y operaciones # Asignación de valores a las variables x y y x <- 10 # x es una variable que almacena el valor 10 y <- 2.5 # y es una variable que almacena el valor 2.5 # Operaciones básicas resultado_suma <- x + y # suma de los valores de x e y resultado_prod <- x * y # multiplicación de x e y # Impresión de resultados por consola print(resultado_suma) print(resultado_prod)
Explicación paso a paso:
- Asignación de variables (
x <- 10):
En R, el operador<-se usa típicamente para asignar un valor a una variable. Aquí, la variablexse declara y almacena el valor numérico10. - Uso de datos numéricos (
y <- 2.5):
Se crea la variableycon el valor2.5. Este valor es decimal (o de punto flotante), lo cual es útil cuando necesitamos representar fracciones o números con decimales. - Suma de variables (
resultado_suma <- x + y):
Se combina el valor dexyyen una operación de suma y el resultado se guarda enresultado_suma.- El operador
+indica la suma numérica. resultado_sumaconservará el valor12.5(en este caso, 10 + 2.5).
- El operador
- Multiplicación de variables (
resultado_prod <- x * y):
De manera similar,xse multiplica poryy ese producto se asigna aresultado_prod.- El operador
*especifica la multiplicación. resultado_prodtomará el valor25(10 * 2.5).
- El operador
- Impresión de resultados (
print()):
Finalmente, se muestran los valores deresultado_sumayresultado_proden la consola. Esto es útil para verificar el correcto funcionamiento de nuestro código o inspeccionar valores en tiempo real.
Al ejecutar este bloque de código, en la consola de R verás primero el resultado de la suma (12.5), seguido del resultado de la multiplicación (25). Dominar estos conceptos básicos de asignación y operaciones aritméticas en R es esencial para desarrollar scripts más complejos y realizar análisis de datos.
Representaciones Gráficas Simples
En R, la función plot() permite crear gráficos bidimensionales de manera rápida y sencilla. Para generar una representación gráfica básica, necesitas al menos dos conjuntos de datos numéricos: uno para el eje X (valores_x) y otro para el eje Y (valores_y). A continuación, se muestra un ejemplo de cómo trazar puntos en un plano cartesiano y agregar información básica para entender el gráfico.
# Ejemplo de datos sencillos y gráfico base
# Se crean dos vectores con datos numéricos
valores_x <- c(1, 2, 3, 4, 5)
valores_y <- c(2, 4, 6, 8, 10)
# Generación del gráfico
plot(valores_x, valores_y,
main = "Representación Básica con plot()",
xlab = "Eje X",
ylab = "Eje Y")
Explicación paso a paso:
- Creación de vectores numéricos:
valores_xyvalores_yalmacenan listas de valores definidos con la funciónc(). Cada vector contiene valores que se ubicarán en los ejes X e Y, respectivamente. - Llamada a la función
plot():
Al invocarplot(valores_x, valores_y), R genera un diagrama de dispersión por defecto, donde cada punto se corresponde a un par (x, y) de los vectores proporcionados. - Títulos y etiquetas:
main: Define el título principal del gráfico (aparecerá en la parte superior).xlab: Etiqueta del eje X.ylab: Etiqueta del eje Y.
Estos argumentos permiten describir la información representada, haciendo el gráfico más comprensible.
- Visualización resultante:
Al ejecutar este código, se abrirá una ventana gráfica (o se mostrará en el panel de gráficos de tu entorno RStudio) con cinco puntos en el plano. Cada punto corresponde a un par (x,y), por ejemplo, (1,2), (2,4), (3,6), etc. La leyenda “Eje X” se mostrará debajo del eje horizontal y “Eje Y” a la izquierda del eje vertical.
Con estos pasos básicos, podemos trazar relaciones simples entre dos conjuntos de datos numéricos y asignar etiquetas descriptivas a los ejes y al título. Más adelante, podrás personalizar aún más el gráfico, ajustando colores, tipos de símbolos y otras opciones, en función de las necesidades de tu análisis.
Personalizando la Visualización
Para resaltar más información o mejorar la estética de un gráfico en R, podemos utilizar distintos parámetros gráficos. Estos parámetros controlan detalles como el tipo de símbolo (pch), el color (col), la forma en que se dibujan los datos (type) y mucho más.
# Personalizando el gráfico
plot(valores_x, valores_y,
type = "b", # both: dibuja línea y puntos
pch = 16, # tipo de símbolo para los puntos
col = "blue", # color de línea/puntos
main = "Gráfico Personalizado",
xlab = "Observaciones",
ylab = "Valores")
Explicación paso a paso:
- Añadir líneas y puntos (
type = "b"):type = "b"crea un gráfico que muestra tanto los puntos como la línea que los une. Otras opciones comunes son:"p"(solo puntos)"l"(solo línea)"o"(puntos y línea superpuestos)
- Elegir el símbolo de los puntos (
pch):pch = 16indica un símbolo sólido circular. Otros valores numéricos permiten elegir distintos tipos de símbolos, como triángulos, cuadrados, etc.- Por ejemplo,
pch = 1sería un círculo vacío ypch = 19un círculo aún más relleno.
- Definir el color (
col):col = "blue"establece el color de la línea y de los puntos en azul. Puedes reemplazarlo por nombres de colores (ej."red","green") o códigos hexadecimales (ej."#FF5733") para un mayor control.
- Título y etiquetas (
main,xlab,ylab):main = "Gráfico Personalizado"define el título superior del gráfico, lo que da contexto al contenido mostrado.xlab = "Observaciones"yylab = "Valores"asignan etiquetas a los ejes para identificar claramente qué representan los datos.
Con estos cambios, se obtiene una representación visual más descriptiva y atractiva. Ajustar pch, type, y col te permite diferenciar categorías, resaltar tendencias o presentar el gráfico de forma más clara. A medida que el volumen de datos aumente o que busques comunicar información específica, estos parámetros resultan esenciales para transmitir tus resultados de manera efectiva.
Funciones Lineales y Gráficas en R
Qué es una Función Lineal?
Una función lineal es una relación matemática que puede escribirse en la forma general y = m x + b, donde:
- m (pendiente): Indica la inclinación de la recta. Un valor positivo implica que la función crece a medida que aumenta x; un valor negativo significa que la función decrece.
- b (intersección): Corresponde al valor de y cuando x = 0. Es el punto donde la recta corta el eje y.
En diversas áreas (economía, física, estadística), las funciones lineales describen relaciones proporcionales simples. Por ejemplo, en economía, el costo total de un producto puede modelarse como una función lineal del número de unidades producidas.
2.2 Representación de Funciones Lineales con plot()
Para visualizar una función lineal, primero generamos un rango de valores para x, calculamos los valores correspondientes de y, y luego utilizamos plot() para trazar la curva (en este caso, una línea recta).
# Generar valores para x
x_vals <- seq(-10, 10, by = 0.5)
# Definir la pendiente y la intersección
m <- 2 # pendiente
b <- 1 # intersección
# Calcular los valores de y aplicando y = m*x + b
y_vals <- m * x_vals + b
# Graficar la función lineal
plot(x_vals, y_vals,
type = "l", # 'l' para mostrar una línea continua
main = "Función Lineal: y = mx + b",
xlab = "Eje X",
ylab = "Eje Y")
Explicación paso a paso:
- Generar el rango de x:
seq(-10, 10, by = 0.5)crea una secuencia de valores desde -10 hasta 10, espaciados en 0.5. Esto nos da puntos suficientes para ver cómo se comporta la línea a lo largo de ese intervalo. - Definir la pendiente (m) y la intersección (b):
m = 2establece la inclinación de la recta. A mayor pendiente, más empinada será la línea.b = 1determina el valor donde la línea corta el eje y (cuando x = 0).
- Calcular y:
Cada valor de x se multiplica pormy se le sumab. Esto produce un vectory_valsque, punto por punto, representa la ecuacióny = m*x + b. - Graficar con
plot():type = "l"indica que se dibujará una línea que conecta todos los puntos (en lugar de puntos separados).main,xlabyylabañaden contexto al gráfico: un título y etiquetas para los ejes.
El resultado es una línea recta que se extiende desde x = -10 hasta x = 10, mostrando cómo varía y en función de x.
Este método es aplicable a cualquier función que podamos describir algebraicamente. Ajustando los valores de la secuencia x_vals y los parámetros m y b, podemos trazar rectas con diferente pendiente y diferentes cortes en el eje y, facilitando el análisis visual de relaciones lineales.
Comparación de Distintas Pendientes e Intersecciones
Para visualizar cómo las variaciones en la pendiente (m) y la intersección (b) afectan la posición de una recta, podemos superponer varias funciones lineales en un mismo gráfico. En el siguiente ejemplo, además de graficar tres líneas de forma simultánea, ajustamos manualmente el rango de los ejes (xlim y ylim) para centrarnos en el intervalo de interés (-5 a 5).
# Comparación de varias funciones lineales
plot(x_vals, (1.5*x_vals + 0), type = "l", col = "red",
xlim = c(-5, 5), # Rango del eje X
ylim = c(-5, 5), # Rango del eje Y
main = "Comparación de Pendientes",
xlab = "Eje X", ylab = "Valores de Y")
lines(x_vals, (2*x_vals + 1), col = "blue")
lines(x_vals, (0.5*x_vals - 2), col = "green")
legend("bottomright",
legend = c("m=1.5, b=0", "m=2, b=1", "m=0.5, b=-2"),
col = c("red","blue","green"), lty = 1)
Explicación paso a paso:
- Gráfico base con la primera función (m=1.5, b=0):
plot(...)inicializa la ventana gráfica con una línea roja (col = "red") que representa la ecuacióny = 1.5*x.- Los parámetros
xlim = c(-5,5)yylim = c(-5,5)limitan la vista del gráfico para centrarnos en la región entre -5 y 5 en ambos ejes. type = "l"indica que queremos dibujar una línea continua a lo largo de esos puntos.
- Segunda función (m=2, b=1):
- Con
lines(...), agregamos una línea azul para la ecuacióny = 2*x + 1, superponiéndola al gráfico existente. - Esta recta tiene una pendiente más pronunciada y un intercepto en 1, lo que se refleja en una línea que se eleva más rápidamente y corta el eje Y por encima de cero.
- Con
- Tercera función (m=0.5, b=-2):
- La tercera recta, en verde, corresponde a la ecuación
y = 0.5*x - 2. Presenta una pendiente más suave (0.5) y una intersección negativa con el eje Y (-2). - La recta se dibuja nuevamente con
lines(), aprovechando el mismo rango de ejes definido inicialmente.
- La tercera recta, en verde, corresponde a la ecuación
- Incorporación de la leyenda (
legend()):- Situada en la parte inferior derecha (
"bottomright"), incluye la descripción de cada línea junto a su color y ecuación respectiva. - El argumento
lty = 1indica que todas las líneas serán continuas; los colores se corresponden con el orden de las funciones (red,blue,green).
- Situada en la parte inferior derecha (
Con este enfoque, podemos observar y comparar claramente las diferencias entre las tres funciones lineales, analizando cómo la pendiente (m) y la intersección (b) influyen en la posición y la inclinación de las rectas dentro de un mismo rango de valores en el eje X e Y.
Aplicaciones en Datos del Mundo Real
Las funciones lineales son especialmente útiles para modelar relaciones simples en áreas como economía, negocios y ciencias naturales. Por ejemplo, podemos asumir que el costo total de producir un bien aumenta de manera proporcional a la cantidad de unidades fabricadas (pendiente) más un costo fijo inicial (intersección con el eje y). A continuación, se presenta un caso práctico que ilustra cómo emplear una función lineal para estimar costos de producción.
Ejemplo: Modelo de Costo de Producción
- Definir parámetros del modelo:
Asumimos un costo fijo (por ejemplo, costos de alquiler o maquinaria) y un costo variable por unidad producida (materia prima o mano de obra directa). Se corresponden a b y m, respectivamente, en la fórmulay = m*x + b. - Elegir un rango de producción (x):
Podemos crear un conjunto de valores que reflejen diferentes niveles de producción (por ejemplo, de 0 a 100 unidades). - Calcular el costo total (y):
Para cada nivel de producción x, el costo total se obtiene al sumar el costo fijo y la multiplicación del costo variable por la cantidad producida. - Visualizar la relación:
Trazamos un gráfico que muestre cómo el costo total (eje y) varía en función de la cantidad producida (eje x). Si el modelo es adecuado, observaremos una línea recta ascendente cuyo punto de arranque en el eje y corresponde al costo fijo inicial.
Esta representación visual facilita la toma de decisiones al permitir estimar rápidamente el costo en función de la producción. Además, el mismo razonamiento puede aplicarse para modelar ingresos, salarios con incentivos o cualquier proceso que pueda describirse mediante cambios proporcionales y un punto de partida inicial.
Ejemplo de código (opcional):
# Parámetros del modelo
costo_fijo <- 1000 # b
costo_variable <- 25 # m
# Rango de producción (x)
unidades <- seq(0, 100, by = 10)
# Cálculo del costo total: y = m*x + b
costo_total <- costo_variable * unidades + costo_fijo
# Visualización
plot(unidades, costo_total,
type = "o", # puntos conectados por línea
col = "blue",
main = "Modelo de Costo de Producción",
xlab = "Unidades Producidas",
ylab = "Costo Total")
En este ejemplo, la gráfica resultante mostrará cómo el costo total crece de manera lineal a medida que aumentan las unidades producidas, partiendo de un costo base cuando la producción es cero.
Ecuaciones Lineales y Sistemas de Ecuaciones
Ecuaciones de Una Incógnita
En muchas situaciones prácticas, nos enfrentamos a problemas que pueden expresarse con una ecuación de la forma ax + b = 0.
Si despejamos x, obtenemos:
x = -b / a
donde a y b son parámetros numéricos conocidos, y x es el valor desconocido que se pretende hallar. A continuación, presentamos un ejemplo de cómo resolver una ecuación de una incógnita en R.
# Ejemplo de resolución de ecuación lineal en R # ax + b = 0 -> x = -b/a a <- 2 b <- -4 x_sol <- -b/a x_sol
Explicación paso a paso:
- Definir la ecuación:
Se adopta la forma ax + b = 0. En este ejemplo,a = 2yb = -4. - Despejar x:
Usamos la regla general x = -b/a, que se obtiene trasladando b y dividiendo por a. - Implementar en R:
La asignaciónx_sol <- -b/acalcula el valor numérico de x. - Mostrar resultado:
Conx_soloprint(x_sol)podemos ver el valor de x en la consola.
Este procedimiento es un punto de partida para ecuaciones más complejas y nos permite comprobar rápidamente soluciones de forma programática.
Resolviendo Sistemas de 2 variables
Para problemas con varias incógnitas, podemos usar sistemas de ecuaciones lineales. Un sistema de dos ecuaciones con dos incógnitas (x y y) puede escribirse en notación matricial como:
A · X = B
donde A es la matriz de coeficientes, X el vector de variables y B el vector de términos independientes. En R, el método más directo para resolverlo es mediante la función solve().
# Ejemplo de sistema con 2 variables
# 2x + 3y = 6
# x + y = 2
A <- matrix(c(2, 1,
3, 1), nrow=2)
B <- c(6, 2)
sol_sistema <- solve(A, B)
sol_sistema
Explicación paso a paso:
- Representación matricial:
Aguarda los coeficientes de cada variable.Bcontiene los valores del lado derecho de las ecuaciones.
- Llamada a solve(A, B):
R aplica algoritmos de álgebra lineal para hallar las variables x y y. El resultado es un vector con la solución. - Inspeccionar la solución:
Mostramos consol_sistemalos valores numéricos que satisfacen el sistema. Cada valor en la salida corresponde a una de las incógnitas.
Este método se extiende a un mayor número de variables, siempre que la matriz A sea cuadrada y no sea singular (es decir, que tenga determinante distinto de cero).
Resolviendo Sistemas con 3 y 4 Variables
La misma lógica que aplicamos para los sistemas de 2 variables se extiende a dimensiones superiores, siempre que la matriz de coeficientes sea cuadrada (es decir, que tenga el mismo número de ecuaciones y variables) y no sea singular.
Sistema de 3 variables
Considera el siguiente sistema de tres ecuaciones con tres incógnitas (x, y, z):
1) x + 2y + 3z = 6
2) 2x - y + z = 1
3) -x + 3y + 2z = 7
Podemos representarlo en notación matricial como A · X = B, donde:
- A es la matriz 3×3 que contiene los coeficientes de x, y y z.
- X es el vector (x, y, z).
- B es el vector de términos independientes (6, 1, 7).
# Sistema de 3 variables:
# x + 2y + 3z = 6
# 2x - y + z = 1
# -x + 3y + 2z = 7
A_3 <- matrix(c( 1, 2, 3,
2, -1, 1,
-1, 3, 2),
nrow = 3)
B_3 <- c(6, 1, 7)
sol_3 <- solve(A_3, B_3)
sol_3
Al ejecutar solve(A_3, B_3), R devuelve un vector con los valores de x, y y z que satisfacen simultáneamente el sistema.
Sistema de 4 variables
Del mismo modo, para un sistema de cuatro variables (w, x, y, z), necesitamos cuatro ecuaciones independientes para poder resolverlo. Imaginemos el siguiente conjunto:
1) w + 2x + 3y + z = 7
2) 2w - x + y + 2z = 5
3) -w + 3x + 2y + 4z = 12
4) w - x + y + z = 2
# Sistema de 4 variables:
# w + 2x + 3y + z = 7
# 2w - x + y + 2z = 5
# -w + 3x + 2y + 4z= 12
# w - x + y + z = 2
A_4 <- matrix(c( 1, 2, 3, 1,
2, -1, 1, 2,
-1, 3, 2, 4,
1, -1, 1, 1),
nrow = 4)
B_4 <- c(7, 5, 12, 2)
sol_4 <- solve(A_4, B_4)
sol_4
Esta vez, la matriz A_4 es de tamaño 4×4 y el vector B_4 de tamaño 4×1. Una vez más, la función solve() calcula el conjunto de valores de (w, x, y, z) que satisfacen el sistema.
En resumen, para resolver sistemas con más variables (3, 4 o incluso más), basta con construir la matriz de coeficientes A y el vector B de forma coherente, y luego aplicar solve(A, B). Este proceso se vuelve particularmente poderoso en contextos de alto volumen de ecuaciones, como en optimización o simulaciones complejas.
Representación y Comparación de Métodos
En algunos casos, es útil representar gráficamente el sistema de ecuaciones para visualizar la intersección de líneas (o planos en dimensiones superiores). Así, podemos corroborar el resultado algebraico y contrastarlo con métodos matriciales:
- Método Algebraico: Consiste en manipular las ecuaciones hasta encontrar valores para las incógnitas (por ejemplo, igualación, sustitución o reducción).
- Método Gráfico: Trazar cada ecuación en un mismo plano; la solución es el punto o los puntos donde se intersectan.
- Método Matricial: Emplea la notación A·X = B y la función
solve()en R para calcular la solución de forma directa a partir del determinante y la inversa de A (cuando existe).
Gracias a estos distintos métodos de resolución, podemos comprobar la consistencia de nuestras soluciones e interpretar visualmente el problema, lo que adquiere gran relevancia en áreas como el análisis de equilibrio en economía, la resolución de circuitos eléctricos o la determinación de intersecciones en geometría.
Conclusión
A lo largo de esta clase, hemos visto desde las operaciones numéricas básicas y la representación de datos con plot(), hasta la construcción de funciones lineales y la resolución de ecuaciones y sistemas en R. Estos fundamentos permiten afrontar con seguridad problemas de análisis de datos, modelado matemático y validación de hipótesis, sentando así las bases para un manejo más profundo de técnicas estadísticas y de ciencia de datos.
