library(readxl)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.1 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.3 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.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(agriutilities)
library(ggplot2)
# Cargar datos del archivo excel
datos_parcelas <- read_excel("datos_parcelas.xlsx")
# Visualizar el dataframe
head(datos_parcelas)
## # A tibble: 6 × 57
## ID Muestra Finca Descripcion pH MO P Ca Mg K CIC
## <dbl> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 1 Las Veran… CAR001 4.44 5.51 4.87 0.77 0.27 0.07 17.7
## 2 2 2 Las Veran… CAR002 4.4 6.28 3.61 1.39 0.95 0.46 20.1
## 3 3 3 Las Veran… CAR003 5.09 7.39 7.96 1.66 0.29 0.42 24.4
## 4 4 4 Las Veran… CAR004 5.41 6.27 2.88 2.74 1.32 0.81 24.4
## 5 5 5 Las Veran… CAR005 5.03 5.80 1.75 0.49 0.73 0.09 22.0
## 6 6 6 Las Veran… CAR006 5.16 6.53 2.02 1.54 1.48 0.15 27.5
## # ℹ 46 more variables: Fe <dbl>, Mn <dbl>, Cu <dbl>, Zn <dbl>, B <dbl>,
## # S <dbl>, CE <dbl>, N <dbl>, D_APAREN <dbl>, D_REAL <dbl>, Porosidad <dbl>,
## # Macroporos <dbl>, Mesoporos <dbl>, Microporos <dbl>, Hum_campo <dbl>,
## # Hum_grav_Sat <dbl>, Hum_vol_Sat <dbl>, C.C <dbl>, PMP <dbl>, CHS <dbl>,
## # Infiltracion <dbl>, LAA <dbl>, `_>6.3 mm` <dbl>, `_6-4mm` <dbl>,
## # `_4-2mm` <dbl>, `_2-1mm` <dbl>, `_1-0.5mm` <dbl>, `_0.5-0.25mm` <dbl>,
## # `_0.25-0.125mm` <dbl>, `_<0.125mm` <dbl>, Est_agre_sin_arenas <dbl>, …
# Desplegar los nombres de las columnas del dataframe
names(datos_parcelas)
## [1] "ID"
## [2] "Muestra"
## [3] "Finca"
## [4] "Descripcion"
## [5] "pH"
## [6] "MO"
## [7] "P"
## [8] "Ca"
## [9] "Mg"
## [10] "K"
## [11] "CIC"
## [12] "Fe"
## [13] "Mn"
## [14] "Cu"
## [15] "Zn"
## [16] "B"
## [17] "S"
## [18] "CE"
## [19] "N"
## [20] "D_APAREN"
## [21] "D_REAL"
## [22] "Porosidad"
## [23] "Macroporos"
## [24] "Mesoporos"
## [25] "Microporos"
## [26] "Hum_campo"
## [27] "Hum_grav_Sat"
## [28] "Hum_vol_Sat"
## [29] "C.C"
## [30] "PMP"
## [31] "CHS"
## [32] "Infiltracion"
## [33] "LAA"
## [34] "_>6.3 mm"
## [35] "_6-4mm"
## [36] "_4-2mm"
## [37] "_2-1mm"
## [38] "_1-0.5mm"
## [39] "_0.5-0.25mm"
## [40] "_0.25-0.125mm"
## [41] "_<0.125mm"
## [42] "Est_agre_sin_arenas"
## [43] "Arcilla"
## [44] "Limo"
## [45] "Arena"
## [46] "Ind_plast"
## [47] "% CO"
## [48] "% CO Fracción>75um"
## [49] "% CO Fracción>53um"
## [50] "% CO Fracción<53um"
## [51] "K-USLE"
## [52] "K USLE MO>75um"
## [53] "K USLE MO>53um"
## [54] "K USLE MO<53um"
## [55] "Perdidas de suelo-USLE (t/ha)"
## [56] "Perdidas suelos parcelas escorrentía (t/ha)"
## [57] "Perdidas Parcelas Adjusted"
# MO por finca
ggplot(datos_parcelas, aes(x = Finca, y = MO)) +
geom_boxplot(fill = "skyblue") +
labs(title = "Variabilidad de MO por finca",
x = "Finca",
y = "Materia Orgánica (MO)") +
theme_minimal() +
theme(legend.position = "none",
axis.text.x = element_text(angle = 45, hjust = 1))
# N por finca
ggplot(datos_parcelas, aes(x = Finca, y = N)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Variabilidad de N por finca",
x = "Finca",
y = "Nitrógeno (N)") +
theme_minimal() +
theme(legend.position = "none",
axis.text.x = element_text(angle = 45, hjust = 1))
Los diagramas de cajas indican que tanto la materia orgánica (MO) como el nitrógeno (N) muestran variabilidad justo porque existen diferencias entre las fincas, lo que refleja que las condiciones del suelo no son uniformes entre las parcelas.
Algunas fincas presentan un mayor rango en los diagramas de cajas, denotando una mayor heterogeneidad en los valores, mientras que otras fincas muestran distribuciones más uniformes. De hecho, la posible presencia de valores atípicos puede estar relacionada con ciertas propiedades del suelo o diferencias en el mismo manejo agronómico. En conclusión, estos resultados muestran que tanto la MO como el N dependen de las condiciones específicas de cada finca, lo que demuestra la importancia que tiene la variabilidad en el análisis del suelo.
# Diagrama de dispersión con regresión
ggplot(datos_parcelas, aes(x = N, y = MO)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = TRUE, color = "red") +
labs(title = "Relación entre MO y N",
x = "Nitrógeno (N)",
y = "Materia Orgánica (MO)") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
La gráfica de dispersión por puntos indica una clara relación positiva entre los valores del nitrógeno (N) y la materia orgánica (MO), de manera que, a medida que los valores de N son cada vez mayores, los valores de MO también tienden a ser mayores.
Los puntos de la gráfica alrededor de la línea de regresión indican que hay una relación fuerte entre las dos variables, con una tendencia lineal muy definida y una baja dispersión relativa. Esto implica que el modelo de regresión lineal es adecuado para describir la relación entre el nitrógeno y la materia orgánica.
La gráfica indica que el nitrógeno es un buen factor pronosticador de la materia orgánica en el suelo.
# 3. Modelo de regresión
modelo_MO_N <- lm(MO ~ N, data = datos_parcelas)
summary(modelo_MO_N)
##
## Call:
## lm(formula = MO ~ N, data = datos_parcelas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5890 -0.6669 -0.0077 0.6062 3.7741
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.009e+00 2.186e-01 4.614 8.05e-06 ***
## N 2.712e-03 8.688e-05 31.213 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.28 on 160 degrees of freedom
## Multiple R-squared: 0.8589, Adjusted R-squared: 0.8581
## F-statistic: 974.2 on 1 and 160 DF, p-value: < 2.2e-16
# Mostrar coeficientes (ecuación)
coef(modelo_MO_N)
## (Intercept) N
## 1.008567269 0.002711884
La ecuación de ajuste resultó de la siguiente forma, MO = 1.0086 + 0.00271·N, que muestra la relación lineal entre el N y la MO. El intercepto es lo suficientemente indicativo como para afirmar que si el N = 0, la MO tendrá un valor de 1.0086.
Por otro lado, el coeficiente asociado al N indica que el incremento de la MO será de 0.00271 unidades adicionales por cada unidad de N que se aplique, lo que indica como se comporta la relación entre las variables N y MO.
En este sentido, la ecuación permite estimar valores de MO a partir de los datos del N, por lo que puede considerarse como una herramienta muy útil para la predicción entre los datos analizados. Sin embargo hay que tener en cuenta que el modelo ofrecido en este caso solo tiene en cuenta el nitrógeno (N) como único factor determinante en los valores de MO, por lo que para desarrollar un modelo más completo se deben tener en cuenta más variables que puedan ser significativas en comparación a la variabilidad de MO.
# 4. ANOVA
anova(modelo_MO_N)
## Analysis of Variance Table
##
## Response: MO
## Df Sum Sq Mean Sq F value Pr(>F)
## N 1 1595.20 1595.20 974.23 < 2.2e-16 ***
## Residuals 160 261.98 1.64
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El análisis de varianza (ANOVA) muestra que el modelo de regresión es altamente significativo (F = 974.23; p < 2.2e-16). Esto significa que el nitrógeno (N) tiene un efecto estadísticamente significativo sobre la materia orgánica (MO).
Adicionalmente, el R² indicada por el modelo en comparación con los residuos indica que una alta proporción de la variabilidad de la MO es explicada por el nitrógeno, de forma que se concluye que el modelo lineal ajustado es adecuado para describir la relación entre estas variables.