Primer evalación de estado de la materiade probabilidad y estadística 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 número 2 se empiezan a pesar los camarones en crecimiento, también se cuantifica su nivel de comida.
En términos ideales los 12 estanquen tendían que llegar en la semana número 12 a 12 gramos para poder entonces realizar la “cosecha”, pero únicamente 3 de los 12 estanques llegaron a este peso.
¿Por qué esto es un problema? Dato a que se tendrá que invertir una semana (o más) para poder llegar al peso ideal, y esto supone una pérdida de dinero
- Datos:
## 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(),
## Meta = col_double()
## )
- Preguntas a responder
- Haga un planteamiento del problema a resolver con estadística y realice una descripción exploratoria de los datos (MMM,MD,CB)
MMM
Filtración de los datos del peso de los camarones
#Datos totales
datos <- t(CAMARONES$PesoActual)
datos <- as.vector(datos)
#Semana 1
datosS1 <- t(CAMARONES$PesoAnterior)
datosS1 <- as.vector(datosS1)
datosS1 <- datosS1[1:12]
datosS1## [1] 0.145 0.153 0.149 0.154 0.166 0.215 0.220 0.134 0.160 0.151 0.141 0.130
## [1] 0.77 0.78 0.69 0.72 0.61 0.62 0.64 0.62 0.70 0.62 0.71 0.60
## [1] 1.32 1.32 1.37 1.45 1.49 1.43 1.32 1.38 1.75 1.74 1.57 1.39
## [1] 2.03 1.96 1.73 2.45 2.36 1.83 1.77 2.08 2.14 2.17 2.09 1.93
## [1] 3.13 3.01 2.86 3.38 3.06 2.91 2.88 3.58 3.62 3.34 3.19 2.97
## [1] 4.25 3.52 4.05 4.09 3.90 3.42 3.91 4.20 4.95 4.50 3.85 4.17
## [1] 4.32 4.42 5.02 4.71 4.29 4.03 4.00 5.04 5.21 4.75 4.64 5.17
## [1] 6.21 6.31 5.81 5.33 5.53 5.33 5.29 5.65 6.93 5.83 5.72 5.86
## [1] 7.64 6.95 6.21 6.53 6.08 6.51 6.42 7.09 6.99 6.65 6.00 6.25
## [1] 9.46 8.02 8.69 8.32 8.40 8.51 7.88 7.94 8.83 8.01 8.00 7.85
## [1] 10.36 9.23 10.36 9.37 9.72 10.19 10.01 10.06 10.13 9.41 9.01 10.12
## [1] 12.18 11.17 11.65 10.67 11.62 11.12 11.53 12.26 11.81 11.21 11.26 12.05
Se puede ver que únicamente en 3 estanques tienen el peso ideal deseado, el estanque 1, estanque 8 y en el estanque 12, estos son los únicos que llegaron al peso ideal.
Media
## [1] 0.1598333
## [1] 0.6733333
## [1] 1.460833
## [1] 2.045
## [1] 3.160833
## [1] 4.0675
## [1] 4.633333
## [1] 5.816667
## [1] 6.61
## [1] 8.325833
## [1] 9.830833
## [1] 11.54417
Se puede ver que la media en el paso de las semanas se ve normal, lo cual esto es normal, ya que los camarones van subiendo de peso, de momento todo es normal
Mediana
## [1] 0.152
## [1] 0.665
## [1] 1.41
## [1] 2.055
## [1] 3.095
## [1] 4.07
## [1] 4.675
## [1] 5.765
## [1] 6.52
## [1] 8.17
## [1] 10.035
## [1] 11.575
La mediana de los datos es el punto medio de los datos, esto se ve normal, no hay nada fuera de lo normal, ya que saca el punto medio de los datos de las semanas, en la mediana, se puede ver que en las semana 7 tiene un valor similar al de la semana 6, lo cual significa que no hubo mucho avance, lo cual es malo, porque significa que algunos datos no avanzaron lo suficiente.
Moda
## [1] 0.130 0.134 0.141 0.145 0.149 0.151 0.153 0.154 0.160 0.166 0.215 0.220
## [1] 0.62
## [1] 1.32
## [1] 1.73 1.77 1.83 1.93 1.96 2.03 2.08 2.09 2.14 2.17 2.36 2.45
## [1] 2.86 2.88 2.91 2.97 3.01 3.06 3.13 3.19 3.34 3.38 3.58 3.62
## [1] 3.42 3.52 3.85 3.90 3.91 4.05 4.09 4.17 4.20 4.25 4.50 4.95
## [1] 4.00 4.03 4.29 4.32 4.42 4.64 4.71 4.75 5.02 5.04 5.17 5.21
## [1] 5.33
## [1] 6.00 6.08 6.21 6.25 6.42 6.51 6.53 6.65 6.95 6.99 7.09 7.64
## [1] 7.85 7.88 7.94 8.00 8.01 8.02 8.32 8.40 8.51 8.69 8.83 9.46
## [1] 10.36
## [1] 10.67 11.12 11.17 11.21 11.26 11.53 11.62 11.65 11.81 12.05 12.18 12.26
Como se puede ver en las semanas 2,3,8,11 existen repiten, lo cual es bueno, porque significa que la mayoría de los camarones se desarrollan de la misma manera, sin embargo en diferentes en las demás no hay ninguna moda, lo cual significa que no se desarrollan igual, lo cual sigue siendo normal porque son animales, comen diferentes y hay situaciones en las cuales comen mas o menos.
Resumen de la media, mediana y moda
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1300 0.1440 0.1520 0.1598 0.1615 0.2200
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.6000 0.6200 0.6650 0.6733 0.7125 0.7800
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.320 1.357 1.410 1.461 1.510 1.750
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.730 1.905 2.055 2.045 2.147 2.450
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.860 2.955 3.095 3.161 3.350 3.620
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.420 3.888 4.070 4.067 4.213 4.950
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.000 4.312 4.675 4.633 5.025 5.210
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.290 5.480 5.765 5.817 5.947 6.930
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 6.24 6.52 6.61 6.96 7.64
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.850 7.985 8.170 8.326 8.555 9.460
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.010 9.400 10.035 9.831 10.145 10.360
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.67 11.20 11.57 11.54 11.87 12.26
Medidas de dispersion
Varianza
## [1] 0.0008281515
## [1] 0.004024242
## [1] 0.02315379
## [1] 0.04844545
## [1] 0.07000833
## [1] 0.1679295
## [1] 0.1801515
## [1] 0.2281879
## [1] 0.2316364
## [1] 0.2350992
## [1] 0.2166629
## [1] 0.2306265
Se puede ver que la varianza de los datos va aumentando, lo cual indica que en los estanques sufren de una disparidad en los estanques, lo cual es lógico, ya que sabemos que únicamente 3 llegaron a 12gr, y los demás están debajo de los 12.
Desviación estándar
## [1] 0.02877762
## [1] 0.06343692
## [1] 0.1521637
## [1] 0.2201033
## [1] 0.2645909
## [1] 0.4097921
## [1] 0.4244426
## [1] 0.4776901
## [1] 0.4812862
## [1] 0.4848703
## [1] 0.4654706
## [1] 0.4802359
Se puede ver que la desviación estándar empieza a subir, esto es debido a que a través de las semanas los datos empiezan a ser mas diferentes entre si.
Gráfico de caja y bigotes
Lo que se puede ver es que los gráficos cambian, en la semana 6 hay incluso un dato atípico, sin embargo en la semana 6 y 7 la media es muy parecido, pero el valor máximo aumento, lo cual esta mal, ya que la media debería aumentar mas, debido al cambio de semana, lo cual indica que la mayoría de los camarones no subieron lo suficiente de peso.
- ¿Qué tienen de diferentes los estanques que SI llegan a 12 gramos en la semana 12 con respecto a los que no?
alimento <- t(CAMARONES$AlimentoSemana)
alimento <- as.vector(alimento)
alimento <- alimento[85:132]
alimento[1:12] #Semana 9## [1] 1095 1070 1130 1055 1005 1085 1105 1060 1140 1115 1045 1050
## [1] 1305 1240 1375 1440 1415 1340 1370 1350 1350 1500 1450 1325
## [1] 1450 1225 1600 1825 1650 1600 1950 1975 1175 1975 1925 1350
## [1] 1950 1900 1975 2000 1900 1975 1925 2050 2025 1900 2075 2075
A partir de la semana 8 empiezan a dar comida de manera dispareja, lo cual puede suponer que empezaron a dar mas comida a los que pesaban menos, y dar menos comida a los que pesaban mas, sin embargo esto no significa que esta es la razón de que no hayan llegado, ya que se puede ver que en algunas veces se da menos alimento a algunos estanques, probablemente esta dispariedad en la alimentación es debía a lo sucedido en la semana 6 y 7, sin embargo no se sabe porque los camarones no subieron lo suficiente en la semana.
3.- ¿Con qué variables se relaciona el aumento de preso de los camarones?(Regresión lineal, residuos, confianza)
Regresión lineal
Diagrama de dipersión
# Aquí se puede ver todos los datos de la tabla de camarones, se ignora la columna 1 porque no son valores que no se pueden usar porque son numéricos, a demás en la segunda columna esta especificado, su uso seria redundante.En esta tabla se ven las relaciones de todas las variables, se pueden ver que hay muchas relaciones cerca del centro, esto es debido a la relación que existe en los pesos y el alimento.
En esta tabla acotada se puede ver mas claro que existe una relación bastante clara en PesoActual con el AlimentoSemana
- Variable con los datos a utilizar
Aquí se crea una variable en la cual se guardan los datos que se usarán
Cuantificación del grado de relación
## PesoActual TamanioAlimento AlimentoSemana
## PesoActual 1.0000000 0.8805769 0.9514703
## TamanioAlimento 0.8805769 1.0000000 0.8484229
## AlimentoSemana 0.9514703 0.8484229 1.0000000
En este paso se puede ver que existe una relación muy grande entre el PesoActual y AlientoSemana, esto significa que el valor del peso actual depende directamente del alimento semanal
Recta de minimos cuadrados
##
## Call:
## lm(formula = AlimentoSemana ~ PesoActual, data = relacion)
##
## 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
Gráfica de minimos cuadrados
plot(relacion$PesoActual,relacion$AlimentoSemana,xlab="Peso actual de los camarones",ylab="Alimento semanal de los camarones")
abline(regresion)Modelación de predicciones
## 1 2 3 4 5 6 7 8
## 565.2587 704.9559 844.6532 984.3504 1124.0476 1263.7449 1403.4421 1543.1393
## 9 10 11
## 1682.8366 1822.5338 1962.2310
Intervalo de confianza para el 95% de los datos
## 2.5 % 97.5 %
## (Intercept) 236.6740 335.0544
## PesoActual 131.8572 147.5372
Representación gráfica de los intervalos de confianza
progreso.peso <- data.frame(PesoActual=seq(2,12))
#Gráfico de dispersión y recta
plot(relacion$PesoActual,relacion$AlimentoSemana,xlab="Peso actual de los camarones",ylab="Alimento semanal")
abline(regresion)
#Intervalos de confianza de la respuesta media
# ic es una matriz con tres columnas:
#La primera es la predicción, y las otras son los extremos del intervalo
ic <- predict(regresion, progreso.peso, interval = "confidence")
lines(progreso.peso$PesoActual, ic[, 2], lty=2, col = "blue")
lines(progreso.peso$PesoActual, ic[, 3], lty=2, col = "blue")
# Intervalos de predicción
ic <- predict(regresion, progreso.peso, interval = "prediction")
lines(progreso.peso$PesoActual, ic[, 2], lty = 2, col = "red")
lines(progreso.peso$PesoActual, ic[, 3], lty = 2,col = "red")Gracias a la gráfica se puede ver que el intervalo de confianza esta muy cerda de la recta, lo cual significa que el intervalo que se uso es muy confiable, debido a la relación que existe entre el peso actual de los camarones y el alimento semana, sin embargo el intervalo de predicción esta muy alejado de la recta, lo cual significa que los valores probablemente se alegaran mucho de la recta negra.
4.- ¿Los camarones que iniciaron con mayor peso (semana 2) son también los que terminaron en mayor peso? ¿Cómo varía el crecimiento?
## [1] 0.77 0.78 0.69 0.72 0.61 0.62 0.64 0.62 0.70 0.62 0.71 0.60
## [1] 12.18 11.17 11.65 10.67 11.62 11.12 11.53 12.26 11.81 11.21 11.26 12.05
Aquí se puede ver que los estanques que tenían los mayores pesos eran: 1, 2, 4, 9 y 11, sin embargo, en la semana 12 los que tiene mayor peso son: 1,3,5,8,9 y 12. Como se puede ver casi son los mismos, pero el 2, el 4 y el 11 no llegaron a los pesos mas altos, pero se integraron el 3, el 8 y el 12, de los que estaban en los pesos altos originalmente únicamente el 1 llego a 12gr, esto debido a la alimentación, después en la semana 12, 2 mas lograron llegar a la meta, pero estos no estaban en los valores mas altos de peso en la semana 2, esto es debido a la alimentación y probablemente a factores externos, tales como la actividad física de los camarones o incluso alguna enfermedad.
5.- Realice un análisis de regresión logística para determinar que hace que los camarones lleguen a 12 gramos.
- Filtración de los datos
## Warning: The `i` argument of ``[.tbl_df`()` must lie in [0, rows] if positive, as of tibble 3.0.0.
## Use `NA_integer_` as row index to obtain a row full of `NA` values.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## # A tibble: 13 x 5
## PesoActual TamanioAlimento AlimentoSemana AlimentoDiario Meta
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 12.2 2 1950 279. 1
## 2 11.2 2 1900 271. 0
## 3 11.6 2 1975 282. 0
## 4 10.7 2 2000 286. 0
## 5 11.6 2 1900 271. 0
## 6 11.1 2 1975 282. 0
## 7 11.5 2 1925 275 0
## 8 12.3 2 2050 293. 1
## 9 11.8 2 2025 289. 0
## 10 11.2 2 1900 271. 0
## 11 11.3 2 2075 296. 0
## 12 12.0 2 2075 296. 1
## 13 NA NA NA NA NA
Se puede ver que la máyoria de los camarones no llegaron a la meta.
colores <- NULL
colores[meta$Meta==0] <- "red"
colores[meta$Meta==1] <- "green"
plot(meta$AlimentoSemana,meta$Meta, pch =21, bg= colores, xlab = "Alimento de la semana",ylab = "Peso de los camarones")
legend("topleft", c("No llego a la meta", "Si llego a la meta"),pch =21, col=c("red","blue") )A mayor cantidad de alimento es mayor la probabilidad de que aumente su peso, sin embargo, no es 100% seguro de que los camarones suban mas de peso si se les alimenta mas, se puede ver que a partir de 2050 de comida la probabilidad de que suban de peso es mayor.
##
## Call:
## glm(formula = Meta ~ AlimentoSemana, family = binomial, data = meta)
##
## 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.12289 25.87759 -1.357 0.175
## AlimentoSemana 0.01705 0.01287 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
## (1 observation deleted due to missingness)
## AIC: 15.311
##
## Number of Fisher Scoring iterations: 5
Resumen de regresión logística binomial
datos <- data.frame(AlimentoSemana=seq(1950,2075))
probabilidades <- predict(reg,datos, type="response")
plot(meta$AlimentoSemana,meta$Meta,pch=21,bg=colores,xlab="Probabilidad de subir de peso por el alimento semanal",ylab="Probabilidad subir de peso de los camarones")
legend("topleft", c("No llego a la meta", "Si llego a la meta"),pch =21, col=c("red","green") )
lines(datos$AlimentoSemana,probabilidades,col="blue",lwd=2)Se puede ver claramente que los camarones aumenta su peso si los alimentan mas, el problema fue que semanalmente no dieron la suficiente comida a algunos estanques, esto probablemente fue que empezaron a dar comida dispareja, debieron de dar mas comida a los que pesaban menos y no dar menos mucho menos a los que pesaban mas.