Modelado Lineal en R: Guía Práctica para Funciones, Gráficos y Sistemas de Ecuaciones

Modelado Lineal en R: Guía Práctica para Funciones, Gráficos y Sistemas de Ecuaciones

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:

  1. Asignación de variables (x <- 10):
    En R, el operador <- se usa típicamente para asignar un valor a una variable. Aquí, la variable x se declara y almacena el valor numérico 10.
  2. Uso de datos numéricos (y <- 2.5):
    Se crea la variable y con el valor 2.5. Este valor es decimal (o de punto flotante), lo cual es útil cuando necesitamos representar fracciones o números con decimales.
  3. Suma de variables (resultado_suma <- x + y):
    Se combina el valor de x y y en una operación de suma y el resultado se guarda en resultado_suma.

    • El operador + indica la suma numérica.
    • resultado_suma conservará el valor 12.5 (en este caso, 10 + 2.5).
  4. Multiplicación de variables (resultado_prod <- x * y):
    De manera similar, x se multiplica por y y ese producto se asigna a resultado_prod.

    • El operador * especifica la multiplicación.
    • resultado_prod tomará el valor 25 (10 * 2.5).
  5. Impresión de resultados (print()):
    Finalmente, se muestran los valores de resultado_suma y resultado_prod en 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:

  1. Creación de vectores numéricos:
    valores_x y valores_y almacenan listas de valores definidos con la función c(). Cada vector contiene valores que se ubicarán en los ejes X e Y, respectivamente.
  2. Llamada a la función plot():
    Al invocar plot(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.
  3. 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.

  4. 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:

  1. 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)
  2. Elegir el símbolo de los puntos (pch):

    • pch = 16 indica 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 = 1 sería un círculo vacío y pch = 19 un círculo aún más relleno.
  3. 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.
  4. 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" y ylab = "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:

  1. 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.
  2. Definir la pendiente (m) y la intersección (b):

    • m = 2 establece la inclinación de la recta. A mayor pendiente, más empinada será la línea.
    • b = 1 determina el valor donde la línea corta el eje y (cuando x = 0).
  3. Calcular y:
    Cada valor de x se multiplica por m y se le suma b. Esto produce un vector y_vals que, punto por punto, representa la ecuación y = m*x + b.
  4. Graficar con plot():

    • type = "l" indica que se dibujará una línea que conecta todos los puntos (en lugar de puntos separados).
    • main, xlab y ylab añ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:

  1. 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ón y = 1.5*x.
    • Los parámetros xlim = c(-5,5) y ylim = 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.
  2. Segunda función (m=2, b=1):

    • Con lines(...), agregamos una línea azul para la ecuación y = 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.
  3. 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.
  4. 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 = 1 indica que todas las líneas serán continuas; los colores se corresponden con el orden de las funciones (red, blue, green).

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

  1. 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órmula y = m*x + b.
  2. 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).
  3. 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.
  4. 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:

  1. Definir la ecuación:
    Se adopta la forma ax + b = 0. En este ejemplo, a = 2 y b = -4.
  2. Despejar x:
    Usamos la regla general x = -b/a, que se obtiene trasladando b y dividiendo por a.
  3. Implementar en R:
    La asignación x_sol <- -b/a calcula el valor numérico de x.
  4. Mostrar resultado:
    Con x_sol o print(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:

  1. Representación matricial:

    • A guarda los coeficientes de cada variable.
    • B contiene los valores del lado derecho de las ecuaciones.
  2. 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.
  3. Inspeccionar la solución:
    Mostramos con sol_sistema los 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.

Vistas: 261

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *