UNIDAD 2 Regresión Lineal Multiple

  1. Dos tipos de moluscos A y B fueron sometidos a tres concentraciones distintas de agua de mar (100%, 75% y 50%) y se observó el consumo de oxígeno midiendo la proporción de O2 por unidad de peso seco del molusco.

a)Realice un análisis exploratorio que permita conocer como es el consumo de oxígeno en las distintas concentraciones de agua de mar. y si estas conclusiones son las mismas para cada tipo de molusco

load("C:/Users/Wilfredo Gomez/iCloudDrive/Downloads/Maestria/Segundo Semestre/Metodos Estadistica/Unidad 2RLM/moluscos.RData")
moluscos<-BD_moluscos
head(moluscos)
##   c_agua molusco cons_o
## 1    100       A   7.16
## 2    100       A   8.26
## 3    100       A   6.78
## 4    100       A  14.00
## 5    100       A  13.60
## 6    100       A  11.10
#Factor para las variables categoricas

moluscos$molusco <- as.factor(moluscos$molusco)
moluscos$c_agua <- as.factor(moluscos$c_agua)
str(moluscos)
## Classes 'tbl_df', 'tbl' and 'data.frame':    48 obs. of  3 variables:
##  $ c_agua : Factor w/ 3 levels "50","75","100": 3 3 3 3 3 3 3 3 3 3 ...
##  $ molusco: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 2 2 ...
##  $ cons_o : num  7.16 8.26 6.78 14 13.6 11.1 8.93 9.66 6.14 6.14 ...
#Análisis Exploratorio

require(ggplot2)
hist(moluscos$cons_o)

shapiro.test(moluscos$cons_o)
## 
##  Shapiro-Wilk normality test
## 
## data:  moluscos$cons_o
## W = 0.97276, p-value = 0.3231
#GRaficos de Velas
g1 <- ggplot(BD_moluscos, aes(y=cons_o, x=c_agua, fill= molusco)) +
  geom_boxplot()+
  xlab("Tipo Molusco")+
  ylab("cons. oxígeno")+ 
  ggtitle("Análisis x Molusco")+
  facet_grid(~molusco)



# Graficos de Velas

g1

g2 <- ggplot(BD_moluscos, aes (y=cons_o, x=molusco, fill= molusco))+
  geom_boxplot()+
  xlab("Concentracion Agua")+
  ylab("cons. oxígeno")+ 
  ggtitle("Análisis x Concentracion de Agua")+
  facet_grid(~c_agua)

g2

Analisis Se observa un comportamiento con una media mas alta en el consumo de Oxigeno para la concentración al 50%, para ese mismo escenario el Molusco B tiene una media superior a 12 por encima del molusco A

Por el contrario para los casos de concentraciones de 75% y 100%, el molusco A tiene medias superiores que rondan entre los 7 y 9 con relación al consumo del Oxigeno.

Asi mismo, por medio de la prueba de Shapiro no rechazamos que la distribucion de la variable consumo de oxigeno es normal.

b)Estime 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

mod1_moluscos <- lm(formula = moluscos$cons_o ~ .,data = moluscos)
summary(mod1_moluscos)
## 
## Call:
## lm(formula = moluscos$cons_o ~ ., data = 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 ***
## c_agua75     -5.2581     1.0436  -5.038 8.49e-06 ***
## c_agua100    -3.5794     1.0436  -3.430  0.00132 ** 
## moluscoB     -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
bestmoluscos01 <- step(mod1_moluscos)
## Start:  AIC=107.73
## moluscos$cons_o ~ c_agua + molusco
## 
##           Df Sum of Sq    RSS    AIC
## <none>                 383.37 107.73
## - molusco  1    23.227 406.59 108.56
## - c_agua   2   230.816 614.18 126.36
summary(bestmoluscos01)
## 
## Call:
## lm(formula = moluscos$cons_o ~ c_agua + molusco, data = 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 ***
## c_agua75     -5.2581     1.0436  -5.038 8.49e-06 ***
## c_agua100    -3.5794     1.0436  -3.430  0.00132 ** 
## moluscoB     -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
#Analisis de Residuales
par(mfrow=c(2,2))
plot(bestmoluscos01)

# Validación Anova 

anova(bestmoluscos01)
## Analysis of Variance Table
## 
## Response: moluscos$cons_o
##           Df Sum Sq Mean Sq F value   Pr(>F)    
## c_agua     2 230.82 115.408 13.2457 3.14e-05 ***
## molusco    1  23.23  23.227  2.6658   0.1097    
## Residuals 44 383.37   8.713                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Post anova Validación
library(agricolae)

pos_anova <- LSD.test(bestmoluscos01,c("c_agua","molusco"))
pos_anova
## $statistics
##    MSerror Df     Mean       CV  t.value      LSD
##   8.712897 44 9.304792 31.72303 2.015368 2.974442
## 
## $parameters
##         test p.ajusted         name.t ntr alpha
##   Fisher-LSD      none c_agua:molusco   6  0.05
## 
## $means
##       moluscos$cons_o      std r       LCL       UCL  Min   Max     Q25    Q50
## 100:A         9.93625 2.747976 8  7.833002 12.039498 6.78 14.00  7.9850  9.295
## 100:B         7.40625 2.844076 8  5.303002  9.509498 3.68 11.60  5.7225  6.140
## 50:A         12.17500 3.090178 8 10.071752 14.278248 9.74 18.80 10.3100 11.110
## 50:B         12.32625 3.517909 8 10.223002 14.429498 6.38 17.70 10.0575 12.850
## 75:A          7.89000 2.739578 8  5.786752  9.993248 5.20 13.20  6.0775  7.180
## 75:B          6.09500 2.739108 8  3.991752  8.198248 1.80  9.96  4.8300  5.595
##           Q75
## 100:A 11.7250
## 100:B 10.1000
## 50:A  12.5000
## 50:B  14.5000
## 75:A   8.8925
## 75:B   7.3425
## 
## $comparison
## NULL
## 
## $groups
##       moluscos$cons_o groups
## 50:B         12.32625      a
## 50:A         12.17500      a
## 100:A         9.93625     ab
## 75:A          7.89000     bc
## 100:B         7.40625     bc
## 75:B          6.09500      c
## 
## attr(,"class")
## [1] "group"
interaction.plot(
  x.factor = moluscos$c_agua,
  trace.factor = moluscos$molusco,
  response = moluscos$cons_o,
  fun = median,
  ylab = "Peso perdido en 6 semanas",
  xlab = "Tipo de Dieta",
  trace.label = "Genero",
  col = c("purple", "green"),
  lwd = 1
)

Analisis El modelo creado puede explicar con certeza un 35.75% del consumo de oxigeno con base en la concentracion de agua y los tipos de moluscos A y B. La formula del modelo resultante seria:

ConcentracionOxigeno = 12.9463 − 5.2581(Agua75) − 3.5794(Agua100) − 1.3913(MoluscoB) + ϵ

Al aplicar el metodo Anova se observa que la concentración de agua es significativa dentro del modelo ya que su valor es muy inferior a 0.05 mientras que para el caso del tipo molusco no tiene el mismo efecto.

Igualmente se observa que al aplicar el metodo post anova la varianza entre las concentraciones de agua 75 y 100 son similares, cuando el grupo de 50% Concentración difiere de los dos anteriores como se ve en el graffito anterior

2. 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).

a)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)

require(PerformanceAnalytics)

# Cargo el dataframe

load("C:/Users/Wilfredo Gomez/iCloudDrive/Downloads/Maestria/Segundo Semestre/Metodos Estadistica/Unidad 2RLM/Salinidad.RData")
SalinidadDF <- Salinidad
head(SalinidadDF)
##    Biomasa   pH Salinidad    Zinc Potasio
## 1  765.280 5.00        33 16.4524 1441.67
## 2  954.017 4.70        35 13.9852 1299.19
## 3  827.686 4.20        32 15.3276 1154.27
## 4  755.072 4.40        30 17.3128 1045.15
## 5  896.176 5.55        33 22.3312  521.62
## 6 1422.836 5.50        33 12.2778 1273.02
summary(SalinidadDF)
##     Biomasa             pH          Salinidad          Zinc        
##  Min.   : 369.8   Min.   :3.200   Min.   :24.00   Min.   : 0.2105  
##  1st Qu.: 654.8   1st Qu.:3.450   1st Qu.:27.00   1st Qu.:13.9852  
##  Median : 991.8   Median :4.450   Median :30.00   Median :19.2420  
##  Mean   :1082.2   Mean   :4.609   Mean   :30.27   Mean   :17.8308  
##  3rd Qu.:1346.9   3rd Qu.:5.350   3rd Qu.:33.00   3rd Qu.:22.6758  
##  Max.   :2337.3   Max.   :7.450   Max.   :38.00   Max.   :31.2865  
##     Potasio      
##  Min.   : 350.7  
##  1st Qu.: 527.0  
##  Median : 773.3  
##  Mean   : 797.4  
##  3rd Qu.: 954.1  
##  Max.   :1441.7
# Analizo la variable de respuesta 

boxplot(SalinidadDF$Biomasa,notch = T )

hist(SalinidadDF$Biomasa)

# Correlacion entre las variables
chart.Correlation(SalinidadDF, histogram=TRUE, pch="+")

Analisis Se Observa que las variables de Biomasa y PH tienen una correlacion fuerte y positiva (93%), posterior se puede evidenciar la correlacion entre la variable de respuesta y el Zinc fuertemente negativa (78%).

Las demas variables no cuentan con la misma significancia, siendo visible que la correlación del potasio con las demas variables minima, De la misma manera se observa una fuerte relación negativa entre el Zinc y otras variables adicionales como la salinidad y el PH

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.

require(memisc)

# Modelo 1: Creo el modelo inicial con la variable de correlacion mas significativa. Intento describir el modelo con la menor cantidad de variables posible.

Salinidad_mod01<-lm(formula = SalinidadDF$Biomasa~SalinidadDF$pH,data=Salinidad)
summary(Salinidad_mod01)
## 
## Call:
## lm(formula = SalinidadDF$Biomasa ~ SalinidadDF$pH, data = Salinidad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -566.28  -89.26  -19.42  142.42  413.28 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -780.18     117.99  -6.612  4.7e-08 ***
## SalinidadDF$pH   404.08      24.72  16.346  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 205.7 on 43 degrees of freedom
## Multiple R-squared:  0.8614, Adjusted R-squared:  0.8582 
## F-statistic: 267.2 on 1 and 43 DF,  p-value: < 2.2e-16
Salinidad_Mod02 <- lm (formula = SalinidadDF$Biomasa ~. , data=SalinidadDF)
summary(Salinidad_Mod02)
## 
## Call:
## lm(formula = SalinidadDF$Biomasa ~ ., data = SalinidadDF)
## 
## 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 ** 
## pH           262.8829    33.7304   7.794 1.51e-09 ***
## Salinidad    -33.4997     8.6525  -3.872 0.000391 ***
## Zinc         -28.9727     5.6643  -5.115 8.20e-06 ***
## 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
# Busco la optimizacion del modelo por medio de la funcion Step
Salinidad_ModBest <- step(Salinidad_Mod02)
## Start:  AIC=460.84
## SalinidadDF$Biomasa ~ pH + Salinidad + Zinc + Potasio
## 
##             Df Sum of Sq     RSS    AIC
## <none>                   1009974 460.84
## - Potasio    1     49785 1059759 461.01
## - Salinidad  1    378486 1388460 473.17
## - Zinc       1    660588 1670562 481.49
## - pH         1   1533665 2543639 500.41
summary(Salinidad_ModBest)
## 
## Call:
## lm(formula = SalinidadDF$Biomasa ~ pH + Salinidad + Zinc + Potasio, 
##     data = SalinidadDF)
## 
## 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 ** 
## pH           262.8829    33.7304   7.794 1.51e-09 ***
## Salinidad    -33.4997     8.6525  -3.872 0.000391 ***
## Zinc         -28.9727     5.6643  -5.115 8.20e-06 ***
## 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
# Comparo resultados
mtable(Salinidad_mod01,Salinidad_ModBest)
## 
## Calls:
## Salinidad_mod01: lm(formula = SalinidadDF$Biomasa ~ SalinidadDF$pH, data = Salinidad)
## Salinidad_ModBest: lm(formula = SalinidadDF$Biomasa ~ pH + Salinidad + Zinc + Potasio, 
##     data = SalinidadDF)
## 
## ======================================================
##                   Salinidad_mod01  Salinidad_ModBest  
## ------------------------------------------------------
##   (Intercept)       -780.183***       1492.808**      
##                     (117.991)         (453.601)       
##   SalinidadDF$pH     404.079***                       
##                      (24.721)                         
##   pH                                   262.883***     
##                                        (33.730)       
##   Salinidad                            -33.500***     
##                                         (8.652)       
##   Zinc                                 -28.973***     
##                                         (5.664)       
##   Potasio                               -0.115        
##                                         (0.082)       
## ------------------------------------------------------
##   R-squared            0.861             0.923        
##   N                   45                45            
## ======================================================
##   Significance: *** = p < 0.001; ** = p < 0.01;   
##                 * = p < 0.05

Analisis

Se proyectaron diferentes modelos y se realizaron comparaciones entre los mismos iniciando por un modelo en el cual la biomasa se explicaba en funcion del PH, intentando tener un modelo simple.

Posteriormente se paso a un modelo usando todas las variables del set de datos (Biomasa ~ Ph + Salinidad + Zinc + Potasio).

Finalmente se aplico un metodo de optimización para encontrar el mejor modelo por medio de Step con el fin de tener un mayor impacto con una menor cantidad de variables.

Como resultados el modelo de solo Ph entrego un R2 ajustado de 0.85 contra un R2 de 0.91 que contiene todas las variables en el conjunto de datos, evidenciando que hay una mayor certeza al incluir todo el conjunto de variables, el modelo obtenido se expresa por lo tanto de la siguiente manera:

Biomasa = 1492.8076 + 262.8829(pH) − 33.4997(Salinidad) − 28.9727(Zinc) − 0.1150(Potasio)