library(readxl)
library(tidyverse)
library(lmtest)
MAIZ_FERTILIZANTE <- read_csv("c:/Users/castro.ornella/Documents/MAIZ_FERTILIZANTE.csv")
MAIZ_FERTILIZANTE <- read_excel("MAIZ_FERTILIZANTE.xlsx")
str(MAIZ_FERTILIZANTE)
## tibble [50 × 2] (S3: tbl_df/tbl/data.frame)
## $ DOSIS_N : num [1:50] 0 0 0 0 0 0 0 0 0 0 ...
## $ DIAMETRO_TALLO: num [1:50] 8.37e+15 1.15e+16 1.04e+16 7.74e+15 9.13e+15 ...
dim(MAIZ_FERTILIZANTE)
## [1] 50 2
head(MAIZ_FERTILIZANTE)
## # A tibble: 6 × 2
## DOSIS_N DIAMETRO_TALLO
## <dbl> <dbl>
## 1 0 8.37e15
## 2 0 1.15e16
## 3 0 1.04e16
## 4 0 7.74e15
## 5 0 9.13e15
## 6 0 1.25e16
dim(MAIZ_FERTILIZANTE)
## [1] 50 2
names(MAIZ_FERTILIZANTE)
## [1] "DOSIS_N" "DIAMETRO_TALLO"
summary(MAIZ_FERTILIZANTE)
## DOSIS_N DIAMETRO_TALLO
## Min. : 0 Min. :1.851e+14
## 1st Qu.: 50 1st Qu.:2.142e+15
## Median :100 Median :1.401e+16
## Mean :100 Mean :1.129e+16
## 3rd Qu.:150 3rd Qu.:1.719e+16
## Max. :200 Max. :2.039e+16
str(MAIZ_FERTILIZANTE)
## tibble [50 × 2] (S3: tbl_df/tbl/data.frame)
## $ DOSIS_N : num [1:50] 0 0 0 0 0 0 0 0 0 0 ...
## $ DIAMETRO_TALLO: num [1:50] 8.37e+15 1.15e+16 1.04e+16 7.74e+15 9.13e+15 ...
ggplot(MAIZ_FERTILIZANTE, aes(x = DOSIS_N, y = DIAMETRO_TALLO)) +
geom_point() +
labs(title = "Relación entre DOSIS_N y DIAMETRO_TALLO") +
theme_minimal()
MODELO_lineal <- lm(DIAMETRO_TALLO ~ DOSIS_N, data = MAIZ_FERTILIZANTE)
summary(MODELO_lineal)
##
## Call:
## lm(formula = DIAMETRO_TALLO ~ DOSIS_N, data = MAIZ_FERTILIZANTE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.109e+16 -8.169e+15 2.231e+15 6.299e+15 9.591e+15
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.227e+16 1.715e+15 7.156 4.25e-09 ***
## DOSIS_N -9.803e+12 1.400e+13 -0.700 0.487
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.001e+15 on 48 degrees of freedom
## Multiple R-squared: 0.01011, Adjusted R-squared: -0.01051
## F-statistic: 0.4902 on 1 and 48 DF, p-value: 0.4872
library(lmtest)
modelo_cuadratico <- lm(DIAMETRO_TALLO ~ DOSIS_N + I(DOSIS_N^2),
data = MAIZ_FERTILIZANTE)
summary(modelo_cuadratico)
##
## Call:
## lm(formula = DIAMETRO_TALLO ~ DOSIS_N + I(DOSIS_N^2), data = MAIZ_FERTILIZANTE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.378e+16 -5.473e+15 1.474e+15 4.032e+15 1.125e+16
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.575e+15 1.989e+15 4.815 1.57e-05 ***
## DOSIS_N 9.806e+13 4.711e+13 2.081 0.0429 *
## I(DOSIS_N^2) -5.393e+11 2.259e+11 -2.388 0.0210 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.682e+15 on 47 degrees of freedom
## Multiple R-squared: 0.1172, Adjusted R-squared: 0.07961
## F-statistic: 3.119 on 2 and 47 DF, p-value: 0.05346
coef_lineal <- coef(MODELO_lineal)
coef_lineal
## (Intercept) DOSIS_N
## 1.227115e+16 -9.803154e+12
ecuacion_lineal <- paste0("DIAMETRO_TALLO = ",
round(coef_lineal[1], 3), " + ",
round(coef_lineal[2], 3), " * DOSIS_N")
ecuacion_lineal
## [1] "DIAMETRO_TALLO = 12271152519754880 + -9803153676623.7 * DOSIS_N"
##Ecuación del modelo:
###DIAM.ECUATORIAL=12271152519754880 - 9803153676623.7 * DOSIS_N
###Interpretación: Intercepto (12271152519754880): Es el diámetro ecuatorial (mm) estimado cuando el peso es 0 gramos.Pendiente (9803153676623.7): Por cada gramo adicional de peso, se espera que el diámetro aumente en promedio 9803153676623.7 mm.
coef_cuad <- coef(modelo_cuadratico)
coef_cuad
## (Intercept) DOSIS_N I(DOSIS_N^2)
## 9.574698e+15 9.805504e+13 -5.392910e+11
ecuacion_cuad <- paste0("DIAMETRO_TALLO = ",
round(coef_cuad[1], 3), " + ",
round(coef_cuad[2], 3), " * DOSIS_N + ",
round(coef_cuad[3], 6), " * DOSIS_N^2")
ecuacion_cuad
## [1] "DIAMETRO_TALLO = 9574697618312242 + 98055042381081.3 * DOSIS_N + -539290980288.525 * DOSIS_N^2"
###DIAMETRO_TALLO = 9574697618312242 + 98055042381081.3 * DOSIS_N + -539290980288.525 * DOSIS_N^2”
##Interpretación: ### 9574697618312242 (el intercepto) representa el valor esperado del diámetro ecuatorial cuando el peso es 0. ### 98055042381081.3 es el coeficiente lineal asociado a peso: indica cómo varía DIAM_ECUAT por unidad de aumento en peso. ### -539290980288.525 es el coeficiente cuadrático asociado a peso: determina la curvatura de la relación, que por su valor negativo es cóncava hacia abajo.El término cuadrático negativo indica que la relación entre PESO y DIAM_ECUAT es curva cóncava: el diámetro aumenta con el peso, pero llega a un punto máximo y luego disminuye.
summary(MODELO_lineal)$adj.r.squared
## [1] -0.01051423
summary(modelo_cuadratico)$adj.r.squared
## [1] 0.07961218
AIC(MODELO_lineal); BIC(MODELO_lineal)
## [1] 3794.337
## [1] 3800.073
BIC(modelo_cuadratico); BIC(modelo_cuadratico)
## [1] 3798.261
## [1] 3798.261
AIC(MODELO_lineal, modelo_cuadratico)
## df AIC
## MODELO_lineal 3 3794.337
## modelo_cuadratico 4 3790.613
BIC(MODELO_lineal, modelo_cuadratico)
## df BIC
## MODELO_lineal 3 3800.073
## modelo_cuadratico 4 3798.261
comparacion_modelos <- tibble(
Modelo = c("Lineal", "Cuadrático"),
R2_Ajustado = c(summary(MODELO_lineal)$adj.r.squared,
summary(modelo_cuadratico)$adj.r.squared),
AIC = c(AIC(MODELO_lineal), AIC(modelo_cuadratico)),
BIC = c(BIC(MODELO_lineal), BIC(modelo_cuadratico))
)
comparacion_modelos
## # A tibble: 2 × 4
## Modelo R2_Ajustado AIC BIC
## <chr> <dbl> <dbl> <dbl>
## 1 Lineal -0.0105 3794. 3800.
## 2 Cuadrático 0.0796 3791. 3798.
más apropiado.El modelo lineal presenta un ajsute bajo (R² ajustado = -0.01051423), pero no es el más eficiente en términos de los criterios AIC y BIC. El modelo cuadrático mejora ligeramente el R², lo que pemrite explicar de mejor menara, y presenta menores valores de AIC y BIC. El modelo mas apropiadao sería el cuadrático, porque brinda una mejor capacidad explicativa en la misma escala de las variables originales.
cuadrático).
ggplot(MAIZ_FERTILIZANTE, aes(x = DOSIS_N, y = DIAMETRO_TALLO)) +
geom_point(size = 2, alpha = 0.5, color = "black") +
geom_smooth(method = "lm", formula = y ~ x, se = FALSE,
color = "green", size = 1.2) + # Lineal
geom_smooth(method = "lm", formula = y ~ poly(x, 2, raw = TRUE), se = FALSE,
color = "red", size = 1.2) + # Cuadrático
labs(title = "Modelos ajustados: Lineal (verde) y Cuadrático (rojo)",
x = "Dosis de N (kg/ha)",
y = "Diámetro del tallo (mm)") +
theme_minimal()
nueva_dosis <- data.frame(DOSIS_N = 125)
pred_lineal <- predict(MODELO_lineal, newdata = nueva_dosis, interval = "confidence")
pred_cuad <- predict(modelo_cuadratico, newdata = nueva_dosis, interval = "confidence")
list(
"Predicción Modelo Lineal" = pred_lineal,
"Predicción Modelo Cuadrático" = pred_cuad
)
## $`Predicción Modelo Lineal`
## fit lwr upr
## 1 1.104576e+16 8.934264e+15 1.315725e+16
##
## $`Predicción Modelo Cuadrático`
## fit lwr upr
## 1 1.340516e+16 1.057363e+16 1.623668e+16