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>
Queremos predecir la ganancia de peso (PESO
) a partir de
tres variables:
CA_ALIMENTO
: temperatura del agua del estanqueVA_ALIMENTO
: nivel de ph del aguaNITRATOS
: nivel de amonios en el agua del estanquemodelo1 <- 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
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:
p = 0.00133
).p = 0.2256
).p = 0.9247
).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
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).
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.
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.
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.
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
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.
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.
\(k\): Número de
predictores
Es la cantidad de variables independientes utilizadas en el modelo. Cada
predictor aporta un grado de libertad al SSM.
\(n\): Número total de
observaciones
Corresponde al tamaño muestral, y afecta el cálculo de los grados de
libertad tanto para el modelo como para el residuo.
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:
\(\text{MSM}\): Media cuadrática
del modelo
Se calcula dividiendo el SSM entre el número de predictores Esto
representa el promedio de variabilidad explicada por cada
predictor.
\(\text{MSR}\): Media cuadrática
del residuo
Se calcula dividiendo el SSR entre los grados de libertad del residuo,
que es \(n−k−1\)
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.
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
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).
\(Df_{residuos} = n - k - 1\)
donde:
En el modelo
lm(PESO ~ CA_ALIMENTO + VA_ALIEMTO + NITRATOS)
con 61
observaciones:
Entonces:
\(61 - 3 - 1 = 57\)
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).
CA_ALIMENTO
(Cantidad de alimento
sumunistrado): F value = 922.96: El valor de F es muy alto, lo
que indica que CA_ALIMENTO tiene un impacto significativo en la variable
dependiente (PESO). p-value = <2e-16: El valor p es extremadamente
pequeño, lo que significa que CA_ALIMENTO es estadísticamente
significativo en el modelo. Es decir, podemos rechazar la hipótesis nula
de que CA_ALIMENTO no afecta al PESO. La influencia de esta variable
sobre el peso es fuerte y significativa.
VA_ALIMENTO
(Valor del alimento
suministrado): F value = 1.54: El valor de F es bajo, lo que
sugiere que VA_ALIMENTO no tiene un gran impacto en el PESO. p-value =
0.2191: El valor p es mayor que 0.05, lo que significa que no podemos
rechazar la hipótesis nula de que VA_ALIMENTO no afecta al PESO. En este
caso, VA_ALIMENTO no es una variable significativa para predecir el
PESO.
NITRATOS
(Nivel de nitratos en el cuerpo de
agua): F value = 0.01: Este es un valor de F extremadamente
bajo, lo que indica que NITRATOS tiene un impacto casi nulo sobre el
PESO. p-value = 0.9247: El valor p es mayor que 0.05, lo que indica que
NITRATOS no es significativo en la predicción del PESO. Similar a
VA_ALIMENTO, no podemos concluir que tenga un efecto
importante.
Residuals
(residuos):Suma de
cuadrados = 76970: La variabilidad no explicada por el modelo. Este
valor representa el error o la diferencia entre los valores predichos y
los valores reales y cuadrado medio residual = 1350: Este valor refleja
la variabilidad promedio de los residuos, es decir, cuán lejos están, en
promedio, los valores observados de los predichos por el modelo. ###
Conclusión CA_ALIMENTO es la única variable significativa en el modelo,
con un fuerte impacto en el PESO. El p-value extremadamente bajo muestra
que tiene una influencia significativa.
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.
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.