library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── 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(broom.mixed)
library(lme4)
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## 
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
library(ggplot2)
data("CO2")
uptake2 = CO2$uptake + runif(84, 0.02, 0.04) 
view(uptake2)
ggplot(CO2, aes(x = conc, y = uptake2, color = Type)) + geom_point()

• Captación de CO2 de distintas plantas tiene alta variación. Se observa plantas de Quebecen la parte superior y Missisipi en la inferior. • Tratamiento experimental = enfriamiento

ggplot(CO2, aes(x = conc, y = uptake2, color = Type)) + geom_point(aes(shape = Treatment)) + theme_bw()

Se tiene una variable adicional = Planta (individuo), variable aleatoria, no predecible.

ggplot(CO2, aes(x = conc, y = uptake2)) +
     geom_point(aes(color = Treatment))+
     facet_wrap(~Type)

• Se tiene variable adicional = Planta (individuo), variable aleatoria, no predecible.

ggplot(CO2, aes(x = conc, y = uptake2, color = Type)) +
  geom_point(aes(shape = Treatment)) + 
  geom_path(aes(group = Plant, lty = Treatment)) +
  theme_bw()

ggplot(CO2, aes(x = conc, y = uptake2, color = Type)) +
  geom_point(aes(shape = Treatment)) + 
  geom_path(aes(group = Plant, lty = Treatment)) +
  theme_bw() + facet_wrap(~Type)

• Cada planta segregante en cada tratamiento (enfriada y sin enfriar) = variación relacionada con la planta. • Las pendientes son las mismas, pero las intersecciones son diferentes. Análisis descriptivo. • Se ha observado que las plantas en Quebec capturan o consumen concentraciones exponencialmente más altas de CO2 a medida que aumentan las concentraciones ambientales/en el aire. • Además, tanto en Quebec como en Mississippi, la respuesta de las plantas no refrigeradas es buena. • Cada planta/planta se comporta de manera diferente.

Fit1 <- lm(uptake2 ~ I(log(conc)) + Type:Treatment, data = CO2)
summary(Fit1)
## 
## Call:
## lm(formula = uptake2 ~ I(log(conc)) + Type:Treatment, data = CO2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.7140  -2.9014   0.5783   2.7617   8.8677 
## 
## Coefficients: (1 not defined because of singularities)
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         -33.5265     4.0773  -8.223 3.21e-12 ***
## I(log(conc))                          8.4842     0.6784  12.506  < 2e-16 ***
## TypeQuebec:Treatmentnonchilled       19.5172     1.4404  13.549  < 2e-16 ***
## TypeMississippi:Treatmentnonchilled  10.1362     1.4404   7.037 6.35e-10 ***
## TypeQuebec:Treatmentchilled          15.9381     1.4404  11.065  < 2e-16 ***
## TypeMississippi:Treatmentchilled          NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.668 on 79 degrees of freedom
## Multiple R-squared:  0.8227, Adjusted R-squared:  0.8137 
## F-statistic: 91.64 on 4 and 79 DF,  p-value: < 2.2e-16

• Consumo de CO2 - Variable de respuesta a la concentración de CO2: Existe una relación entre las variables relacionadas con el consumo de CO2 de la planta que son importantes en el modelo. • Con base en la pendiente del intercepto, se rechaza la hipótesis nula (no igual a 0). • R-cuadrado ajustado = 81,3 % de los datos están relacionados (más del 70 % y los datos son positivos) • Hay sigularidad en los datso TypeMississippi:Treatmentchilled

ggplot(CO2, aes(x = conc, y = uptake2, color = Type)) + 
  geom_point() +
  geom_smooth(method='lm', formula=y~x, se=FALSE, col='darkblue') +
  theme_light()

#Normalidad de Residuos

shapiro.test(Fit1$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  Fit1$residuals
## W = 0.97699, p-value = 0.1374

• El valor p es mayor que 5, los datos cumplen con el supuesto de normalidad • En este caso, el factor aleatorio son las plantas, por lo que se utiliza un modelo lineal mixto. • Con el paquete lme4, el modelo se puede exportar a plantas que no forman parte del experimento, por lo que cada planta tiene un punto de intersección diferente.

#Agregar el factor aleatorio: (Planta) - Para estimar los parámetros del modelos
Fit2 <- lmer(uptake2 ~ I(log(conc)) + Type:Treatment + (1|Plant), data = CO2)
## fixed-effect model matrix is rank deficient so dropping 1 column / coefficient
summary(Fit2)
## Linear mixed model fit by REML ['lmerMod']
## Formula: uptake2 ~ I(log(conc)) + Type:Treatment + (1 | Plant)
##    Data: CO2
## 
## REML criterion at convergence: 482.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.6927 -0.5397  0.1038  0.6914  1.8913 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  Plant    (Intercept)  2.156   1.468   
##  Residual             20.258   4.501   
## Number of obs: 84, groups:  Plant, 12
## 
## Fixed effects:
##                                     Estimate Std. Error t value
## (Intercept)                         -33.5265     4.0220  -8.336
## I(log(conc))                          8.4842     0.6542  12.969
## TypeQuebec:Treatmentnonchilled       19.5172     1.8349  10.637
## TypeMississippi:Treatmentnonchilled  10.1362     1.8349   5.524
## TypeQuebec:Treatmentchilled          15.9381     1.8349   8.686
## 
## Correlation of Fixed Effects:
##                (Intr) I(l()) TypQbc:Trtmntn TypM:T
## I(log(cnc))    -0.947                             
## TypQbc:Trtmntn -0.228  0.000                      
## TypMssssp:T    -0.228  0.000  0.500               
## TypQbc:Trtmntc -0.228  0.000  0.500          0.500
## fit warnings:
## fixed-effect model matrix is rank deficient so dropping 1 column / coefficient

La media de los residuos cambia en comparación con el modelo lineal simple.

# Valores efectos variables:
ranef(Fit2)
## $Plant
##     (Intercept)
## Qn1 -0.89954179
## Qn2 -0.07459541
## Qn3  0.97413721
## Qc1 -0.76063525
## Qc3  0.35510527
## Qc2  0.40552998
## Mn3 -0.78421160
## Mn2  0.59197757
## Mn1  0.19223404
## Mc2 -1.56718838
## Mc3  0.63390689
## Mc1  0.93328150
## 
## with conditional variances for "Plant"
# Valores efectos fijos:
fixef(Fit2)
##                         (Intercept)                        I(log(conc)) 
##                          -33.526518                            8.484187 
##      TypeQuebec:Treatmentnonchilled TypeMississippi:Treatmentnonchilled 
##                           19.517188                           10.136157 
##         TypeQuebec:Treatmentchilled 
##                           15.938135
# Modelo lineal simple 
broom::glance(Fit1)
## # A tibble: 1 × 12
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1     0.823         0.814  4.67      91.6 7.07e-29     4  -246.  504.  519.
## # ℹ 3 more variables: deviance <dbl>, df.residual <int>, nobs <int>
broom::tidy(Fit1)
## # A tibble: 6 × 5
##   term                                estimate std.error statistic   p.value
##   <chr>                                  <dbl>     <dbl>     <dbl>     <dbl>
## 1 (Intercept)                           -33.5      4.08      -8.22  3.21e-12
## 2 I(log(conc))                            8.48     0.678     12.5   2.03e-20
## 3 TypeQuebec:Treatmentnonchilled         19.5      1.44      13.5   2.64e-22
## 4 TypeMississippi:Treatmentnonchilled    10.1      1.44       7.04  6.35e-10
## 5 TypeQuebec:Treatmentchilled            15.9      1.44      11.1   1.00e-17
## 6 TypeMississippi:Treatmentchilled       NA       NA         NA    NA

• Tiddy nos muestra cual va a ser el estimador El modelo lineal mixto no se tienen R cuadrado:

broom.mixed::glance(Fit2)
## # A tibble: 1 × 7
##    nobs sigma logLik   AIC   BIC REMLcrit df.residual
##   <int> <dbl>  <dbl> <dbl> <dbl>    <dbl>       <int>
## 1    84  4.50  -241.  496.  513.     482.          77
broom.mixed::tidy(Fit2)
## # A tibble: 7 × 6
##   effect   group    term                            estimate std.error statistic
##   <chr>    <chr>    <chr>                              <dbl>     <dbl>     <dbl>
## 1 fixed    <NA>     (Intercept)                       -33.5      4.02      -8.34
## 2 fixed    <NA>     I(log(conc))                        8.48     0.654     13.0 
## 3 fixed    <NA>     TypeQuebec:Treatmentnonchilled     19.5      1.83      10.6 
## 4 fixed    <NA>     TypeMississippi:Treatmentnonch…    10.1      1.83       5.52
## 5 fixed    <NA>     TypeQuebec:Treatmentchilled        15.9      1.83       8.69
## 6 ran_pars Plant    sd__(Intercept)                     1.47    NA         NA   
## 7 ran_pars Residual sd__Observation                     4.50    NA         NA

• vemos las variables aleatorias con sus estimaciones para cada observación; divide en efectos fijos y aleatorios. El tratamiento de enfriamiento y el origen de Mississippi tienen menos efecto sobre la absorción de CO2. Hay diferencias entre las plantas individuales. Puede ver los valores muy bien estimados para las interacciones entre las plantas y el enfriamiento, siendo la estimación más alta TypeQuebec:Treatmentnonchilled y luego TypeQuebec:Treatmentchilled. Esto le permite confirmar el mayor secuestro de CO2 encontrado en los dos tratamientos de la planta de Quebec a través del análisis gráfico. ### RESUMEN: • Aumenta la precisión de la investigación de cultivos, porque tiene en cuenta la variabilidad de los individuos, permite mediciones repetidas en el tiempo; considera variables fijas y aleatorias (dentro y fuera de un conjunto o bloque). • Puede ser útil principalmente en programas de mejoramiento genético y condiciones óptimas de diferentes cultivos a través de diferentes períodos y/o etapas fenológicas.

EFECTOS FIJOS GLMER.

data("ChickWeight")

#Total pollos
ChickWeight$Chick %>% length()
## [1] 578
#Tipos de pollos
ChickWeight$Chick %>% unique ()%>% length
## [1] 50
head(ChickWeight)
## Grouped Data: weight ~ Time | Chick
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1

NOTA: Como se tienen valores positivos en el peso y no se tiene decimales, por tal motivo, se podría analizar como un gml tipo poisson.

ggplot(ChickWeight, aes(x = Time, y = weight)) +
  geom_point(aes(color = Diet)) + 
  geom_path(aes(color = Diet, group = Chick))

Hay pollos donde a pesar de que se tienen dietas simialres tienen comportamientos distintos. Esto indica que si se tiene estas medidades repetitas se puede hacer un glmer.

#gml tipo poisson
Fit1_Poisson <- glm(weight ~ Diet:Time, data = ChickWeight, family = poisson)

Fit2_Poisson <- glmer(weight ~ Diet:Time + (1| Chick), data = ChickWeight, family = poisson)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?
broom::tidy(Fit1_Poisson)
## # A tibble: 5 × 5
##   term        estimate std.error statistic p.value
##   <chr>          <dbl>     <dbl>     <dbl>   <dbl>
## 1 (Intercept)   3.86    0.00931      415.        0
## 2 Diet1:Time    0.0656  0.000722      90.8       0
## 3 Diet2:Time    0.0754  0.000768      98.1       0
## 4 Diet3:Time    0.0862  0.000729     118.        0
## 5 Diet4:Time    0.0823  0.000756     109.        0
broom.mixed::tidy(Fit2_Poisson)
## # A tibble: 6 × 7
##   effect   group term            estimate std.error statistic p.value
##   <chr>    <chr> <chr>              <dbl>     <dbl>     <dbl>   <dbl>
## 1 fixed    <NA>  (Intercept)       3.84     0.0315      122.        0
## 2 fixed    <NA>  Diet1:Time        0.0666   0.00105      63.7       0
## 3 fixed    <NA>  Diet2:Time        0.0749   0.00129      57.9       0
## 4 fixed    <NA>  Diet3:Time        0.0868   0.00123      70.5       0
## 5 fixed    <NA>  Diet4:Time        0.0763   0.00126      60.4       0
## 6 ran_pars Chick sd__(Intercept)   0.213   NA            NA        NA

Se observan diferencias entre los modelos, porque, en el modelo lineal da un estimate del intercepto de 3.85 y cuando se aleatorizan la variable individuo en el modelo mixtose observaun ligero cambio de ese intercepto a 3.83. Por otro lado, se observa que la identidad del pollo capta alguna variabilidad y esto genera que no sean iguales los modelos. Para concluir si se toma en cuenta la variablidad entre individuos esto mejora el modelo, asimismo, cuando se toma la indentidad del pollo es necesario que se tenga más de una medida por cada individuo para poder hacer el modelo aleatorio.

CONCLUSIÓN: Se usa el modelo lineal mixto porque se observa que la identidad de los individuos genera un cambio en los resultados, por esta razón, este modelo permite dividir entre variables fijas (controlados) y aleatorias (no controlados). En cambio, el modelo lineal solo toma en cuenta un efecto.

Importancia del Modelo lineal mixto en la agricultura:

El script utiliza un modelo lineal mixto porque considera la presencia de efectos aleatorios, en este caso, el efecto de las plantas individuales en la captación de CO2. El modelo mixto es adecuado cuando se tienen variables aleatorias o efectos no predecibles que influyen en la respuesta. En agricultura, los modelos lineales mixtos ofrecen varias ventajas importantes: 1. Consideración de la variabilidad individual: Los modelos mixtos tienen la capacidad de tener en cuenta la variabilidad individual que puede existir entre las plantas, animales o parcelas de una misma especie. Esto es especialmente relevante en estudios agrícolas, ya que las características de las plantas individuales pueden variar significativamente y afectar los resultados de las mediciones. 2. Medidas repetidas: Los modelos mixtos son útiles cuando se realizan mediciones repetidas en el tiempo o en diferentes condiciones. Permiten modelar la estructura de correlación entre las observaciones repetidas, teniendo en cuenta la dependencia entre ellas. En agricultura, esto es común en estudios de seguimiento de cultivos a lo largo del tiempo o en ensayos que involucran múltiples parcelas o tratamientos. 3. Manejo de efectos fijos y aleatorios: Los modelos mixtos pueden incorporar tanto efectos fijos como aleatorios. Los efectos fijos representan factores que se consideran constantes y de interés en el estudio, como los tratamientos experimentales o las variables ambientales. Los efectos aleatorios capturan la variabilidad no predecible asociada a las unidades de observación, como las plantas individuales. Al considerar ambos tipos de efectos, se obtiene una estimación más precisa de los efectos fijos y se tiene en cuenta la estructura de dependencia entre las observaciones. 4. Flexibilidad en el diseño experimental: Los modelos mixtos permiten manejar diseños experimentales complejos, como diseños completamente aleatorizados, bloques aleatorizados, parcelas divididas y diseños de medidas repetidas. Esto es relevante en agricultura, donde los estudios a menudo involucran diseños experimentales específicos para controlar fuentes de variabilidad y obtener conclusiones más sólidas.