Rpubs: https://rpubs.com/sgcifuentes/940515

Actividad OLX

library(readxl)
datos_OLX = read_excel("C:/Users/User/Downloads/Ok_mazda_2_colombia.xlsx")




View(datos_OLX)

y = datos_OLX$precio
x1 = datos_OLX$modelo
x2 = datos_OLX$kilometraje
x3 = datos_OLX$transmision

cor(datos_OLX[,2:4], use = "complete.obs")
##                 precio     modelo kilometraje
## precio       1.0000000  0.8058056  -0.6568037
## modelo       0.8058056  1.0000000  -0.7738466
## kilometraje -0.6568037 -0.7738466   1.0000000
plot(x = datos_OLX[,2:4])

modelo_1 = lm(y ~ x1 + x2, data = datos_OLX)
summary(modelo_1)
## 
## Call:
## lm(formula = y ~ x1 + x2, data = datos_OLX)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -72361782  -5090717  -1560134   2411170 104357802 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.315e+09  5.085e+08 -14.387   <2e-16 ***
## x1           3.657e+06  2.517e+05  14.533   <2e-16 ***
## x2          -3.858e+01  2.377e+01  -1.623    0.105    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12570000 on 333 degrees of freedom
##   (47 observations deleted due to missingness)
## Multiple R-squared:  0.6521, Adjusted R-squared:   0.65 
## F-statistic: 312.1 on 2 and 333 DF,  p-value: < 2.2e-16

Como se puede observar, se tiene una correlación entre las variables en ambos sentidos, es decir, el modelo del carro aumenta el precio y a mayor kilometraje disminuye el precio. Esto quiere decir que la variable kilometraje no es significativa estando la variable modelo en el modelo de regresión

Entonces hacemos una selección de variables

modelo_2= step(modelo_1)
## Start:  AIC=10988.25
## y ~ x1 + x2
## 
##        Df  Sum of Sq        RSS   AIC
## <none>               5.2647e+16 10988
## - x2    1 4.1661e+14 5.3064e+16 10989
## - x1    1 3.3394e+16 8.6041e+16 11151
summary(modelo_2)
## 
## Call:
## lm(formula = y ~ x1 + x2, data = datos_OLX)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -72361782  -5090717  -1560134   2411170 104357802 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.315e+09  5.085e+08 -14.387   <2e-16 ***
## x1           3.657e+06  2.517e+05  14.533   <2e-16 ***
## x2          -3.858e+01  2.377e+01  -1.623    0.105    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12570000 on 333 degrees of freedom
##   (47 observations deleted due to missingness)
## Multiple R-squared:  0.6521, Adjusted R-squared:   0.65 
## F-statistic: 312.1 on 2 and 333 DF,  p-value: < 2.2e-16

Se observa que el proceso de selección de variables indica que ambas variables deben ser consideradas en el modelo para explicar el precio del carro.

Ahora veamos como más se puede mejorar este modelo

plot(x1+x2,y)

plot(modelo_2)

Como se observa en las gráficas se identifica que la varianza en constante, la prueba de normalidad es correcta y el error es mínimo.

Validamos si con una transformación se mejora el modelo

plot(x1+x2,log(y))

modelo_3 = lm(log(y) ~ x1 + x2, data = datos_OLX)
summary(modelo_3)
## 
## Call:
## lm(formula = log(y) ~ x1 + x2, data = datos_OLX)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.46867 -0.06958 -0.00958  0.06289  1.41929 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.294e+02  8.526e+00 -15.179   <2e-16 ***
## x1           7.301e-02  4.220e-03  17.301   <2e-16 ***
## x2          -1.349e-07  3.985e-07  -0.338    0.735    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2108 on 333 degrees of freedom
##   (47 observations deleted due to missingness)
## Multiple R-squared:  0.6978, Adjusted R-squared:  0.696 
## F-statistic: 384.5 on 2 and 333 DF,  p-value: < 2.2e-16
plot(modelo_3)

Observamos que el modelo con la variable transformada con logaritmo mejora en ajuste a un 70% y adicionalmente los supuestos de linealidad y normalidad a nivel gráfico se ajustan mejor

Ahora, hagamos una predicción ¿cuál sería el precio de un carro modelo 2018 con 50.000 km?

y_log = predict (modelo_3, list(x1=2018, x2=50000))

exp(y_log)
##        1 
## 59688575

El precio de un carro modelo 2018 con 50 mil kilometros tiene un valor aproximado de $59.6 millones.

boxplot(y~x3,col="gray")

modelo_4 = lm(log(y) ~ x1 + x2 + x3, data = datos_OLX)
summary(modelo_4)
## 
## Call:
## lm(formula = log(y) ~ x1 + x2 + x3, data = datos_OLX)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.39190 -0.07543 -0.00997  0.06576  1.36556 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -1.229e+02  8.555e+00 -14.364  < 2e-16 ***
## x1                       6.978e-02  4.234e-03  16.481  < 2e-16 ***
## x2                      -6.830e-08  3.934e-07  -0.174 0.862274    
## x3Automática Secuencial  5.472e-02  4.071e-02   1.344 0.179872    
## x3Mecánica              -8.709e-02  2.478e-02  -3.514 0.000503 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2072 on 326 degrees of freedom
##   (52 observations deleted due to missingness)
## Multiple R-squared:  0.7122, Adjusted R-squared:  0.7087 
## F-statistic: 201.7 on 4 and 326 DF,  p-value: < 2.2e-16

Se observa que la variable transmisión no es muy relevante en el modelo ya que incrementa su ajuste a 71%, sin embargo, si se evidencia que sólo se debería tener en cuenta la transmisión mecánica que influye en el precio del carro.

y_log_transmision = predict (modelo_4, list(x1=2018, x2=50000, x3="Mecánica"))

exp(y_log_transmision)
##        1 
## 56117850
MAE_OLX = mean(abs(exp(modelo_4$residuals)))

MAE_OLX
## [1] 1.020219

Evidenciamos la estimación del precio de un carro modelo 2018 con 50 mil kilometros y mecánico tiene un valor aproximado de $56.1 millones, con un error aproximado de 1 millón.

modelo_5 = lm(y ~ x1, data = datos_OLX)
summary(modelo_5)
## 
## Call:
## lm(formula = y ~ x1, data = datos_OLX)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -72398473  -5258160  -1447431   2497986 105383194 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.955e+09  3.220e+08  -24.70   <2e-16 ***
## x1           3.973e+06  1.598e+05   24.87   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12600000 on 334 degrees of freedom
##   (47 observations deleted due to missingness)
## Multiple R-squared:  0.6493, Adjusted R-squared:  0.6483 
## F-statistic: 618.4 on 1 and 334 DF,  p-value: < 2.2e-16
modelo_6 = lm(y ~ x1 + x3, data = datos_OLX)
summary(modelo_6)
## 
## Call:
## lm(formula = y ~ x1 + x3, data = datos_OLX)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -67245401  -4938189  -1439890   2902433 101414535 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -7.455e+09  3.320e+08 -22.456  < 2e-16 ***
## x1                       3.726e+06  1.646e+05  22.633  < 2e-16 ***
## x3Automática Secuencial  2.517e+06  2.416e+06   1.042    0.298    
## x3Mecánica              -6.157e+06  1.469e+06  -4.190 3.59e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12300000 on 327 degrees of freedom
##   (52 observations deleted due to missingness)
## Multiple R-squared:  0.6707, Adjusted R-squared:  0.6676 
## F-statistic:   222 on 3 and 327 DF,  p-value: < 2.2e-16

Se observa que dejando afuera la variable kilometros, baja el ajuste y precisión del modelo 64% y 66%

Informe Moluscos:

Realizamos analisis exploratorio bivariado -(Relación entre consumo de occigeno contra las distintas concentraciones de agua de mar.)

load("C:/Users/User/Downloads/moluscos.RData")

consumo_oxi=mean(BD_moluscos$cons_o,na.rm = TRUE)
mediana_consumo_oxi=median(BD_moluscos$cons_o,na.rm = TRUE)

tabla = data.frame(consumo_oxi,mediana_consumo_oxi)
tabla
##   consumo_oxi mediana_consumo_oxi
## 1    9.304792                 9.7
require(ggplot2)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.1.3
require(plotly)
## Loading required package: plotly
## Warning: package 'plotly' was built under R version 4.1.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(agricolae)
## Warning: package 'agricolae' was built under R version 4.1.3
library(daewr)
## Warning: package 'daewr' was built under R version 4.1.3
## Registered S3 method overwritten by 'DoE.base':
##   method           from       
##   factorize.factor conf.design
a = BD_moluscos$cons_o
b1 = BD_moluscos$c_agua
b2 = BD_moluscos$molusco

b1= as.factor(b1)
b2= as.factor(b2)


g1 = ggplot(BD_moluscos,aes(x=b1,y=a))+
              geom_boxplot()
g1

g2 = ggplot(BD_moluscos,aes(x=b2,y=a))+
              geom_boxplot()
g2

g3 = ggplot(BD_moluscos,aes(x=b2, y=a, fill=b1)) + geom_boxplot() + geom_point() + facet_wrap(b1, scale = "free") 

g3

cor(BD_moluscos$c_agua,BD_moluscos$cons_o)
## [1] -0.4009984

Se observa que el consumo de oxigeno en ambos tipos de molusco no tienen mucha varianza, sin embargo, entre menos concentración de agua de mar se tenga hay mayor consumo de oxigeno por parte del molusco, es decir el molusco para vivir no necesita tanta concentración de agua de mar.

  1. Ahora estimaremos el modelo de diseño de experimentos el cual permita evaluar el efecto de la concentración de agua de mar y los tipos de molusco sobre el consumo de oxigeno. Interprete los coeficientes del modelo, el valor p y realice un post anova de considerarlo necesario para los factores.
modelo_1_molusco = lm(a ~ b1, data = BD_moluscos)
summary(modelo_1_molusco)
## 
## Call:
## lm(formula = a ~ b1, data = BD_moluscos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.8706 -2.0445 -0.4766  2.2494  6.5494 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.2506     0.7515  16.302  < 2e-16 ***
## b175         -5.2581     1.0627  -4.948 1.09e-05 ***
## b1100        -3.5794     1.0627  -3.368  0.00156 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.006 on 45 degrees of freedom
## Multiple R-squared:  0.3621, Adjusted R-squared:  0.3338 
## F-statistic: 12.77 on 2 and 45 DF,  p-value: 4.043e-05
plot(b1,a)

plot(modelo_1_molusco)

Como se puede observar, se tiene un valor b1 negativo, es decir entre mayor sea la concentración de agua de mar para el molusco le va ser más dificil el consumo de oxigeno y la variable que mayor aporta al consumo de oxigeno es la concentración de oxigeno al 75% de concentración y su representación es de la relación es del 33%.

Ahora vamos a validar si con la otra variable molusco el modelo aumenta un poco su representación.

modelo_2_molusco = lm(a ~ b1 + b2, data = BD_moluscos)
summary(modelo_2_molusco)
## 
## Call:
## lm(formula = a ~ b1 + b2, data = BD_moluscos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1750 -1.9877 -0.7019  2.1244  6.1450 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.9463     0.8521  15.193  < 2e-16 ***
## b175         -5.2581     1.0436  -5.038 8.49e-06 ***
## b1100        -3.5794     1.0436  -3.430  0.00132 ** 
## b2B          -1.3913     0.8521  -1.633  0.10966    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.952 on 44 degrees of freedom
## Multiple R-squared:  0.3986, Adjusted R-squared:  0.3575 
## F-statistic: 9.719 on 3 and 44 DF,  p-value: 4.866e-05
plot(modelo_2_molusco)

Se observa que el modelo 2 aumenta la representación en 2 puntos, es decir, al 35%, sin embargo, sigue siendo muy baja para lograr un buen modelo de regresión entre las dos variables y considerarlas relacionables.

Ahora vamos a ver si la variable agua se relaciona con la variable molusco y determina su incremento en el modelo

modelo_3_molusco = lm(a ~ b1 + b2 + b1*b2, data = BD_moluscos)
summary(modelo_3_molusco)
## 
## Call:
## lm(formula = a ~ b1 + b2 + b1 * b2, data = BD_moluscos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.946 -1.736 -0.710  2.237  6.625 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.1750     1.0466  11.633 1.02e-14 ***
## b175         -4.2850     1.4800  -2.895  0.00599 ** 
## b1100        -2.2387     1.4800  -1.513  0.13787    
## b2B           0.1513     1.4800   0.102  0.91909    
## b175:b2B     -1.9462     2.0931  -0.930  0.35777    
## b1100:b2B    -2.6813     2.0931  -1.281  0.20722    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.96 on 42 degrees of freedom
## Multiple R-squared:  0.4226, Adjusted R-squared:  0.3539 
## F-statistic: 6.149 on 5 and 42 DF,  p-value: 0.0002324
plot(modelo_3_molusco)

annova1 = aov(modelo_3_molusco)
summary(annova1)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## b1           2  230.8  115.41  13.171 3.63e-05 ***
## b2           1   23.2   23.23   2.651    0.111    
## b1:b2        2   15.4    7.68   0.876    0.424    
## Residuals   42  368.0    8.76                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Observamos que hay una variable destacada en su significancia la concentración de agua 75 e independiente del tipo de molusco el consumo de oxigeno es 12.17

En el analisis de varianzas annova, podemos observar que la única variable significativa es la de concentración de agua.

Validamos las pruebas de comparaciones multiples de medias con la variable concentración de agua que fue la que presentó significancia

shapiro.test(annova1$res)
## 
##  Shapiro-Wilk normality test
## 
## data:  annova1$res
## W = 0.95824, p-value = 0.08571
TukeyHSD(annova1)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = modelo_3_molusco)
## 
## $b1
##             diff        lwr       upr     p adj
## 75-50  -5.258125 -7.8007168 -2.715533 0.0000289
## 100-50 -3.579375 -6.1219668 -1.036783 0.0039342
## 100-75  1.678750 -0.8638418  4.221342 0.2551550
## 
## $b2
##         diff       lwr       upr     p adj
## B-A -1.39125 -3.115713 0.3332134 0.1109762
## 
## $`b1:b2`
##                 diff          lwr        upr     p adj
## 75:A-50:A   -4.28500  -8.70331211  0.1333121 0.0619482
## 100:A-50:A  -2.23875  -6.65706211  2.1795621 0.6582697
## 50:B-50:A    0.15125  -4.26706211  4.5695621 0.9999983
## 75:B-50:A   -6.08000 -10.49831211 -1.6616879 0.0023423
## 100:B-50:A  -4.76875  -9.18706211 -0.3504379 0.0277338
## 100:A-75:A   2.04625  -2.37206211  6.4645621 0.7369714
## 50:B-75:A    4.43625   0.01793789  8.8545621 0.0485578
## 75:B-75:A   -1.79500  -6.21331211  2.6233121 0.8281801
## 100:B-75:A  -0.48375  -4.90206211  3.9345621 0.9994669
## 50:B-100:A   2.39000  -2.02831211  6.8083121 0.5936863
## 75:B-100:A  -3.84125  -8.25956211  0.5770621 0.1209401
## 100:B-100:A -2.53000  -6.94831211  1.8883121 0.5334845
## 75:B-50:B   -6.23125 -10.64956211 -1.8129379 0.0017250
## 100:B-50:B  -4.92000  -9.33831211 -0.5016879 0.0212746
## 100:B-75:B   1.31125  -3.10706211  5.7295621 0.9478135

Ahora hacemos un gráfico donde nos permita observar los conjuntos de grupos que existen de acuerdo a su concentración:

interaction.plot(b1,b2,a,main="Interacciones", xlab= "Concentración de agua", ylab= "media concentración de o2", legend=TRUE, trace.label = "moluscos", col = c("#0198f9","#f95b01"),lyt=1,lwd=4)

De esta forma podemos observar que el mayor consumo de oxigeno en cualquiera de los dos tipos de moluscos es en la conetración de agua 50 y el menor consumo es en la concentración 75

Salinidad

  1. Para estudiar la relación entre ciertas características del suelo y la producción de biomasa (gr) de una planta forrajera natural se obtuvieron 45 muestras en diferentes ambientes, y en cada muestra se estimó la biomasa (respuesta Y) y se registraron las características (covariables X) del suelo en el que crecía (pH, Salinidad, Zinc y Potasio).
  1. Realice un análisis de correlaciones que permita identificar de manera bivariada las relaciones entre las covariables y la respuesta (incluir coeficiente de correlación e interpretaciones).
load("C:/Users/User/Downloads/Salinidad.RData")

plot(Salinidad)

c = cor(Salinidad)
c
##               Biomasa          pH   Salinidad        Zinc     Potasio
## Biomasa    1.00000000  0.92810235 -0.06657756 -0.78146249 -0.07319518
## pH         0.92810235  1.00000000 -0.04458851 -0.72046995  0.03236212
## Salinidad -0.06657756 -0.04458851  1.00000000 -0.42663388 -0.01963288
## Zinc      -0.78146249 -0.72046995 -0.42663388  1.00000000  0.07877268
## Potasio   -0.07319518  0.03236212 -0.01963288  0.07877268  1.00000000
library(corrplot)
corrplot::corrplot(c,method = "color")

b. Estime el modelo de regresión lineal múltiple para explicar la biomasa en función de las covariables e interprete el valor p, los coeficientes de las variables significativas y el coeficiente R2.

modelo_salinidad_1 = lm(Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + Salinidad$Zinc + Salinidad$Potasio)

summary(modelo_salinidad_1)
## 
## Call:
## lm(formula = Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + 
##     Salinidad$Zinc + Salinidad$Potasio)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -293.98  -88.83   -9.48   88.20  387.27 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1492.8076   453.6013   3.291 0.002091 ** 
## Salinidad$pH         262.8829    33.7304   7.794 1.51e-09 ***
## Salinidad$Salinidad  -33.4997     8.6525  -3.872 0.000391 ***
## Salinidad$Zinc       -28.9727     5.6643  -5.115 8.20e-06 ***
## Salinidad$Potasio     -0.1150     0.0819  -1.404 0.167979    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 158.9 on 40 degrees of freedom
## Multiple R-squared:  0.9231, Adjusted R-squared:  0.9154 
## F-statistic:   120 on 4 and 40 DF,  p-value: < 2.2e-16

Observamos que las variables pH, salinidad y Zinc, son significativas para tomar la decisión de en donde se siembran las plantas forrajera, ya que su valor p da inferior a 5% y esto quiere decir que la hipotesis nula es falsa y continúo con la hipotesis alterna, con una representación alta del 91,5%, es decir muy confiable el modelo.

Sim embargo, ahora hacemos una selección de variable para el validar el modelo

step(modelo_salinidad_1, direction = "backward")
## Start:  AIC=460.84
## Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + Salinidad$Zinc + 
##     Salinidad$Potasio
## 
##                       Df Sum of Sq     RSS    AIC
## <none>                             1009974 460.84
## - Salinidad$Potasio    1     49785 1059759 461.01
## - Salinidad$Salinidad  1    378486 1388460 473.17
## - Salinidad$Zinc       1    660588 1670562 481.49
## - Salinidad$pH         1   1533665 2543639 500.41
## 
## Call:
## lm(formula = Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + 
##     Salinidad$Zinc + Salinidad$Potasio)
## 
## Coefficients:
##         (Intercept)         Salinidad$pH  Salinidad$Salinidad  
##            1492.808              262.883              -33.500  
##      Salinidad$Zinc    Salinidad$Potasio  
##             -28.973               -0.115

COn esto confirmamos que las variables que mejor representan el modelo son pH, salinidad y Zinc y hacemos un modelo con ellas:

modelo_salinidad_2 = lm(Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + Salinidad$Zinc)

summary(modelo_salinidad_2)
## 
## Call:
## lm(formula = Salinidad$Biomasa ~ Salinidad$pH + Salinidad$Salinidad + 
##     Salinidad$Zinc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -363.42 -107.14    8.51   78.33  398.36 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1502.349    458.894   3.274  0.00216 ** 
## Salinidad$pH         255.008     33.653   7.578 2.55e-09 ***
## Salinidad$Salinidad  -34.800      8.704  -3.998  0.00026 ***
## Salinidad$Zinc       -30.408      5.637  -5.394 3.13e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 160.8 on 41 degrees of freedom
## Multiple R-squared:  0.9193, Adjusted R-squared:  0.9134 
## F-statistic: 155.7 on 3 and 41 DF,  p-value: < 2.2e-16
shapiro.test(modelo_salinidad_2$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_salinidad_2$residuals
## W = 0.97436, p-value = 0.4121
lmtest::gqtest(modelo_salinidad_2)
## 
##  Goldfeld-Quandt test
## 
## data:  modelo_salinidad_2
## GQ = 1.0778, df1 = 19, df2 = 18, p-value = 0.4386
## alternative hypothesis: variance increases from segment 1 to 2
lmtest::dwtest(modelo_salinidad_2)
## 
##  Durbin-Watson test
## 
## data:  modelo_salinidad_2
## DW = 1.5988, p-value = 0.05313
## alternative hypothesis: true autocorrelation is greater than 0

Encontramos las variables más significativas para conocer las condiciones necesarias para sembrar la planta forrajera, sin embargo, debemos realizar unos test para validar la calidad de los datos.

En el test de Shapiro el valor p da 0.4, es decir, no es posible rechazar la hipotesis nula, ya que los datos no vienen de distribución normal. En el test Goldfeld el valor de p es de 0.43 es decir que las varianzas no son iguales. En el test de Durbin Watson el valor de p es 0.05, es decir que no hay independencia en los errores.

Se validan todos los supuestos y se concluye que no cumplen las condiciones para que el modelo esté listo para cualquier uso de inferencias estadísticas.