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
- 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.
Gráfico de caja y bigote
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
- ¿ 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
##
## 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
# Intervalo de confianza
## 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
## Parsed with column specification:
## cols(
## PesoActual = col_double(),
## AlimentoDiario = col_double()
## )
Analisis de Regresión Logístico
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
##
## 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.