Ejemplo01: Se desea estudiar el tiempo de vida de una pieza (vida) cortadora de dos tipos, A y B (herramienta), en función de la velocidad del torno (velocidad) en el que está integrada (en revoluciones por segundo). El objetivo del análisis es describir la relación entre el tiempo de vida de la pieza y la velocidad del torno, teniendo en cuenta de qué tipo es la pieza.

# Carga de datos
velocidad <- c(610, 950, 720, 840, 980, 530, 680, 540, 980, 730, 670, 
               770, 880, 1000, 760, 590, 910, 650, 810, 500)
vida <- c(18.73, 14.52, 17.43, 14.54, 13.44, 25.39, 13.34, 22.71, 
          12.68, 19.32, 30.16, 27.09, 25.40, 26.05, 33.49, 35.62, 
          26.07, 36.78, 34.95, 43.67)
herramienta <- gl(2, 10, 20, labels=c("A", "B"))
tiempovida <- data.frame(velocidad, vida, herramienta)
# Gráfico
library(ggplot2)
ggplot(tiempovida,  aes(x = velocidad,  y = vida,  color = herramienta)) + 
  geom_point()

A la vista de la Figura anterior se puede apreciar que el comportamiento del tiempo de vida con respecto a la velocidad disminuye al aumentar esta última, y además ese descensoes distinto en función de la herramienta utilizada. A la misma velocidad la herramienta A proporciona un tiempo de vida inferior que la herramienta B. Para ambas máquinas se aprecia una tendencia lineal bastante clara que deberá ser objeto de estudio. Esto implicaría que nuestro modelo se desdoblaría en dos rectas de regresión lineal simple en función de la herramienta utilizada.

Ejmeplo02: Partridge y Farquhar realizan un experimento para relacionar la vida útil (longevidad) de las moscas de la fruta con su actividad sexual (actividad). La información recogida es la longevidad en días de 125 moscas macho, divididas en cinco grupos bajo diferentes condiciones ambientales para medir su actividad sexual. Asimismo, se recoge la longitud del tórax (thorax) ya que se sospecha que afecta directamente a la longevidad de las moscas.

# Carga de datos
thorax <- c(0.68, 0.68, 0.72, 0.72, 0.76, 0.76, 
            0.76, 0.76, 0.76, 0.8, 0.8, 0.8, 0.84, 0.84, 
            0.84, 0.84, 0.84, 0.84, 0.88, 0.88, 0.92, 0.92, 
            0.92, 0.94, 0.64, 0.7, 0.72, 0.72, 0.72, 0.76, 
            0.78, 0.8, 0.84, 0.84, 0.84, 0.84, 0.84, 0.88, 
            0.88, 0.88, 0.88, 0.88, 0.92, 0.92, 0.92, 0.92, 
            0.92, 0.92, 0.94, 0.64, 0.68, 0.72, 0.76, 0.76, 
            0.8, 0.8, 0.8, 0.82, 0.82, 0.84, 0.84, 0.84, 0.84, 
            0.84, 0.84, 0.88, 0.88, 0.88, 0.88, 0.88, 0.88, 
            0.88, 0.92, 0.92, 0.68, 0.68, 0.72, 0.76, 0.78, 
            0.8, 0.8, 0.8, 0.84,  0.84, 0.84, 0.84, 0.84, 
            0.84, 0.88, 0.88, 0.88, 0.9, 0.9, 0.9, 0.9, 0.9, 
            0.9, 0.92, 0.92, 0.64, 0.64, 0.68, 0.72, 0.72, 
            0.74, 0.76, 0.76, 0.76, 0.78, 0.8, 0.8, 0.82, 
            0.82, 0.84, 0.84, 0.84, 0.84, 0.88, 0.88, 0.88, 
            0.88, 0.88, 0.88, 0.92)
longevidad <- c(37, 49,  46,  63,  39,  46,  56,  63,  65,  
                56,  65,  70,  63,  65, 70,  77,  81,  86,  
                70,  70,  77,  77,  81,  77,  40,  37,  44, 
                47,  47,  47,  68,  47,  54,  61,  71,  75,  
                89,  58,  59,  62, 79,  96,  58,  62,  70,  
                72,  75,  96,  75,  46,  42,  65,  46, 58,  
                42,  48,  58,  50,  80,  63,  65,  70,  70,  
                72,  97,  46, 56,  70,  70,  72,  76,  90,  
                76,  92,  21,  40,  44,  54,  36, 40,  56,  
                60,  48,  53,  60,  60,  65,  68,  60,  81,  
                81,  48, 48,  56,  68,  75,  81,  48,  68,  
                16,  19,  19,  32,  33,  33, 30,  42,  42,  
                33,  26,  30,  40,  54,  34,  34,  47,  47, 
                42, 47,  54,  54,  56,  60,  44)
actividad <- c(rep("G1",24),rep("G2",25),rep("G3",25),rep("G4",25),rep("G5",25))
longevidad <- data.frame(thorax,longevidad,actividad)
# Gráfico
ggplot(longevidad, aes(x = thorax, y = longevidad, color = actividad)) + 
  geom_point() 

Se puede ver como la longevidad aumenta cuando aumenta la longitud del thorax pero ese crecimiento no parece distinto según actividad, dado que las nubes de puntos están bastante mezcladas. En este caso no parece adecuado un modelo lineal para cada grupo de actividad.

Haremos un Análisis Preliminar Tiempo de vida: El objetivo del análisis es describir la relación entre el tiempo de vida de la pieza y la velocidad del torno, teniendo en cuenta de qué tipo es la pieza. Tenemos entonces los posibles modelos que involucran a la velocidad:

# Comenzamos con el modelo más sencillo

# Modelo con una única recta
M0 <- lm(vida ~ velocidad, data = tiempovida)

# M1: modelo con rectas paralelas
M1 <- lm(vida ~ herramienta + velocidad, data = tiempovida)

# M2: modelo con rectas no paralelas
M2 <- lm(vida ~ herramienta + velocidad + herramienta:velocidad, data = tiempovida)

# grid de valores para construir los modelos
#install.packages("tidyverse") 
#install.packages("modelr")
#install.packages("dplyr")    
library(tidyverse) 
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(modelr)
library(dplyr)   
grid <- tiempovida %>% data_grid(herramienta, velocidad) %>% 
  gather_predictions(M0, M1, M2)
# Gráfico
ggplot(tiempovida,aes(velocidad, vida, colour = herramienta)) + 
  geom_point() + 
  geom_line(data = grid, aes(y = pred)) +
  facet_wrap(~ model) +
  labs(x = "Velocidad del torno", y = "Tiempo de vida")

#Diagrama de cajas
ggplot(tiempovida, aes(x = herramienta, y = vida)) + 
  geom_boxplot()

Ejemplo03: Planterasmos los diferentes modelos para los datos de longevidad y los representamos gráficamente.Comenzamos con el modelo más sencillo

# Modelo con una única recta
M0 <- lm(longevidad ~ thorax, data = longevidad)

# M1: modelo con rectas paralelas
M1 <- lm(longevidad ~ actividad + thorax, data = longevidad)

# M2: modelo con rectas no paralelas
M2 <- lm(longevidad ~ actividad + thorax + actividad:thorax, data = longevidad)

# grid de valores para construir los modelos
grid <- longevidad %>% data_grid(actividad, thorax) %>% 
  gather_predictions(M0, M1, M2)
# Gráfico
ggplot(longevidad,aes(thorax, longevidad, colour = actividad)) + 
  geom_point() + 
  geom_line(data = grid, aes(y = pred)) +
  facet_wrap(~ model) +
  labs(x = "Longitud del tórax", y = "Longevidad") 

#Diagrama de cajas
ggplot(longevidad, aes(x = actividad, y = longevidad)) + 
  geom_boxplot()