Primera evaluación de estado de la materia de probabilidad y estadística para ingenierías
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 la pesar los camarones en crecimiento, también se cuantifica su nivel de comida.
En términos ideales los 12 estanques tendrí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 llegaros a este peso.
¿Por qué esto es un problema? dado que se tendrá que invertir una semana (o más) para poder llegar al peso ideal, y esto supone una pérdida de dinero.
Acuacultura
#IMPORTAR PAQUETES Y DATOS
library(pacman)
p_load("readr","DT","prettydoc","fdth","modeest","GGally","ggplot2")
CAMARONES <- read_csv("CAMARONES.csv", col_types = cols(EstanqueN = col_number(),
Dias = col_number(), Semana = col_number()))
#VISUALIZAR DATOS
head(CAMARONES)## # A tibble: 6 x 10
## Estanque EstanqueN Superficie Dias Semana PesoAnterior PesoActual
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Estanqu~ 1 5 14 2 0.145 0.77
## 2 Estanqu~ 2 5 14 2 0.153 0.78
## 3 Estanqu~ 3 5 14 2 0.149 0.69
## 4 Estanqu~ 4 5 14 2 0.154 0.72
## 5 Estanqu~ 5 5 14 2 0.166 0.61
## 6 Estanqu~ 6 5 14 2 0.215 0.62
## # ... with 3 more variables: TamanioAlimento <dbl>, AlimentoSemana <dbl>,
## # AlimentoDiario <dbl>
AlimentoCamarones <- read_csv("AlimentoCamarones.csv",
col_types = cols(Estanque1 = col_number(),
Estanque2 = col_number(), Estanque3 = col_number(),
Estanque4 = col_number(), Estanque5 = col_number(),
Estanque6 = col_number(), Estanque7 = col_number(),
Estanque8 = col_number(), Estanque9 = col_number(),
Estanque10 = col_number(), Estanque11 = col_number(),
Estanque12 = col_number()))
PesoCamarones <- read_csv("PesoCamarones.csv")## Parsed with column specification:
## cols(
## VS = col_character(),
## Estanque1 = col_double(),
## Estanque2 = col_double(),
## Estanque3 = col_double(),
## Estanque4 = col_double(),
## Estanque5 = col_double(),
## Estanque6 = col_double(),
## Estanque7 = col_double(),
## Estanque8 = col_double(),
## Estanque9 = col_double(),
## Estanque10 = col_double(),
## Estanque11 = col_double(),
## Estanque12 = col_double()
## )
#Extracción de datos de la última semana del marco de datos
#Peso
pesofinalcamarones <- CAMARONES$PesoActual #obtener datos
pesofinalcamarones <- as.vector(pesofinalcamarones) #transformar a vector
pesofinalcamarones <- pesofinalcamarones[121:132] #eliminar datos no útiles
#Alimento
alimentoultimasemana <- CAMARONES$AlimentoSemana #obtener datos
alimentoultimasemana <- as.vector(alimentoultimasemana) #transformar a vector
alimentoultimasemana <- alimentoultimasemana[121:132] #eliminar datos no útilesPlanteamiento del problema
En una granja de acuacualtura se guarda el registro semanal de alimento dado y peso de los camarones distribuidos en 12 diferentes estanques. El objetivo en esta cosecha era lograr un peso de 12 gr por camarón en 12 semanas, sin embargo, al terminar el tiempo establecido, solo en 3 de los 12 estanques se cumplió esa meta, generando así pérdidas en el proyecto. Esto podría deberse a el tamaño del estanque, pero probablemente se deba más a la cantidad de alimento distribuido por estanque, el cual no tuvo un crecimiento ni distribución uniforme.
Para su estudio, se llevará a cabo un análisis estadístico que pretenda develar las causas o problemas que llevaron a la cosecha a no cumplir adecuadamente el cronograma. Se analizarán primordialmente los datos de peso de camarón y alimento dado en la última semana.
Acuacultura
Descripción exploratoria de los datos
- Peso actual de los camarones en la semana 12 (peso final)
## [1] 11.54417
## [1] 11.575
## [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
## [1] 1.59
## [1] 0.2306265
## [1] 0.4802359
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.67 11.20 11.57 11.54 11.87 12.26
- Alimento dado en la última semana
## [1] 1979.167
## [1] 1975
## [1] 1900
#MEDIDAS DE DISPERSIÓN
#AMPLITUD
ampa <- ( max(alimentoultimasemana) - min(alimentoultimasemana))
ampa## [1] 175
## [1] 4412.879
## [1] 66.4295
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1900 1919 1975 1979 2031 2075
#Marco de datos nuevo
camaron <- data.frame(alimentoultimasemana,pesofinalcamarones)
#Diagrama de dispersión
#Alimento dado VS Peso del camarón en la última semana
pairs(camaron)- Análisis de los estanques con mayor y menor peso final por camarón
#DATOS A RECALCAR
#ESTANQUE CON MAYOR PESO EN LA SEMANA 12
#ESTANQUE 8
maxpeso <- max(pesofinalcamarones)
maxpeso## [1] 12.26
## [1] 10.67
#Ambos estanques poseen la misma superficie
#Marco de datos estanque 4, semanas 2-12
estanque4 <- data.frame(AlimentoCamarones$Estanque4,PesoCamarones$Estanque4)
#Diagrama de dispersión estanque 4, semanas 2-12
pairs(estanque4)#Marco de datos estanque 8, semanas 2-12
estanque8 <- data.frame(AlimentoCamarones$Estanque8,PesoCamarones$Estanque8)
#Diagrama de dispersión estanque 8, semanas 2-12
pairs(estanque8)## AlimentoCamarones.Estanque4 PesoCamarones.Estanque4
## AlimentoCamarones.Estanque4 301019.491 1733.01436
## PesoCamarones.Estanque4 1733.014 10.53071
## AlimentoCamarones.Estanque8 PesoCamarones.Estanque8
## AlimentoCamarones.Estanque8 330492.76 2032.85009
## PesoCamarones.Estanque8 2032.85 13.30359
## AlimentoCamarones.Estanque4 PesoCamarones.Estanque4
## AlimentoCamarones.Estanque4 1.0000000 0.9733659
## PesoCamarones.Estanque4 0.9733659 1.0000000
## AlimentoCamarones.Estanque8 PesoCamarones.Estanque8
## AlimentoCamarones.Estanque8 1.0000000 0.9694825
## PesoCamarones.Estanque8 0.9694825 1.0000000
¿Que tienen de diferentes los estanques que SI llegaron a 12 gramos en la semana 12 con respecto a los que no?
- De acuerdo al análisis anterior, en la comparativa del estanque con mayor peso final por camarón, y el estanque con menor peso final. En el estanque 8 (mayor peso) existe una mayor varianza entre los datos de alimento con respecto al estanque 4 (menor peso), y por tanto, una varianza mayor en el peso. Esto se debe a que en el estanque 8 hubo un mayor sumistro de alimento, lo que generó un mayor peso en el camarón. Esto se puede observar en las siguientes tablas:
¿Con qué variables se relaciona el aumento de peso de los camarones? (regresión lineal, residuos, confianza)
- La hipótesis es que el peso del camarón se relaciona con el alimento suministrado.
#SE REALIZARÁ UN MODELO DE REGRESIÓN LINEAL PARA EL ESTANQUE 8 (MAYOR PESO FINAL POR CAMARÓN) Y EL ESTANQUE 4 (MENOR PESO FINAL)
#NUEVAMENTE, MATRIZ DE CORRELACIÓN LINEAL
#MATRIZ DE CORRELACIÓN
cor(estanque4)## AlimentoCamarones.Estanque4 PesoCamarones.Estanque4
## AlimentoCamarones.Estanque4 1.0000000 0.9733659
## PesoCamarones.Estanque4 0.9733659 1.0000000
## AlimentoCamarones.Estanque8 PesoCamarones.Estanque8
## AlimentoCamarones.Estanque8 1.0000000 0.9694825
## PesoCamarones.Estanque8 0.9694825 1.0000000
En el estanque 4 se obtuvo un índice de correlación entre alimento y peso del 97.33%, y en el estanque 8 se obtuvo un 96.94%
Con aproximadamente un 97% de correlación entre las variables alimento y peso, podemos deducir que las variables SI están relacionadas, un mayor número de alimento dado se ve acompañado de un camarón con mayor peso.
#PRUEBA DE CORRELACIÓN DE PEARSON
#ESTANQUE 4
cor.test(x=AlimentoCamarones$Estanque4,y=PesoCamarones$Estanque4, method = "pearson", digits=3)##
## Pearson's product-moment correlation
##
## data: AlimentoCamarones$Estanque4 and PesoCamarones$Estanque4
## t = 12.737, df = 9, p-value = 4.626e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.8975942 0.9932717
## sample estimates:
## cor
## 0.9733659
#ESTANQUE 8
cor.test(x=AlimentoCamarones$Estanque8,y=PesoCamarones$Estanque8, method = "pearson", digits=3)##
## Pearson's product-moment correlation
##
## data: AlimentoCamarones$Estanque8 and PesoCamarones$Estanque8
## t = 11.863, df = 9, p-value = 8.488e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.8833164 0.9922793
## sample estimates:
## cor
## 0.9694825
- En la prueba de correlación de pearson obtenemos un p-value = 4.626e-07, un valor muy pequeño, que nos indica que podemos generar un modelo de regresión lineal confiable
Regresión lineal simple
ESTANQUE 8, MAYOR PESO FINAL POR CAMARÓN
#lm, lineal model
peso8 <- PesoCamarones$Estanque8
alimento8 <- AlimentoCamarones$Estanque8
estanqueN8 <- data.frame(alimento8,peso8)
regresionE8 <- lm(peso8 ~ alimento8, data=estanqueN8)
summary(regresionE8)##
## Call:
## lm(formula = peso8 ~ alimento8, data = estanqueN8)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.1193 -0.6245 -0.3055 0.6122 1.5389
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.9688857 0.6108214 -1.586 0.147
## alimento8 0.0061510 0.0005185 11.863 8.49e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9426 on 9 degrees of freedom
## Multiple R-squared: 0.9399, Adjusted R-squared: 0.9332
## F-statistic: 140.7 on 1 and 9 DF, p-value: 8.488e-07
## 2.5 % 97.5 %
## (Intercept) -2.350659661 0.412888255
## alimento8 0.004978083 0.007323851
nuevo.alimento8 <- data.frame(alimento8=seq(400,2050))
#Recta ajustada al gráfico de dispersión
plot(alimento8,peso8, xlab="Alimento", ylab="Peso")
abline(regresionE8)
#Intervalos de confianza para la respuesta media
# ic es una matriz con tres columnas: la primera es la predicción, las otras dos son los extremos del intervalo
ic <- predict(regresionE8, nuevo.alimento8, interval='confidence')
lines(nuevo.alimento8$alimento8, ic[,2],lty=2)
lines(nuevo.alimento8$alimento8, ic[,3],lty=2)
#Intervalos de predicciónval='prediction')
ic <- predict(regresionE8, nuevo.alimento8, interval='prediction')
lines(nuevo.alimento8$alimento8, ic[,2],lty=2, col="red")
lines(nuevo.alimento8$alimento8, ic[,3],lty=2, col="red")- Ecuación de la recta de mínimos cuadrados para el estanque 8
\[ y= -0.9688857 + 0.0061510x \]
ESTANQUE 4, MENOR PESO FINAL POR CAMARÓN
#lm, lineal model
peso4 <- PesoCamarones$Estanque4
alimento4 <- AlimentoCamarones$Estanque4
estanqueN4 <- data.frame(alimento4,peso4)
regresionE4 <- lm(peso4 ~ alimento4, data=estanqueN4)
summary(regresionE4)##
## Call:
## lm(formula = peso4 ~ alimento4, data = estanqueN4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.8372 -0.6131 -0.2766 0.5693 1.2134
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.757219 0.522927 -1.448 0.182
## alimento4 0.005757 0.000452 12.737 4.63e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7842 on 9 degrees of freedom
## Multiple R-squared: 0.9474, Adjusted R-squared: 0.9416
## F-statistic: 162.2 on 1 and 9 DF, p-value: 4.626e-07
## 2.5 % 97.5 %
## (Intercept) -1.940161260 0.425723131
## alimento4 0.004734668 0.006779633
nuevo.alimento <- data.frame(alimento4=seq(400,2000))
#Recta ajustada al gráfico de dispersión
plot(alimento4,peso4, xlab="Alimento", ylab="Peso")
abline(regresionE4)
#Intervalos de confianza para la respuesta media
# ic es una matriz con tres columnas: la primera es la predicción, las otras dos son los extremos del intervalo
ic <- predict(regresionE4, nuevo.alimento, interval='confidence')
lines(nuevo.alimento$alimento4, ic[,2],lty=2)
lines(nuevo.alimento$alimento4, ic[,3],lty=2)
#Intervalos de predicciónval='prediction')
ic <- predict(regresionE4, nuevo.alimento, interval='prediction')
lines(nuevo.alimento$alimento4, ic[,2],lty=2, col="red")
lines(nuevo.alimento$alimento4, ic[,3],lty=2, col="red")- Ecuación de la recta de mínimos cuadrados para el estanque 4
\[ y= -0.757219 + 0.005757x \]
- Dentro de los intervalos de confianza, nuestro modelo de regresión lineal es considerado bueno o aceptable. Más aún cuando los valores intersectan la recta de mínimos cuadrados. Podemos observar que algunos datos intersectan la recta de mínimos cuadrados, y otros se encuentran dentro de los intervalos de confianza.
- La gran mayoría de los valores se encuentran dentro de los intervalos de predicción, los valores por fuera de estos límites, son considerados extremos o atípicos. No encontramos datos de este tipo.
Análisis de residuos
## Analysis of Variance Table
##
## Response: peso8
## Df Sum Sq Mean Sq F value Pr(>F)
## alimento8 1 125.040 125.040 140.74 8.488e-07 ***
## Residuals 9 7.996 0.888
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
residuosE8 <- rstandard(regresionE8)
valores.ajustadosE8 <- fitted(regresionE8)
plot(valores.ajustadosE8,residuosE8)##
## Shapiro-Wilk normality test
##
## data: residuosE8
## W = 0.9358, p-value = 0.4725
## Analysis of Variance Table
##
## Response: peso4
## Df Sum Sq Mean Sq F value Pr(>F)
## alimento4 1 99.772 99.772 162.24 4.626e-07 ***
## Residuals 9 5.535 0.615
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
residuosE4 <- rstandard(regresionE4)
valores.ajustadosE4 <- fitted(regresionE4)
plot(valores.ajustadosE4,residuosE4)
par(mfrow=c(1,2))##
## Shapiro-Wilk normality test
##
## data: residuosE4
## W = 0.87658, p-value = 0.09411
¿Los camarones que iniciaron con mayor peso (semana 2) son también los que terminaron en mayor peso? ¿Cómo varía el crecimiento?
- No, con el tiempo y la variación de alimento suministrado por estanque, esta cualidad no perduró en el tiempo y de hecho, terminaron siendo, de los estanques con camarón de menor peso; debido a que se les suministró menor cantidad de alimento.
Análisis de regresión logística
#ESTANQUE 8
ggpairs(estanqueN8, lower=list(continuous = "smooth"), diag =list(continuous="bar", axislabels="none"))## Warning in check_and_set_ggpairs_defaults("diag", diag, continuous =
## "densityDiag", : Changing diag$continuous from 'bar' to 'barDiag'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#ESTANQUE 4
ggpairs(estanqueN4, lower=list(continuous = "smooth"), diag =list(continuous="bar", axislabels="none"))## Warning in check_and_set_ggpairs_defaults("diag", diag, continuous =
## "densityDiag", : Changing diag$continuous from 'bar' to 'barDiag'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
CONCLUSIONES
Después de realizar un análisis estadístico para última semana de cultivo de camarón, se determinó cuál tanque había logrado un mayor peso por camarón (estanque 8) y cuál el menor (estanque 4). También se observó que solamente 3 de los 12 estanques llegaron a la meta de peso; para un análisis de dicho problema se optó por estudiar a los estanques anteriormente mencionados, por ser representativos.
Se realizó un modelo de regresión lineal para estudiar la correlación entre las variables de alimento suministrado y peso de camarón por estanque. Se obtuvo un índice de correlación de 97%, y un p-value muy pequeño; esto quiere decir que el modelo es bueno. Podemos deducir que la cantidad de alimento sumistrado afecta el peso logrado por camarón. Por tanto, aquellos estanques con mayor sumistro de alimento, lograron camarones con mayor peso.
Analizando los datos, podemos observar que no todos los estanques fueron sumistrados con la misma cantidad de alimento, y es por ello que el peso de camarón varía entre estanques. Sin importar el peso inicial, aquellos camarones que fueron más alimentos terminaron pesando más.
La alimentación no es único factor que afecta el crecimiento del camarón. También intervienen factores como tamaño del estanque, temperatura, etcétera. El crecimiento de los camarones tampoco es lineal, esto puede observarse en las partes de nuestro modelo donde hay una ausencia de datos. Un modelo lineal, por tanto, no es la mejor herramienta para este estudio, pero este ejercicio nos permite darnos una idea de lo que pudo generar el problema.