U1E1

Juan Valenzuela

14/10/2020

Primer evaluacion de estado de la materia de probabilidad y estadistica para ingeniería de software

Caso de estudio 1: Acuacultura

Se tienen 12 semanas de datos de 12 estanques en los cuales a partir de la semana numero 2 se empiezan a pesar los camarones en crecimiento, tambien se cuantifica su nivel de comida.

En terminos ideales los 12 estanques tendrian que llegar en la semana numero 12 a 12 gramos para poder entonces realizar la cosecha, pero unicamente 3 de los 12 estanques llegaron a ese peso.

¿Por que esto es un problema?

Dado que se tendra que invertir una semana o mas en insumos para poder llegar al peso idea, y esto supone una perdida de dinero

  • Preguntas a responder
  1. Haga un planetamiento del problema a resolver con estadística y realice una descripción exploratoria de los datos(MMM, MD, CB) - tidyverse, ggplot.

Descripción Exploratoria.

  • Generé 12 vectores con los datos de peso desde la semana 1 hasta la semana 12, por que en el documento solo venia de la semana 2 en adelante, pero se podia obtener el peso de la semana 1 con la columna ‘PesoAnterior’. Esto para que al momento de generar la descripción exploratoria fuera mas precisa.

Datos

library(readr)
library(DT)
library(prettydoc)
library(modeest)
CAMARONES <- read_csv("CAMARONES.csv")
## Parsed with column specification:
## cols(
##   Estanque = col_character(),
##   EstanqueN = col_double(),
##   Superficie = col_double(),
##   Dias = col_double(),
##   Semana = col_double(),
##   PesoAnterior = col_double(),
##   PesoActual = col_double(),
##   TamanioAlimento = col_double(),
##   AlimentoSemana = col_double(),
##   AlimentoDiario = col_double()
## )
# Generé vectores con un total de 12 elementos en los que  dependiendo de su posicion en el vector es el estanque del cual se extrajeron los datos.

# Ejemplo: pesosem7[3] = es el peso de la semana 7 en el estanque numero 3.

# Peso de los camarones en la primer semana
pesosem1 <- t(CAMARONES$PesoAnterior[1:12])
pesosem1 <- as.vector(pesosem1)

# Peso de los camarones en la segunda semana
pesosem2 <- t(CAMARONES$PesoActual[1:12])
pesosem2 <- as.vector(pesosem2)


# Peso de los camarones en la tercer semana 
pesosem3 <- t(CAMARONES$PesoActual[13:24])
pesosem3 <- as.vector(pesosem3)

# Peso de los camarones en la cuarta semana
pesosem4 <- t(CAMARONES$PesoActual[25:36])
pesosem4 <- as.vector(pesosem4)

# Peso de los camarones en la quinta semana
pesosem5 <- t(CAMARONES$PesoActual[37:48])
pesosem5 <- as.vector(pesosem5)

# Peso de los camarones en la sexta semana
pesosem6 <- t(CAMARONES$PesoActual[49:60])
pesosem6 <- as.vector(pesosem6)

# Peso de los camarones en la septima semana
pesosem7 <- t(CAMARONES$PesoActual[61:72])
pesosem7 <- as.vector(pesosem7)

# Peso de los camarones en la octava semana
pesosem8 <- t(CAMARONES$PesoActual[73:84])
pesosem8 <- as.vector(pesosem8)

# Peso de los camarones en la novena semana
pesosem9 <- t(CAMARONES$PesoActual[85:96])
pesosem9 <- as.vector(pesosem9)

# Peso de los camarones decima semana
pesosem10 <- t(CAMARONES$PesoActual[97:108])
pesosem10 <- as.vector(pesosem10)

# Peso de los camarones decimoprimera semana
pesosem11 <- t(CAMARONES$PesoActual[109:120])
pesosem11 <- as.vector(pesosem11)

# PEso de los camarones decimosegunda semana
pesosem12 <- t(CAMARONES$PesoActual[121:132])
pesosem12 <- as.vector(pesosem12)

# Todos los resultados del pesaje de camarones durante toda la temporada. 
pesos <- c(pesosem1,pesosem2,pesosem3,pesosem4,pesosem5,pesosem6,pesosem7,pesosem8,pesosem9,pesosem10,pesosem11,pesosem12)

Media, Mediana y Moda.

Mediana

median(pesos)
## [1] 4.27

Media

mean(pesos)
## [1] 4.860681

Moda

mfv(pesos)
## [1] 0.62 1.32

Medidas de dispersion

Varianza

var(pesos)
## [1] 12.549

Desviación Estandar

sd(pesos)
## [1] 3.542457

QQ

summary(pesos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.130   1.748   4.270   4.861   7.692  12.260

Gráfico de caja y bigote

boxplot(pesos)

Aclaración: Generé esa estructura de datos de los pesos en la variable ‘pesos’ por que en la tabla no vienen los pesos de la semana 1, sino que vienen en la columna de ‘Peso Anterior’ de la semana 2

  1. ¿ Que tienen de diferentes los estanques que SI llegaron a 12 gramos en la semana 12 con respecto a los que no?

A la vista de la tabla solo 3 estanques llegaron a 12 gramos, pero realizar un analisis de dátos a este nivel es poco eficiente, ya que los numeros asi como estan presentados no logran comunicar información legible para cualquier persona por eso procederé a realizar un analisis de regresión lineal logístico.

3.- ¿Con qué variables se relaciona el aumento de peso de los camarones?

Analisis de Regresión Lineal

regresion <- lm(AlimentoSemana~PesoActual, data = CAMARONES)
summary(regresion)
## 
## Call:
## lm(formula = AlimentoSemana ~ PesoActual, data = CAMARONES)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -526.00  -89.86    9.59   90.77  380.46 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  285.864     24.864   11.50   <2e-16 ***
## PesoActual   139.697      3.963   35.25   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 153.7 on 130 degrees of freedom
## Multiple R-squared:  0.9053, Adjusted R-squared:  0.9046 
## F-statistic:  1243 on 1 and 130 DF,  p-value: < 2.2e-16
plot(CAMARONES$AlimentoSemana, CAMARONES$PesoActual, xlab= "Alimento por semana", ylab="Peso")
abline(regresion)

Residuos

par(mfrow=c(2,2))
plot(regresion)

# Intervalo de confianza

confint(regresion)
##                2.5 %   97.5 %
## (Intercept) 236.6740 335.0544
## PesoActual  131.8572 147.5372

Cuenta con el 97.5% de confianza, lo que quiere decir que se pueden obtener una predicción confiable de resultados

4.- ¿Los camarones que iniciaron con mayor peso(Semana2) son tambien los que terminaron en mayor peso? ¿Cómo varia el crecimiento?

No del todo, por que al final de cuentas muchos de los que iniciaron con pesos un poco mas elevados no fueron los que cumplieron con los 12 gramos en la semana 12, hay muchos factores que determinan el crecimiento de este langostino, mas alla de su peso inicial.

5.- Realice un análisis de regresión logística para determinar que hace que los camarones lleguen a 12 gramos.

Datos

setwd("~/PyE12")
camaronesBinario <- read_csv("camaronesBinario.csv")
## Parsed with column specification:
## cols(
##   PesoActual = col_double(),
##   AlimentoDiario = col_double()
## )

Analisis de Regresión Logístico

reg <- glm(PesoActual ~ AlimentoDiario, data = camaronesBinario, family = binomial)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(reg)
## 
## Call:
## glm(formula = PesoActual ~ AlimentoDiario, family = binomial, 
##     data = camaronesBinario)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -1.29617  -0.00034  -0.00003   0.00000   2.22730  
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)  
## (Intercept)    -44.01300   26.66651  -1.650   0.0988 .
## AlimentoDiario   0.14941    0.09287   1.609   0.1077  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 28.636  on 131  degrees of freedom
## Residual deviance: 12.391  on 130  degrees of freedom
## AIC: 16.391
## 
## Number of Fisher Scoring iterations: 11
  • El modelo de regresión logística, la raíz de las desviaciones representa el papel de los residuos:

\[D_i = \mp \sqrt{-2 [Y_i\log \hat p_i + (1-Y_i)\log(1-\hat p_i)]}, \]

Donde el signo coincide con el signo de \(Y_i - \hat p_i\) en la salida anterior estas cantidades se denominan “deviance residuals”

Representación gráfica de la regresión logística

colores <- NULL
colores[camaronesBinario$PesoActual==0] <- "red"
colores[camaronesBinario$PesoActual==1] <- "green"
datosLog <- data.frame(AlimentoDiario=seq(50,300, 1))
probabilidades <- predict(reg, datosLog, type="response")
plot(camaronesBinario$AlimentoDiario,camaronesBinario$PesoActual,pch=21, bg=colores, xlab="Alimento diario", ylab="Probabilidad de exito")
legend("bottomleft", c("Peso<12", " Peso>12"),pch =21, col=c("green","red") )
lines(datosLog$AlimentoDiario, probabilidades, col="blue", lwd=2)

CONCLUSIÓN

El area de la acuacultura permite aplicar ciencia de datos para obtener mejores resultados por temporadas, asi como tambien aplicar machine learning para saber cuales son las condiciones optimas con las que se debe contar para que la ‘cosecha’ sea una ‘cosecha’ exitosa

En este caso considero que la saturación de comida genera que el camaron se enferme o reduzca el apetito, y por consecuente retarda su crecimiento al final de la temporada.