Preparación y carga de los datos

#Cargar librerías necesarias
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readr)
library(ggplot2)

# Cargar los datos
maiz <- read_csv("C:/Users/Outlet VL/Downloads/BaseTp2.csv", show_col_types = FALSE)
# Explorar estructura de los datos
glimpse(maiz)
## Rows: 50
## Columns: 2
## $ DOSIS_N        <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 5…
## $ DIAMETRO_TALLO <dbl> 8.371554, 11.496018, 10.424468, 7.740558, 9.132100, 12.…
summary(maiz)
##     DOSIS_N    DIAMETRO_TALLO 
##  Min.   :  0   Min.   : 6.36  
##  1st Qu.: 50   1st Qu.:14.34  
##  Median :100   Median :16.92  
##  Mean   :100   Mean   :16.02  
##  3rd Qu.:150   3rd Qu.:18.71  
##  Max.   :200   Max.   :21.59
# Gráfico de dispersión
ggplot(maiz, aes(x = DOSIS_N, y = DIAMETRO_TALLO)) +
  geom_point(size = 3, alpha = 0.6, color = "steelblue") +
  geom_smooth(method = "lm", formula = y ~ x, 
              color = "red", se = FALSE) +
  labs(title = "Relacion entre dosis de nitrogeno y diametro del tallo",
       x = "Dosis de nitrogeno (kg/ha)",
       y = "Diametro del tallo (mm)") +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(hjust = 0.5))

Modelado

# Ajustar modelo lineal
modelo_lineal <- lm(DIAMETRO_TALLO ~ DOSIS_N, data = maiz)
summary(modelo_lineal)
## 
## Call:
## lm(formula = DIAMETRO_TALLO ~ DOSIS_N, data = maiz)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.5481 -1.5960  0.2347  1.4300  4.3449 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 11.908075   0.598242  19.905  < 2e-16 ***
## DOSIS_N      0.041118   0.004885   8.418 5.18e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.442 on 48 degrees of freedom
## Multiple R-squared:  0.5962, Adjusted R-squared:  0.5878 
## F-statistic: 70.86 on 1 and 48 DF,  p-value: 5.182e-11
# Coeficientes
coef(modelo_lineal)
## (Intercept)     DOSIS_N 
## 11.90807482  0.04111832
# R² ajustado
summary(modelo_lineal)$adj.r.squared
## [1] 0.5877542
# AIC y BIC
AIC(modelo_lineal)
## [1] 235.1473
BIC(modelo_lineal)
## [1] 240.8834
# Ajustar modelo cuadrático
modelo_cuad <- lm(DIAMETRO_TALLO ~ DOSIS_N + I(DOSIS_N^2), data = maiz)
summary(modelo_cuad)
## 
## Call:
## lm(formula = DIAMETRO_TALLO ~ DOSIS_N + I(DOSIS_N^2), data = maiz)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2288 -1.1872 -0.1897  1.3319  3.3898 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   9.9979513  0.5467262  18.287  < 2e-16 ***
## DOSIS_N       0.1175233  0.0129528   9.073 6.71e-12 ***
## I(DOSIS_N^2) -0.0003820  0.0000621  -6.151 1.59e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.837 on 47 degrees of freedom
## Multiple R-squared:  0.7763, Adjusted R-squared:  0.7668 
## F-statistic: 81.54 on 2 and 47 DF,  p-value: 5.224e-16
# Coeficientes
coef(modelo_cuad)
##   (Intercept)       DOSIS_N  I(DOSIS_N^2) 
##  9.9979513105  0.1175232637 -0.0003820247
# R² ajustado
summary(modelo_cuad)$adj.r.squared
## [1] 0.7667618
# AIC y BIC
AIC(modelo_cuad)
## [1] 207.6167
BIC(modelo_cuad)
## [1] 215.2648

Comparación de los modelos

# Comparación de modelos
anova(modelo_lineal, modelo_cuad)
## Analysis of Variance Table
## 
## Model 1: DIAMETRO_TALLO ~ DOSIS_N
## Model 2: DIAMETRO_TALLO ~ DOSIS_N + I(DOSIS_N^2)
##   Res.Df    RSS Df Sum of Sq     F    Pr(>F)    
## 1     48 286.31                                 
## 2     47 158.62  1     127.7 37.84 1.588e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Tabla resumen de métricas
data.frame(
  Modelo = c("Lineal", "Cuadrático"),
  R2_ajustado = c(summary(modelo_lineal)$adj.r.squared, 
                 summary(modelo_cuad)$adj.r.squared),
  AIC = c(AIC(modelo_lineal), AIC(modelo_cuad)),
  BIC = c(BIC(modelo_lineal), BIC(modelo_cuad))
)
##       Modelo R2_ajustado      AIC      BIC
## 1     Lineal   0.5877542 235.1473 240.8834
## 2 Cuadrático   0.7667618 207.6167 215.2648

Representación de ambos modelos

# Gráfico con ambos modelos
ggplot(maiz, aes(x = DOSIS_N, y = DIAMETRO_TALLO)) +
  geom_point(size = 3, alpha = 0.7) +
  geom_smooth(method = "lm", formula = y ~ x, 
              aes(color = "Lineal"), se = FALSE) +
  geom_smooth(method = "lm", formula = y ~ x + I(x^2), 
              aes(color = "Cuadr\u00E1tico"), se = FALSE) +
  scale_color_manual(values = c("Lineal" = "blue", "Cuadr\u00E1tico" = "red")) +
  labs(title = "Comparaci\u00F3n de modelos lineal y cuadr\u00E1tico",
       x = "Dosis de nitr\u00F3geno (kg/ha)",
       y = "Di\u00E1metro del tallo (mm)",
       color = "Modelo") +
  theme_minimal() +
  theme(legend.position = "top")

Predicción

# Predicción con modelo lineal
predict(modelo_lineal, newdata = data.frame(DOSIS_N = 125))
##        1 
## 17.04787
# Predicción con modelo cuadrático
predict(modelo_cuad, newdata = data.frame(DOSIS_N = 125))
##        1 
## 18.71922

CONCLUSIONES

Modelo Lineal: Ecuación: DIAMETRO_TALLO = r round(coef(modelo_lineal)[1], 2) + r round(coef(modelo_lineal)[2], 4) * DOSIS_N R² ajustado: r round(summary(modelo_lineal)$adj.r.squared, 2) AIC: r round(AIC(modelo_lineal), 1) BIC: r round(BIC(modelo_lineal), 1)

Modelo Cuadrático: Ecuación: DIAMETRO_TALLO = r round(coef(modelo_cuad)[1], 2) + r round(coef(modelo_cuad)[2], 4) * DOSIS_N + r round(coef(modelo_cuad)[3], 5) * DOSIS_N² R² ajustado: r round(summary(modelo_cuad)$adj.r.squared, 2) AIC: r round(AIC(modelo_cuad), 1) BIC: r round(BIC(modelo_cuad), 1)

Comparación: El modelo cuadrático muestra un mejor ajuste según: Mayor R² ajustado (r round(summary(modelo_cuad)\(adj.r.squared, 2) vs r round(summary(modelo_lineal)\)adj.r.squared, 2)) Menor AIC (r round(AIC(modelo_cuad), 1) vs r round(AIC(modelo_lineal), 1)) La prueba ANOVA muestra que el término cuadrático aporta significativamente al modelo (p = r round(anova(modelo_lineal, modelo_cuad)$Pr(>F)[2], 4))

Predicción para 125 kg/ha: Modelo lineal: r round(predict(modelo_lineal, newdata = data.frame(DOSIS_N = 125)), 2) mm Modelo cuadrático: r round(predict(modelo_cuad, newdata = data.frame(DOSIS_N = 125)), 2) mm

Conclusión: El modelo cuadrático es más adecuado para describir la relación entre la dosis de nitrógeno y el diámetro del tallo en plantas de maíz. La relación no es estrictamente lineal, sino que muestra una curvatura que el modelo cuadrático captura mejor.