## [1] "c_agua" "molusco" "cons_o"
## # A tibble: 6 x 3
## c_agua molusco cons_o
## <dbl> <chr> <dbl>
## 1 100 A 7.16
## 2 100 A 8.26
## 3 100 A 6.78
## 4 100 A 14
## 5 100 A 13.6
## 6 100 A 11.1
Revisión de datos Faltantes
apply(is.na(BD_moluscos), 2, sum)
## c_agua molusco cons_o
## 0 0 0
No existe presencia de valores faltantes dentro de la base que se esta evaluando.
tabla_molusco = tabla_freq(BD_moluscos$molusco)
tabla_c_agua = tabla_freq(BD_moluscos$c_agua)
tabla_cons_o = descriptivas(BD_moluscos$cons_o)
kbl(list(tabla_molusco,tabla_c_agua,tabla_cons_o),caption = "<center><strong> || -------- TIpo de Moluscos ---------------||---------------- Concentración de agua -------------------||--------------- Consumo de oxigeno -------- || </strong></center>") %>%
kable_paper(bootstrap_options = "striped")
|
|
|
Analizando el comportamiento de las 3 variables que tenemos disponibles podemos observar los siguiente:
Tipo de Molusco: Se tiene una concentración equitava, siendo esta del 50%, en la base de datos para los dos tipos de moluscos analizados.
Concentracion de Agua:Se tiene una concentración equitava, siendo esta del 33.3 %, en la base de datos para los tres niveles de concentracion de agua analizados
Consumo de Oxigeno: Presenta una variabilidad del 39.6% donde podemos observar que la distribución es mas o menos simetrica, donde la media y la media se encuentra relativamente cerca.
par(mfrow = c(1,2))
boxplot(BD_moluscos$cons_o,
horizontal = FALSE,
main = "Boxplot Consumo Oxigeno",
col = "#A6CEE3")
hist(BD_moluscos$cons_o,
main = "Histograma Consumo Oxigeno" ,
ylab = "Frecuencia" ,
xlab = "COnsumo o2",
col = "#A6CEE3")
A nivel general el consumo de oxigeno que se encuentra por debajo del
9.7 por unidad de peso seco del molusco presenta un a mayor variabilidad
que las proporciones que estan por encima. Adicional, se observa una
mayor concentración de las medidas al rededor de 9% por unidad de peso
seco del molusco.
Consumo de Oxigeno VS Tipo de Molusco
tabla_cons_o_A = descriptivas(BD_moluscos[BD_moluscos$molusco=='A',]$cons_o)
tabla_cons_o_B = descriptivas(BD_moluscos[BD_moluscos$molusco=='B',]$cons_o)
kbl(list(tabla_cons_o_A,tabla_cons_o_B),caption = "<center><strong> || --- Consumo de oxigeno para moluscos tipo A -----------------------------------------||---------- Consumo de oxigeno para moluscos tipo B ---------------------------------------- || </strong></center>") %>%
kable_paper(bootstrap_options = "striped")
|
|
El consumo de oxigeno para los moluscos tipo B presenta una mayor variabilidad en comparacion a los tipo A en un 13.8% de su coeficiente de variación. A nivel de la media también observamos una diferenciación de 1.68% por unidad de peso seco del molusco, donde los molusco tipo A tienen una mayor proporción de oxígeno.
A nivel distribucional, el consumo de oxígeno de los molusco tipo A presenta una menor variabilidad estando entre 5% y 15% con un valor atipico por encima del 18%. En comparación, los tipo B tienen un rango de variabilidad mas amplio estando entre 1.8% y e. 17.7%.
Consumo de Oxigeno VS Concentración de Agua
tabla_cons_o_50 = descriptivas(BD_moluscos[BD_moluscos$c_agua=='50',]$cons_o)
tabla_cons_o_75 = descriptivas(BD_moluscos[BD_moluscos$c_agua=='75',]$cons_o)
tabla_cons_o_100 = descriptivas(BD_moluscos[BD_moluscos$c_agua=='100',]$cons_o)
kbl(list(tabla_cons_o_50,tabla_cons_o_75,tabla_cons_o_100),caption = "<center><strong> || --- % oxigeno - 50 de agua ------------------------||----------------- % oxigeno - 75 de agua -------------||-------------------- % oxigeno - 100 de agua ------------------------------------ || </strong></center>") %>%
kable_paper(bootstrap_options = "striped")
|
|
|
Comparando el comportamiento del consumo de oxígeno por concentración de agua, se observa que la concentracion de 50% de agua tienen una menor variabilidad con el promedio de consumo de oxigeno mayor en comparación con los otras concentraciones. Por otro lado, la concentracion del 75% de agua es la que tiene una mayor variabilidad con un promedio menor de consumo, siendo este de 6.99%.
Los moluscos en una concentración de agua del 50% parecen tener un consumo mayor de oxigeno en comparación a las otras concentraciones. Los que presentan un menor consumo, son los moluscos con una concentración de agua del 75%, los cuales presentan una media del 6.99% y una mediana del 6.43% por unidad de peso seco del molusco.
Consumo de Oxigeno VS Concentración de Agua y Tipo de Molusco
tabla_cons_o_A_50 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='A' & BD_moluscos$c_agua=='50'),]$cons_o)
tabla_cons_o_B_50 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='B' & BD_moluscos$c_agua=='50'),]$cons_o)
tabla_cons_o_A_75 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='A' & BD_moluscos$c_agua=='75'),]$cons_o)
tabla_cons_o_B_75 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='B' & BD_moluscos$c_agua=='75'),]$cons_o)
tabla_cons_o_A_100 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='A' & BD_moluscos$c_agua=='100'),]$cons_o)
tabla_cons_o_B_100 = descriptivas(BD_moluscos[(BD_moluscos$molusco=='B' & BD_moluscos$c_agua=='100'),]$cons_o)
kbl(list(tabla_cons_o_A_50,tabla_cons_o_B_50,tabla_cons_o_A_75,tabla_cons_o_B_75,tabla_cons_o_A_100,tabla_cons_o_B_100),caption = "<center><strong> ||------Tipo A - 50 agua ------||--||------Tipo B - 50 agua ------||--||------Tipo A - 75 agua ------||--||------Tipo B - 75 agua ------||--||------Tipo A - 100 agua------||--||------Tipo B - 100 agua----- || </strong></center>") %>%
kable_paper(bootstrap_options = "striped")
|
|
|
|
|
|
Al analizar el comportamiento del consumo de oxigeno para cada tipo de molusco dada la concentración se observa que:
En la concentracion de agua de 50% los moluscos tipo B presentan un consumo de oxigeno promedio mayor en comparación a los tipo A.
Para las concentraciones del 75% y del 100% este comportamiento se invierte los tipo A presentan un mayor consumo de oxigeno promedio que los tipo B
El modelo propuesto esta dado por:
\[Concentracion\_O_2 = \beta_0 + \beta_1Concentracion\_Agua\_75 + \beta_2Concentracion\_Agua\_100 + \beta_3Tipo\_Molusco\_B + \epsilon \] Dando el siguiente modelo estimado
\[Concentracion\_O_2 = 12.95 - 5.26*Concentracion\_Agua\_75 - 3.58*Concentracion\_Agua\_100 - 1.39*Tipo\_Molusco\_B \]
BD_moluscos$molusco=as.factor(BD_moluscos$molusco)
BD_moluscos$c_agua=as.factor(BD_moluscos$c_agua)
modelo_moluscos=lm(cons_o~c_agua+molusco, data = BD_moluscos)
summary(modelo_moluscos)
##
## Call:
## lm(formula = cons_o ~ c_agua + molusco, data = BD_moluscos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.1750 -1.9877 -0.7019 2.1244 6.1450
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 12.9463 0.8521 15.193 < 2e-16 ***
## c_agua75 -5.2581 1.0436 -5.038 8.49e-06 ***
## c_agua100 -3.5794 1.0436 -3.430 0.00132 **
## moluscoB -1.3913 0.8521 -1.633 0.10966
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.952 on 44 degrees of freedom
## Multiple R-squared: 0.3986, Adjusted R-squared: 0.3575
## F-statistic: 9.719 on 3 and 44 DF, p-value: 4.866e-05
Significancia de los betas
\[H_0 :\beta_1,.., \beta_3=0\] \[H_a :\beta_1,.., \beta_3\neq 0\]
Se Puede observar que \(Pvalue_{\beta_3} > \alpha:0.05\), entonces no se rechaza \(H_0\), y se dice que \(\beta_3\) no tiene relevancia.
El coeficiente de determinación representa la proporción de la variabilidad de Y que es posible explicar a travez de x. En este caso el modelo construido explica el 35.6% de las variaciones del consumo de \(O^2\) a partir del tipo de molusco y la concentración de agua de mar.
Interpretación Betas
\(\beta_0:\) Si no se tuvieran en cuenta el resto de variables, el consumo de oxigeno en promedio seria de cerca 13% por unidad de peso seco del molusco.
\(\beta_1:\) Si la concentración de agua de mar es de 75%, se espera que en promedio el consumo de oxigeno disminuya en 5.2581 unidades con respecto a la concentración de agua de mar del 50%.
\(\beta_2:\) Si la concentración de agua de mar es de 100%, se espera que en promedio el consumo de oxigeno disminuya en 3.5794 unidades con respecto a la concentración de agua de mar del 50%.
\(\beta_3:\) Los moluscos B se espera que en promedio el consumo de oxigeno disminuya en 1.3913 unidades con respecto a los moluscos de tipo A.
Validación de Supuestos:
error_medio_m1=mean(residuals(modelo_moluscos))
error_medio_m1
## [1] 5.782525e-17
El valor esperado (promedio) de los residuales es igual a 0.
\[H_0 : X \sim N(\mu,\sigma^2)\]
\[H_a : X \nsim N(\mu,\sigma^2)\]
norm_m1=shapiro.test(modelo_moluscos$residuals)
norm_m1
##
## Shapiro-Wilk normality test
##
## data: modelo_moluscos$residuals
## W = 0.9509, p-value = 0.04342
Com P-value es menor a a 0.05 (nivel de significancia escogido), se rechaza \(H_0\), entonces podría pensar que los errores no siguen una distribución normal.
\[H_0 : Los \quad residuales \quad se \quad distribuyen\quad con\quad la\quad misma\quad varianza\]
\[H_0 : Los\quad residuales\quad no\quad se\quad distribuyen\quad con\quad la\quad misma\quad varianza\]
homocedasticidad_m1=bptest(modelo_moluscos)
homocedasticidad_m1
##
## studentized Breusch-Pagan test
##
## data: modelo_moluscos
## BP = 1.5424, df = 3, p-value = 0.6725
Como P-value es mayor a 0.05 (nivel de significancia escogido), no se rechaza \(H_0\), entonces se podría pensar que los errores cumplen con el supuesto de homocedasticidad.
\[H_0 : No \quad existe \quad correlación \quad entre \quad los \quad errores\]
\[H_a : Existe \quad correlación\quad entre\quad los\quad errores\]
autocor_m1=dwt(modelo_moluscos, alternative = "two.sided")
autocor_m1
## lag Autocorrelation D-W Statistic p-value
## 1 0.04335956 1.899129 0.444
## Alternative hypothesis: rho != 0
Como P-value es mayor a 0.05 (nivel de significancia escogido),no se rechaza \(H_0\), entonces se podría pensar que los errores no estan autocorrelacionados.
Anova
anova(modelo_moluscos)
## Analysis of Variance Table
##
## Response: cons_o
## Df Sum Sq Mean Sq F value Pr(>F)
## c_agua 2 230.82 115.408 13.2457 3.14e-05 ***
## molusco 1 23.23 23.227 2.6658 0.1097
## Residuals 44 383.37 8.713
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Como puede observarse en los resultados proporcionados por anova, en definitiva la variable molusco no representa tener media diferente al ser su p valor menor que 0.05. Al contrario la concentración de agua de mar si parece tener influencia en el consumo de oxigeno.
Prueba Postanova
El Test LSD (Least significant difference) de Fisher es un test de comparaciones múltiples. Permite comparar las medias de los t niveles de un factor después de haber rechazado la Hipótesis nula de igualdad de medias mediante la técnica ANOVA. Todos los tests de comparaciones múltiples son tests que tratan de perfilar, tratan de especificar, tratan de concretar, una Hipótesis alternativa genérica como la de cualquiera de los Test ANOVA.
attach(BD_moluscos)
library(agricolae)
comp_mod_moluscos= LSD.test(modelo_moluscos,c("c_agua","molusco"))
comp_mod_moluscos
## $statistics
## MSerror Df Mean CV t.value LSD
## 8.712897 44 9.304792 31.72303 2.015368 2.974442
##
## $parameters
## test p.ajusted name.t ntr alpha
## Fisher-LSD none c_agua:molusco 6 0.05
##
## $means
## cons_o std r LCL UCL Min Max Q25 Q50 Q75
## 100:A 9.93625 2.747976 8 7.833002 12.039498 6.78 14.00 7.9850 9.295 11.7250
## 100:B 7.40625 2.844076 8 5.303002 9.509498 3.68 11.60 5.7225 6.140 10.1000
## 50:A 12.17500 3.090178 8 10.071752 14.278248 9.74 18.80 10.3100 11.110 12.5000
## 50:B 12.32625 3.517909 8 10.223002 14.429498 6.38 17.70 10.0575 12.850 14.5000
## 75:A 7.89000 2.739578 8 5.786752 9.993248 5.20 13.20 6.0775 7.180 8.8925
## 75:B 6.09500 2.739108 8 3.991752 8.198248 1.80 9.96 4.8300 5.595 7.3425
##
## $comparison
## NULL
##
## $groups
## cons_o groups
## 50:B 12.32625 a
## 50:A 12.17500 a
## 100:A 9.93625 ab
## 75:A 7.89000 bc
## 100:B 7.40625 bc
## 75:B 6.09500 c
##
## attr(,"class")
## [1] "group"
plot(comp_mod_moluscos,variation="SD")
## [1] "Biomasa" "pH" "Salinidad" "Zinc" "Potasio"
head(Salinidad)
## Biomasa pH Salinidad Zinc Potasio
## 1 765.280 5.00 33 16.4524 1441.67
## 2 954.017 4.70 35 13.9852 1299.19
## 3 827.686 4.20 32 15.3276 1154.27
## 4 755.072 4.40 30 17.3128 1045.15
## 5 896.176 5.55 33 22.3312 521.62
## 6 1422.836 5.50 33 12.2778 1273.02
par(mfrow = c(2,2))
plot(Salinidad[,c('pH','Biomasa')],col="steelblue",lwd=2)
plot(Salinidad[,c('Salinidad','Biomasa')],col="steelblue",lwd=2)
plot(Salinidad[,c('Zinc','Biomasa')],col="steelblue",lwd=2)
plot(Salinidad[,c('Potasio','Biomasa')],col="steelblue",lwd=2)
Analizando los graficos de dispersión de cada una de las variables VS la biomasa podemos observa que inicalmente se ve una relacion directa entre el PH y la Biomasa y una relacion inversa con el Zinc. Frente al potasio y la salinidad graficamente no se observa realación con la biomasa.
Analisis de correlacion
Analizando la correlacion de cada una de las variables obervamos que:
library(corrplot)
corrplot.mixed(cor(Salinidad), upper = "square", lower = "number", addgrid.col = "black", tl.col = "black")
\[ Biomasa = \beta_0 + \beta_1 PH + \beta_2 Salinidad + \beta_3 Zinc + \beta_4 Potasio + \epsilon \] El modelo estimado con la covariables daría de la siguiente forma:
\[ \hat{Biomasa} = 1492.8 + 262.9*PH - 33.5*Salinidad -28.97*Zinc -0.12*Potasio + \epsilon \]
modelo_salinidad=lm(Biomasa~pH+Salinidad+Zinc+Potasio, data = Salinidad)
summary(modelo_salinidad)
##
## Call:
## lm(formula = Biomasa ~ pH + Salinidad + Zinc + Potasio, data = Salinidad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -293.98 -88.83 -9.48 88.20 387.27
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1492.8076 453.6013 3.291 0.002091 **
## pH 262.8829 33.7304 7.794 1.51e-09 ***
## Salinidad -33.4997 8.6525 -3.872 0.000391 ***
## Zinc -28.9727 5.6643 -5.115 8.20e-06 ***
## Potasio -0.1150 0.0819 -1.404 0.167979
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 158.9 on 40 degrees of freedom
## Multiple R-squared: 0.9231, Adjusted R-squared: 0.9154
## F-statistic: 120 on 4 and 40 DF, p-value: < 2.2e-16
\[H_0 :\beta_1,.., \beta_4=0\]
\[H_a :\beta_1,.., \beta_4\neq 0\]
Se puede observar que \(Pvalue_{\beta_4} > \alpha:0.05\), entonces no se rechaza \(H_0\), y se dice que \(\beta_4\) no tiene relevancia.
El coeficiente de determinación representa la proporción de la variabilidad de Y que es posible explicar a travez de x. En este caso el modelo construido explica el 91.5% de las variaciones de la biomasa de una planta forrajera natural a partir del pH, la salinidad, el zinc y el potasio.
Modelo sin considerar las variables no significativas
modelo_salinidad=lm(Biomasa~pH+Salinidad+Zinc, data = Salinidad)
summary(modelo_salinidad)
##
## Call:
## lm(formula = Biomasa ~ pH + Salinidad + Zinc, data = Salinidad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -363.42 -107.14 8.51 78.33 398.36
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1502.349 458.894 3.274 0.00216 **
## pH 255.008 33.653 7.578 2.55e-09 ***
## Salinidad -34.800 8.704 -3.998 0.00026 ***
## Zinc -30.408 5.637 -5.394 3.13e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 160.8 on 41 degrees of freedom
## Multiple R-squared: 0.9193, Adjusted R-squared: 0.9134
## F-statistic: 155.7 on 3 and 41 DF, p-value: < 2.2e-16
\[ Y_{(biomasa)} =1502.3+255*pH-34.8*Salinidad-30.4*Zinc\]
Interpretación Betas
\(\beta_0:\)Si no se tuvieran en cuenta el resto de variables, la produccion de biomasa en promedio seria de 1502.3 gr.
\(\beta_1:\)Por cada unidad de ph que aumente, se espera que en promedio la produccion de biomasa aumente en 255 gr.
\(\beta_2:\)Por cada unidad de salinidad que se incremente, se espera que en promedio la produccion de biomasa disminuya en 34.8 gr.
\(\beta_3:\)Por cada unidad de zinc que se incremente, se espera que en promedio la produccion de biomasa disminuya en 30.4 gr.
Validación de Supuestos:
error_medio_m2=mean(residuals(modelo_salinidad))
error_medio_m2
## [1] 4.592006e-15
El valor esperado (promedio) de los residuales es igual a 0.
\[H_0 : X \sim N(\mu,\sigma^2)\]
\[H_a : X \nsim N(\mu,\sigma^2)\]
norm_m2=shapiro.test(modelo_salinidad$residuals)
norm_m2
##
## Shapiro-Wilk normality test
##
## data: modelo_salinidad$residuals
## W = 0.97436, p-value = 0.4121
Com P-value es mayor a 0.05 (nivel de significancia escogido), no se rechaza \(H_0\), entonces podría pensar que los errores siguen una distribución normal.
\[H_0 : Los \quad residuales\quad se\quad distribuyen\quad con\quad la\quad misma\quad varianza\]
\[H_a : Los\quad residuales\quad no\quad se\quad distribuyen\quad con\quad la\quad misma\quad varianza\]
homocedasticidad_m2=bptest(modelo_salinidad)
homocedasticidad_m2
##
## studentized Breusch-Pagan test
##
## data: modelo_salinidad
## BP = 1.3749, df = 3, p-value = 0.7114
Como P-value es mayor a 0.05 (nivel de significancia escogido), no se rechaza \(H_0\), entonces se podría pensar que los errores cumplen con el supuesto de homocedasticidad.
\[H_0 : No\quad existe\quad correlación\quad entre\quad los\quad errores\]
\[H_a : Existe\quad correlación\quad entre\quad los\quad errores\]
autocor_m2=dwt(modelo_salinidad, alternative = "two.sided")
autocor_m2
## lag Autocorrelation D-W Statistic p-value
## 1 0.1225402 1.598798 0.114
## Alternative hypothesis: rho != 0
Como P-value es mayor a 0.05 (nivel de significancia escogido),no se rechaza \(H_0\), entonces se podría pensar que los errores no estan autocorrelacionados.