CasoCamarones

R.Pacheco

2/23/2022

Regresión lineal múltiple

library(pacman)
p_load("prettydoc", "DT", "xfun", "dplyr", "psych", "GGally", "ggplot2","readr")

La regresión lineal múltiple permite generar un modelo lineal en el que el valor de la variable dependiente o respuesta (Y) se determina a partir de un conjunto de variables independientes llamadas predictores X1X2X3.

Los modelos de regresión múltiple pueden emplearse para predecir el valor de la variable dependiente o para evaluar la influencia que tienen los predictores sobre ella (esto último se debe que analizar con cautela para no malinterpretar causa-efecto).

Los modelos lineales múltiples siguen la siguiente ecuación:

\[ Y_{i}=(\beta_{0}+\beta_{1}X_{1i}+\beta_{2}X_{2i}+\cdots+\beta_{n}X_{ni})+e_{i} \]

  • $ _{0} $ : es la ordenada en el origen, el valor de la variable dependiente Y cuando todos los predictores son cero.

  • $ _{i} $ : es el efecto promedio que tiene el incremento en una unidad de la variable predictora Xi sobre la variable dependiente Y manteniéndose constantes el resto de variables. Se conocen como coeficientes parciales de regresión.

  • $ e_{i} $ : es el residuo o error, la diferencia entre el valor observado y el estimado por el modelo.

Condiciones para la regresión lineal múltiple

Los modelos de correlación lineal múltiple requieren de las mismas condiciones que los modelos lineales simples más otras adicionales.

Parsimonia

Este término hace referencia a que el mejor modelo es aquel capaz de explicar con mayor precisión la variabilidad observada en la variable respuesta empleando el menor número de predictores, por lo tanto, con menos asunciones.

Tamaño de la muestra

No se trata de una condición de por sí pero, si no se dispone de suficientes observaciones, predictores que no son realmente influyentes podrían parecerlo. En el libro Hanbook of biological statistics recomiendan que el número de observaciones sea como mínimo entre 10 y 20 veces el número de predictores del modelo.

La gran mayoría de condiciones se verifican utilizando los residuos, por lo tanto, se suele generar primero el modelo y posteriormente validar las condiciones. De hecho, el ajuste de un modelo debe verse como un proceso iterativo en el que se ajusta el modelo, se evalúan sus residuos y se mejora. Así hasta llegar a un modelo óptimo.

Caso de estudio. Granja de Camarones

Las granjas acuícolas para la producción del crustáceo se han convertido en la industria de más rápido crecimiento dentro del sector primario y casi triplican ya a los volúmenes obtenidos por los métodos pesca en estero y en alta mar. Sinaloa y Sonora despuntan como las entidades de mayor desarrollo de camarón en cautiverio con 140 mil toneladas producidas en 2018. Un volumen de producción superior a las 70 mil toneladas de camarón de granja con valor superior a los 6 mil 600 millones de pesos es lo que se espera lograr a finales de 2020, posicionando a Sonora al frente a nivel nacional, además de la generación de empleos.

Por lo tanto, realizaremos un estudio para generar un modelo que permita predecir la produccion de una granja de camarones en función de diferentes variables. Se dispone de información sobre 12 estanques:

  • Numero de estanque
  • Superficie
  • Dias activo
  • Semanas activo
  • Peso anterior
  • Peso actual
  • Tamaño del alimento
  • Alimentos por semana
  • Y Alimentos por dia

Imagen representativa de camarones

Datos

library(readr)
camarones <- read_csv("CasoCamarones.csv")
## Rows: 12 Columns: 6
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (1): Estanque
## dbl (5): Superficie, PesoActual, AlimentoSemana, AlimentoDiario, Vendido
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
datosCamarones <- as.data.frame(camarones)
datatable(datosCamarones)
  • El monitoreo del crecimiento de los camarones de cada estanque fue durante 12 semanas, un requisito obligatorio para considerar que los camarones están en condiciones para ser vendidos es que pesen un mínimo de 12 gramos cada uno, este peso está representado en la tabla con la variable “PesoActual”, el cual indica el peso promedio de los camarones del estanque en relación a las a la comida que se les dio durante las 12 semanas, las cuales son representadas con las variables “AlimentoSemana” y “AlimentoDiario”. La variable “Vendido” estará marcada con un 1 si es que se cumplió con esta condición, de lo contrario estará marcada con un 0.
tabla <- table(camarones$Vendido)
tabla
## 
## 0 1 
## 9 3
  • Solo 3 de los 12 estanques cumplieron con este requisito.

Grafica Ilustrada

colores <- NULL 
colores[camarones$Vendido == 1] <- "green"
colores[camarones$Vendido == 0] <- "red"
plot(camarones$PesoActual, camarones$Exito, pch=21, bg=colores,
     xlab="Peso Camaron", ylab="Probabilidades de venta")
## Warning: Unknown or uninitialised column: `Exito`.
legend('bottomleft', c('Vendido', 'No vendido'), pch = 21, col = c('green', 'red'))

Regresión logística

La variable AlimentoDiario sera implementada dentro del modelo de regresion logistica con el fin de determinar la hipotesis de si el venta es posible.

regresion <- glm(Vendido ~ AlimentoDiario, data = camarones, family=binomial)
summary(regresion)
## 
## Call:
## glm(formula = Vendido ~ AlimentoDiario, family = binomial, data = camarones)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -1.28965  -0.68424  -0.39705  -0.00008   2.00729  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)
## (Intercept)    -35.1229    25.8776  -1.357    0.175
## AlimentoDiario   0.1194     0.0901   1.325    0.185
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 13.496  on 11  degrees of freedom
## Residual deviance: 11.311  on 10  degrees of freedom
## AIC: 15.311
## 
## Number of Fisher Scoring iterations: 5

Predicción con el modelo ajustado

Calculo de la probabilidad de fallo estimadas ediante la funcion logistica. utilizaremos un vector de alimentos entre 2750 y 290 kilos.

pred_nueva <- data.frame(AlimentoDiario = seq(270, 290, 1))
pred_nueva
##    AlimentoDiario
## 1             270
## 2             271
## 3             272
## 4             273
## 5             274
## 6             275
## 7             276
## 8             277
## 9             278
## 10            279
## 11            280
## 12            281
## 13            282
## 14            283
## 15            284
## 16            285
## 17            286
## 18            287
## 19            288
## 20            289
## 21            290

Nuevas probabilidades

new_prob <- predict(regresion, pred_nueva, type="response")
new_prob
##          1          2          3          4          5          6          7 
## 0.05242200 0.05867808 0.06562907 0.07333931 0.08187600 0.09130844 0.10170717 
##          8          9         10         11         12         13         14 
## 0.11314270 0.12568410 0.13939716 0.15434229 0.17057215 0.18812899 0.20704184 
##         15         16         17         18         19         20         21 
## 0.22732366 0.24896848 0.27194887 0.29621381 0.32168718 0.34826715 0.37582650
  • Grafica representativa de probabilidad:
colores[camarones$Vendido == 1] <- "green"
colores[camarones$Vendido == 0] <- "red"
plot(camarones$AlimentoDiario, camarones$Vendido, pch=21, bg=colores,
     xlab="Cantidad de alimento diario", ylab="Probabilidades de venta")
legend('bottomleft', c('Vendido', 'No vendido'), pch = 21, col = c('green', 'red'))
lines(pred_nueva$AlimentoDiario, new_prob, col="blue", lwd=1)

Descarga este código

xfun::embed_file("CasoCamarones.Rmd")

Download CasoCamarones.Rmd