Carga de datos

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
#cargando la base de datos E1 con tencnica
datos <- read_excel("C:/Users/Nidia/Desktop/CODAZZI Y WILL/PROYECTO ESPECILIZACION EN ESTADISTICA/AVANCES PROYECTO/BD_E1_TECNICA.xlsx")
head(datos)
## # A tibble: 6 × 12
##      ID FECHA               TEMPERATURA OXIGENO    PH AMONIOS NITRATOS NITRITOS
##   <dbl> <dttm>                    <dbl>   <dbl> <dbl>   <dbl>    <dbl>    <dbl>
## 1     1 2024-10-14 00:00:00          28     4.5   9      0.05        0     0.01
## 2     2 2024-10-17 00:00:00          29     4     7.5    0.05        0     0.01
## 3     3 2024-10-20 00:00:00          26     3     8      0.01        0     0.01
## 4     4 2024-10-23 00:00:00          28     4     6.5    0.01        0     0.01
## 5     5 2024-10-26 00:00:00          28     4     6.5    0.01        0     0.01
## 6     6 2024-10-29 00:00:00          30     4.5   6.5    0.01        0     0.01
## # ℹ 4 more variables: CA_ALIMENTO <dbl>, VA_ALIMENTO <dbl>, PESO <dbl>,
## #   MORTALIDAD <dbl>

Ajuste del modelo de regresion multiple

Queremos predecir la ganancia de peso (PESO) a partir de tres variables:

modelo1 <- lm(PESO ~ CA_ALIMENTO + VA_ALIMENTO + NITRATOS, data = datos)
summary(modelo1)
## 
## Call:
## lm(formula = PESO ~ CA_ALIMENTO + VA_ALIMENTO + NITRATOS, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -92.678 -23.036   1.606  36.606  56.779 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 38.812666  13.650263   2.843  0.00619 **
## CA_ALIMENTO  0.001966   0.002990   0.657  0.51357   
## VA_ALIMENTO  0.005434   0.004436   1.225  0.22564   
## NITRATOS     0.071606   0.754535   0.095  0.92473   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 36.75 on 57 degrees of freedom
## Multiple R-squared:  0.9419, Adjusted R-squared:  0.9389 
## F-statistic: 308.2 on 3 and 57 DF,  p-value: < 2.2e-16

Interpretacion detallada de los coeficientes

coeficientes <- summary(modelo1)$coefficients
coeficientes
##                 Estimate   Std. Error    t value    Pr(>|t|)
## (Intercept) 38.812666447 13.650262992 2.84336400 0.006186701
## CA_ALIMENTO  0.001965880  0.002990386 0.65739991 0.513569807
## VA_ALIMENTO  0.005433743  0.004435999 1.22491987 0.225643400
## NITRATOS     0.071606060  0.754534807 0.09490094 0.924726351

Interpretacion:

Ecuacion del modelo ajustado

cat("PESO =", round(coef(modelo1)[1], 2), "+",
    round(coef(modelo1)[2], 2), "* CA_ALIMENTO +",
    round(coef(modelo1)[3], 2), "* VA_ALIMENTO +",
    round(coef(modelo1)[4], 5), "* NITRATOS")
## PESO = 38.81 + 0 * CA_ALIMENTO + 0.01 * VA_ALIMENTO + 0.07161 * NITRATOS

Diagnostico del modelo

Grafico de residuos vs valores ajustados

plot(modelo1$fitted.values, modelo1$residuals,
     main = "Residuos vs Valores Ajustados",
     xlab = "Valores Ajustados", ylab = "Residuos", pch = 19, col = "darkgreen")
abline(h = 0, col = "blue", lty = 2)

Interpretacion: Los residuos no se distribuyen completamente de forma aleatoria alrededor de la línea azul (en cero). Se observa cierta tendencia en forma de curva o agrupamientos, especialmente en los extremos de los valores ajustados. Hay señales de que la relación entre las variables no es completamente lineal. También podría haber problemas de heterocedasticidad (la variabilidad de los residuos no es constante).

Normalidad de los residuos

hist(modelo1$residuals, col = "lightblue", main = "Histograma de residuos")

qqnorm(modelo1$residuals)
qqline(modelo1$residuals, col = "red")

Interpretacion: Si los residuos siguen una distribucion normal, el histograma tendra forma de campana y los puntos del QQ plot estaran alineados con la linea roja.

Para nuestros datos los residuos parecen no seguir una distribución normal (se nota cierta asimetría en el histograma). Los puntos no siguen perfectamente la línea roja (en particular en los extremos), lo que indica que los residuos no siguen una distribución normal. Esto es consistente con la asimetría observada en el histograma.

Pruebas adicionales

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.2
## Cargando paquete requerido: zoo
## Warning: package 'zoo' was built under R version 4.4.2
## 
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bptest(modelo1)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 2.365, df = 3, p-value = 0.5002
dwtest(modelo1)
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 0.53922, p-value = 3.378e-13
## alternative hypothesis: true autocorrelation is greater than 0

Interpretacion: - Breusch-Pagan (homocedasticidad): Si p > 0.05, no hay evidencia de heterocedasticidad. Para nuestro datos el valor p es mayor que 0.05, lo que indica que no hay evidencia suficiente para rechazar la hipótesis nula de homocedasticidad. Es decir, no hay evidencia de heterocedasticidad en el modelo, lo cual sugiere que la varianza de los residuos es constante a lo largo de las observaciones. - Durbin-Watson (autocorrelacion): Si el estadistico esta cerca de 2 y p > 0.05, los errores son independientes. Para nuestros datos el valor de Durbin-Watson (0.539) es muy cercano a 0, lo cual indica autocorrelación positiva en los residuos y el valor p es extremadamente bajo (3.378e-13), lo que indica que la autocorrelación es significativa y que debemos rechazar la hipótesis nula de ausencia de autocorrelación.

Multicolinealidad

Puede afectar la estabilidad de los coeficientes. Si dos o más variables independientes están muy correlacionadas entre sí, los estimadores pueden volverse inestables. Se evalúa con el VIF (Variance Inflation Factor).

install.packages(“car”) # Solo la primera vez library(car) vif(modelo)

VIF ≈ 1: No hay colinealidad.

VIF entre 1 y 5: Moderada colinealidad (aceptable).

VIF > 10: Colinealidad alta. Puede ser preocupante.

    vif_manual <- function(modelo1) {
  X <- model.matrix(modelo1)[, -1]
  sapply(1:ncol(X), function(i) {
    rsq <- summary(lm(X[, i] ~ X[, -i]))$r.squared
    1 / (1 - rsq)
  })
}

vif_manual(modelo1)
## [1] 259.67814 260.93482   1.17429

Interpretacion: Valores de VIF mayores a 5 indican colinealidad moderada; mayores a 10 indican colinealidad severa. Si los valores son bajos, no hay problema de multicolinealidad. Para Nuestros datos CA_ALIMENTO y VA_ALIMENTO tienen VIF extremadamente altos (mayores a 10, y mucho más grandes que 10). Esto sugiere que estas dos variables están altamente correlacionadas entre sí, lo que genera multicolinealidad en el modelo. NITRATOS tiene un VIF de 1.17, lo que indica que no presenta problemas de multicolinealidad con las otras variables.

Análisis de Varianza (ANOVA)

ANOVA (Analysis of Variance) permite comparar la variabilidad explicada por un modelo frente a la no explicada. En regresión, se usa para evaluar si el modelo completo es significativo, es decir, si al menos un predictor tiene efecto sobre la variable respuesta.

\[ F = \frac{\text{MSM}}{\text{MSR}} = \frac{\frac{\text{SSM}}{k}}{\frac{\text{SSR}}{n - k - 1}} \] Donde:

SSM: Suma de cuadrados del modelo

SSR: Suma de cuadrados del residuo

𝑘: número de predictores

𝑛: tamaño de muestra

Aplicación al modelo

anova(modelo1)
## Analysis of Variance Table
## 
## Response: PESO
##             Df  Sum Sq Mean Sq  F value Pr(>F)    
## CA_ALIMENTO  1 1246319 1246319 922.9597 <2e-16 ***
## VA_ALIMENTO  1    2085    2085   1.5438 0.2191    
## NITRATOS     1      12      12   0.0090 0.9247    
## Residuals   57   76970    1350                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Si el valor-p es menor a 0.05, se rechaza la hipótesis nula de que todos los coeficientes son cero, y se concluye que el modelo tiene poder explicativo.

Conclusión CA_ALIMENTO:El valor de F es muy alto, lo que indica que CA_ALIMENTO tiene un impacto significativo en la variable dependiente (PESO). El p-value es muy pequeño (< 0.001), lo que significa que podemos rechazar la hipótesis nula de que CA_ALIMENTO no afecta al PESO. Es una variable significativa en el modelo.

VA_ALIMENTO:El F value es relativamente bajo, lo que sugiere que VA_ALIMENTO tiene un impacto débil sobre el PESO. El p-value de 0.2191 es mayor que 0.05, lo que indica que no podemos rechazar la hipótesis nula de que VA_ALIMENTO no afecta al PESO. Por lo tanto, VA_ALIMENTO no es una variable significativa en el modelo.

NITRATOS:El F value extremadamente bajo y el p-value mayor a 0.05 indican que NITRATOS no tiene un efecto significativo sobre el PESO. En este caso, no podemos rechazar la hipótesis nula, lo que significa que NITRATOS no es una variable significativa en el modelo.

Suma de cuadrados residuales =Estos valores representan la variabilidad no explicada por el modelo, es decir, el error o la diferencia entre los valores observados y los predichos. La cantidad de residuos muestra la precisión del modelo.

Conclusion: CA_ALIMENTO es la única variable significativa en el modelo y tiene un gran impacto en la predicción del peso. VA_ALIMENTO y NITRATOS no son variables significativas en el modelo actual, ya que no tienen efectos estadísticamente significativos sobre el peso.

Análisis de Varianza (ANOVA)

El análisis de varianza (ANOVA) permite evaluar si el modelo de regresión múltiple en su conjunto es estadísticamente significativo. Compara la variabilidad explicada por el modelo con la variabilidad residual no explicada.

\[ F = \frac{\text{MSM}}{\text{MSR}} = \frac{\frac{\text{SSM}}{k}}{\frac{\text{SSR}}{n - k - 1}} \]

Donde:

Representa la variabilidad de la variable dependiente que es explicada por el conjunto de predictores del modelo. Cuanto mayor es el SSM, mayor es la parte de la variabilidad total que se puede explicar a través del modelo.

Mide la variabilidad que no se logra explicar con el modelo; en otras palabras, es la suma de las desviaciones de las observaciones a la línea de regresión (o a los valores predichos). Una SSR pequeña indica que el modelo se ajusta bien a los datos.

Cálculo de las Medias Cuadráticas Para poder comparar de forma equitativa la variabilidad explicada y la no explicada, se dividen las sumas de cuadrados por sus respectivos grados de libertad, obteniéndose así las medias cuadráticas:

Establecimiento de la Prueba F La razón de F se define como la relación entre las dos medias cuadráticas: \[ F = \frac{\text{MSM}}{\text{MSR}} = \frac{\frac{\text{SSM}}{k}}{\frac{\text{SSR}}{n - k - 1}} \] se utiliza para probar la hipótesis nula de que todos los coeficientes de regresión (excepto el intercepto) son cero. Es decir:

Hipótesis nula \(H_0\): Ninguno de los predictores tiene un efecto significativo sobre la variable dependiente (el modelo no explica la variabilidad).

Hipótesis alternativa \(H_a\): Al menos uno de los predictores tiene un efecto significativo.

Interpretación del Valor F

Valor F Alto: Indica que la variabilidad explicada por el modelo es considerablemente mayor que la variabilidad residual. Esto sugiere que al menos uno de los predictores contribuye significativamente a explicar la variable dependiente, y, por lo tanto, el modelo en su conjunto es estadísticamente significativo.

Valor F Bajo: Sugiere que la variabilidad explicada es similar a la residuo, lo que implicaría que los predictores no mejoran significativamente el ajuste del modelo en comparación con un modelo sin predictores.

El análisis ANOVA en regresión múltiple permite, a través de la comparación de las medias cuadráticas, determinar si el modelo tiene la capacidad de explicar una parte significativa de la variación observada en los datos. Un valor F elevado y estadísticamente significativo (según un umbral de p-valor preestablecido, generalmente 0.05) rechaza la hipótesis nula y confirma que el modelo tiene un poder explicativo importante.

anova(modelo1)
## Analysis of Variance Table
## 
## Response: PESO
##             Df  Sum Sq Mean Sq  F value Pr(>F)    
## CA_ALIMENTO  1 1246319 1246319 922.9597 <2e-16 ***
## VA_ALIMENTO  1    2085    2085   1.5438 0.2191    
## NITRATOS     1      12      12   0.0090 0.9247    
## Residuals   57   76970    1350                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Análisis de Varianza (ANOVA)

La tabla ANOVA contiene los siguientes elementos:

Nota: ### ¿Qué significa Df (Degrees of Freedom)?

Los grados de libertad representan la cantidad de información independiente disponible para estimar una cierta cantidad de variabilidad.


Los grados de libertad () indican cuántos valores pueden variar libremente antes de que se imponga una restricción (como una media o un coeficiente a estimar).


En la tabla ANOVA:

  • Para cada predictor en el modelo (\(CA_ALIMENTO, VA_ALIMENTO, NITRATOS\)), el grado de libertad es \(1\), porque cada uno añade un parámetro (su coeficiente).
  • Para los residuos, el número de grados de libertad es:

\(Df_{residuos} = n - k - 1\)

donde:

  • \(n\): número total de observaciones
  • \(k\): número de predictores
  • El \(-1\) se debe al intercepto del modelo

Ejemplo práctico

En el modelo lm(PESO ~ CA_ALIMENTO + VA_ALIEMTO + NITRATOS) con 61 observaciones:

  • $ n = 61$
  • $k = 3 $

Entonces:

  • Grados de libertad del modelo: \(3\)
  • Grados de libertad de los residuos:

\(61 - 3 - 1 = 57\)

Interpretación de resultados

Interpretación de la Tabla ANOVA

El análisis de varianza (ANOVA) ayuda a determinar si las variables independientes explican de manera significativa la variabilidad en la variable dependiente (en este caso, PESO).

VA_ALIMENTO y NITRATOS no son variables significativas, ya que sus valores p son mayores que 0.05. Esto sugiere que no aportan información relevante para explicar el PESO.

El modelo podría mejorarse eliminando las variables no significativas (VA_ALIMENTO y NITRATOS) para hacerlo más eficiente.

Conclusion

El modelo tiene un buen ajuste general con un R² de 0.942, lo que significa que explica el 94.2% de la variabilidad en el peso. Sin embargo, este valor podría estar sobreajustado debido a la alta multicolinealidad entre las variables. Se ha detectado una alta multicolinealidad entre las variables CA_ALIMENTO y VA_ALIMENTO (con VIFs superiores a 250), lo que indica que estas dos variables están fuertemente correlacionadas. Esta alta colinealidad puede afectar la precisión de las estimaciones de los coeficientes y hacer que el modelo sea menos confiable. Las variables CA_ALIMENTO, VA_ALIMENTO y NITRATOS no son estadísticamente significativas en la predicción del peso, ya que sus valores p son altos (mayores a 0.05). Esto sugiere que estas variables no tienen un impacto importante sobre el peso en el modelo actual, lo que podría ser debido a la multicolinealidad entre ellas.

Nota: Por las caracteristicas de los datos que no cumplen con una tendencia linela, cualquier modelo de regeresion no es apto para analizar los datos de esta investigacion, ya que los valores de las variables se mueven en un rango que es controlado por agentes externos.