Analisis de la falta de agua para la agricultura
Introduccion
El desarrollo de la actividad agrÃcola en el estado de Sonora se sustenta en la tenacidad de sus productores, quienes han sabido superar las adversidades del clima extremoso de su desierto, logrando posicionar sus productos en los mercados más exigentes, lo cual ha sido posible gracias a la atención e importancia que se le ha dado a los aspectos fitosanitario, de inocuidad y en los procesos de poscosecha, temas en los cuales el gobierno estatal ha apoyado a los organismos de productores para acceder a mejores condiciones de mercado. Sonora, también destaca por sus volúmenes de producción y calidad de sus productos, ostentando el primer lugar en la producción de: trigo, espárrago, vid de mesa, papa, sandÃa, calabacita, calabaza, cártamo, olivo y uva pasa; en segundo lugar, garbanzo y otras hortalizas.
La investigación y la transferencia de la tecnologÃa han jugado un papel importante en el desarrollo agrÃcola de la entidad, lo que ha permitido que se obtengan altos niveles de productividad y calidad de los productos comercializados. Otro de los aspectos que ha sido de vital importancia para el desarrollo agrÃcola del estado, dándole sustentabilidad al sector, lo constituye el uso y manejo del recurso agua para riego, el cual actualmente se está operando con una eficiencia del treinta y ocho por ciento.
Antecedentes
Este análisis agrÃcola está enfocado en las sequÃas que han estado presentes desde el año pasado 2020 hasta la actualidad. Como sabemos, para que cierto cultivo brinde frutos y crezca lo suficiente como para poder decir que es una planta sana, se necesitan de ciertos cuidados, mantenimiento pero sobre todo el agua.
Nacionalmente, Sonora es lÃder nacional en exportaciones del agro, el trigo de Sonora representa 38% de la superficie cultivada en México y 50% de la producción nacional. Los rendimientos están 30% por arriba del promedio nacional y 121% por arriba del rendimiento mundial, de acuerdo con datos de la Organización de las Naciones Unidas para la Alimentación y la Agricultura (FAO). En la región Yaqui-Mayo abunda la siembra de trigo, el cultivo de trigo requiere de suelos sueltos con buen drenaje y con un pH de entre 5,5 y 7 y no soporta los terrenos arenosos o turbosos con acidez elevada. La temperatura óptima de germinación es de 20-25º C y se necesitan de 450 a 550 litros de agua para producir 1 kilo de materia seca.
Con datos recolectados en noticias, bases de datos y experiencia agrÃcola veremos como esta sequÃa ha afectado la producción, el dinero que se requiere para poder salvar estos cultivos y como se debe tratar en estas circunstancias.
Analisis de datos
Correlacion lineal
library(readr)
SequiasSon <- read_csv("SequiasSon.csv")## Warning: Missing column names filled in: 'X301' [301]
##
## -- Column specification --------------------------------------------------------
## cols(
## .default = col_character(),
## `Clave del Municipio` = col_double(),
## `30-abr-05` = col_logical(),
## X301 = col_logical(),
## `Anormalmente Seco (D0)` = col_double(),
## `Moderada(D1)` = col_double(),
## `Severa(D2)` = col_double(),
## `Extrema(D3)` = col_double(),
## `Excepcional(D4)` = col_double(),
## `Total (D0 a D4)` = col_double()
## )
## i Use `spec()` for the full column specifications.
library(pacman)
p_load("MASS", "ggplot2")Diagrama de dispersion para municipios con sequia extrema y moderada
ggplot(data = SequiasSon, aes(x= 'Moderada(D1)' , y= 'Extrema(D3)')) +
geom_point(colour="red4") +
ggtitle("Diagrama de dispersion de sequia moderada y extrema") +
theme_bw() +
theme(plot.title = element_text(hjust = 0.5))Analisis de normalidad
par (mfrow = c(1,2))
hist(SequiasSon$'Moderada(D1)', breaks = 10, main = "", xlab = "Sequia moderada", border="darkred")
hist(SequiasSon$'Extrema(D3)', breaks = 10, main = "", xlab = "Sequia extrema", border="blue")Grafico cuantilico
qqnorm(SequiasSon$'Moderada(D1)', main = "Sequia moderada", col= "darkred")
qqline(SequiasSon$'Moderada(D1)')qqnorm(SequiasSon$'Extrema(D3)', main = "Sequia extrema", col= "darkred")
qqline(SequiasSon$'Extrema(D3)')Prueba (test) de hipotesis para el analisis de normalidad
#Test de Shapiro Wilk para sequia moderada
shapiro.test(SequiasSon$`Moderada(D1)`)##
## Shapiro-Wilk normality test
##
## data: SequiasSon$`Moderada(D1)`
## W = 0.93455, p-value = 0.001018
Como se puede observar el valor de P es 0.001018 lo que quiere decir que no alcanza el minimo (0.05 o 5%) para que sean considerados datos normales
#Test de Shapiro Wilk para Sequia extrema
shapiro.test(SequiasSon$`Extrema(D3)`)##
## Shapiro-Wilk normality test
##
## data: SequiasSon$`Extrema(D3)`
## W = 0.85216, p-value = 5.88e-07
En este test el valor de p es sumamente pequeno y estos datos tampoco son normales
par (mfrow = c(1,2))
hist(SequiasSon$`Extrema(D3)`, breaks = 10, main = "", xlab = " Log10 (Sequia extrema)", border="blue")
qqnorm(log10(SequiasSon$`Extrema(D3)`), main = "", col = "blue")
qqline(log10(SequiasSon$`Extrema(D3)`))Ahora, con los datos ajustados a escala logaritmica de base, tenemos el siguiente analisis de normalidad
shapiro.test(log10(SequiasSon$`Extrema(D3)`))##
## Shapiro-Wilk normality test
##
## data: log10(SequiasSon$`Extrema(D3)`)
## W = 0.95154, p-value = 0.007548
Ahora con los datos ajustados vemos que aun no alcanza el test de normalidad, lo que es probablemente un problema con lo que esta pasando en la vida diaria.
REGRESION LINEAL MULTIPLE
La regresión lineal múltiple permite generar un modelo lineal en el que el valor de la variable dependiente o respuesta (Y ) se determina a partir de un conjunto de variables independientes llamadas predictores (X1, X2, X3…). Es una extensión de la regresión lineal simple, por lo que es fundamental comprender esta última. Los modelos de regresión múltiple pueden emplearse para predecir el valor de la variable dependiente o para evaluar la influencia que tienen los predictores sobre ella (esto último se debe que analizar con cautela para no malinterpretar causa-efecto).
Los modelos lineales múltiples siguen la siguiente ecuación:
\[ Y_{i}=(\beta_{0}+\beta_{1}X_{1i}+\beta_{2}X_{2i}+\cdots+\beta_{n}X_{ni})+e_{i} \]
β0 es la ordenada en el origen, el valor de la variable dependiente Y cuando todos los predictores son cero.
βi : es el efecto promedio que tiene el incremento en una unidad de la variable predictora Xi sobre la variable dependiente Y , manteniéndose constantes el resto de variables. Se conocen como coeficientes parciales de regresión.
ei: es el residuo o error, la diferencia entre el valor observado y el estimado por el modelo.
Es importante tener en cuenta que la magnitud de cada coeficiente parcial de regresión depende de las unidades en las que se mida la variable predictora a la que corresponde, por lo que su magnitud no está asociada con la importancia de cada predictor. Para poder determinar qué impacto tienen en el modelo cada una de las variables, se emplean los coeficientes parciales estandarizados, que se obtienen al estandarizar (sustraer la media y dividir entre la desviación estándar) las variables predictoras previo ajuste del modelo.
Condiciones para la regresion lineal multiple
En si, mismas condiciones que los modelos lineales simples, mas algunas adicionales
Analisis de cosecha de trigo en el periodo primavera-verano 2020
#Librerias a utilizar
library(gplots)##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
library(dplyr)##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(psych)##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(GGally)## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(readr)
library(readxl)
library(prettydoc)
library(dplyr)
library(ggplot2)
library(data.table)##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
library(plotly)##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(tidyverse)## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v tibble 3.0.6 v stringr 1.4.0
## v tidyr 1.1.2 v forcats 0.5.1
## v purrr 0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x psych::%+%() masks ggplot2::%+%()
## x psych::alpha() masks ggplot2::alpha()
## x data.table::between() masks dplyr::between()
## x plotly::filter() masks dplyr::filter(), stats::filter()
## x data.table::first() masks dplyr::first()
## x dplyr::lag() masks stats::lag()
## x data.table::last() masks dplyr::last()
## x plotly::select() masks dplyr::select(), MASS::select()
## x purrr::transpose() masks data.table::transpose()
library(modelr)DA2 <- read_excel("TrigoPrim-Ver2020.xlsx")Tabla de predictores
Superficie_sembrada_Ha <- DA2$'SuperficieSembrada'
Superficie_cosechada_Ha <- DA2$'Superficiecosechada'
Superficie_siniestrada_Ha <- DA2$'Superficiesiniestrada'
Produccion <- DA2$'Produccion_ton'
Valor_de_la_produccion <- DA2$'Rendimiento(ton/ha)'
DA2 <- data.table(Superficie_sembrada_Ha, Superficie_cosechada_Ha, Superficie_siniestrada_Ha, Valor_de_la_produccion)
round( cor( x = DA2, method = "pearson"), 3)## Superficie_sembrada_Ha Superficie_cosechada_Ha
## Superficie_sembrada_Ha 1 NA
## Superficie_cosechada_Ha NA 1
## Superficie_siniestrada_Ha NA NA
## Valor_de_la_produccion NA NA
## Superficie_siniestrada_Ha Valor_de_la_produccion
## Superficie_sembrada_Ha NA NA
## Superficie_cosechada_Ha NA NA
## Superficie_siniestrada_Ha 1 NA
## Valor_de_la_produccion NA 1
Distribucion de datos
library(psych)
multi.hist(x = DA2, dcol = c("blue", "red"), dlty = c("dotted", "solid"),main = "")- Ahora exploremos este mismo analisis usando GGally
library(GGally)
ggpairs(DA2, lower = list(continuous = "smooth"),
diag = list(continuous = "barDiag"), axisLabels = "none")## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removing 1 row that contained a missing value
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removed 2 rows containing missing values
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removing 1 row that contained a missing value
## Warning: Removed 1 rows containing non-finite values (stat_smooth).
## Warning: Removed 1 rows containing missing values (geom_point).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removed 2 rows containing missing values
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removing 1 row that contained a missing value
## Warning: Removed 2 rows containing non-finite values (stat_smooth).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing non-finite values (stat_smooth).
## Warning: Removed 2 rows containing missing values (geom_point).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 2 rows containing non-finite values (stat_bin).
## Warning in ggally_statistic(data = data, mapping = mapping, na.rm = na.rm, :
## Removed 2 rows containing missing values
## Warning: Removed 1 rows containing non-finite values (stat_smooth).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing non-finite values (stat_smooth).
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing non-finite values (stat_smooth).
## Warning: Removed 2 rows containing missing values (geom_point).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).
Genereando el modelo
Ahora una vez que entendemos la forma en la cual se relacionan las vatiables, podemos empezar a experimentar con la generacion del modelo
modelo <- lm(Produccion ~ Superficie_sembrada_Ha + Superficie_cosechada_Ha + Superficie_siniestrada_Ha + Valor_de_la_produccion, data = DA2 )
summary(modelo)##
## Call:
## lm(formula = Produccion ~ Superficie_sembrada_Ha + Superficie_cosechada_Ha +
## Superficie_siniestrada_Ha + Valor_de_la_produccion, data = DA2)
##
## Residuals:
## 2 3 4 5 6 7 9
## 1.3504 6.6978 19.8723 -30.0255 0.7845 3.4254 -2.1049
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.627 35.928 0.797 0.4838
## Superficie_sembrada_Ha -6.945 5.614 -1.237 0.3041
## Superficie_cosechada_Ha 15.238 5.668 2.689 0.0745 .
## Superficie_siniestrada_Ha NA NA NA NA
## Valor_de_la_produccion -5.282 5.544 -0.953 0.4111
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.29 on 3 degrees of freedom
## (2 observations deleted due to missingness)
## Multiple R-squared: 1, Adjusted R-squared: 0.9999
## F-statistic: 2.686e+04 on 3 and 3 DF, p-value: 3.856e-07