Ejercicio:

La set.sed la utiliza para crear datos de forma aleatoria

set.seed(123)
data = expand.grid(x=1:10, y=1:10)
data$rto = rnorm(100, 3, 0.3)
data$rto = sort(data$rto) + runif(100, 0, 0.1)
data$mo = rnorm(100, 2.5, 0.1)
data$mo = sort(data$ mo) + runif(100, 0, 0.1)

siendo

- rto: rendimiento

- mo: materia orgánica

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.2
g1 = ggplot(data)+
  aes(x, y, fill=rto)+
  geom_tile()
g2 = ggplot(data)+
  aes(x,y, fill=mo)+
  geom_tile()
gridExtra::grid.arrange(g1, g2, nrow =1)

ANALISIS DE REGRESION SIMPLE

Solo hay una variable explicativa para, en este caso, el rendimiento. Vamos a usar la técnica de los mínimos cuadrados, esta permite estimar el intercepto y la pendiente (los parametros) del modelo estadítico que planteamos.

Modelo estadístico \[ \hat{y} = \beta_0 + \beta_1x + \epsilon\] Graficamos

plot(x = data$mo, y = data$rto, pch = 16)

mod1 = lm(rto ~ mo, data)
summary(mod1)
## 
## Call:
## lm(formula = rto ~ mo, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.34934 -0.05963 -0.00802  0.06565  0.21694 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.47622    0.24748  -14.05   <2e-16 ***
## mo           2.56595    0.09685   26.49   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.09624 on 98 degrees of freedom
## Multiple R-squared:  0.8775, Adjusted R-squared:  0.8762 
## F-statistic:   702 on 1 and 98 DF,  p-value: < 2.2e-16
plot(data$mo, data$rto, pch=16)
abline(mod1, col= "red", lwd =3)

#Lo llamamos de nuevo para mostrar los datos aparte
summary(mod1)
## 
## Call:
## lm(formula = rto ~ mo, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.34934 -0.05963 -0.00802  0.06565  0.21694 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.47622    0.24748  -14.05   <2e-16 ***
## mo           2.56595    0.09685   26.49   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.09624 on 98 degrees of freedom
## Multiple R-squared:  0.8775, Adjusted R-squared:  0.8762 
## F-statistic:   702 on 1 and 98 DF,  p-value: < 2.2e-16

Interpretación

Modelo para este ejemplo \[\widehat{rto} = -3.48 + 2.57MO \] Revisión de supuestos del modelo

Esto para revisar la normalidad de los residuos. 24% > 5% son normales, es decir, tienen una distribución normal (campana)

shapiro.test(mod1$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod1$residuals
## W = 0.98357, p-value = 0.2495

Homocedasticidad

Observamos que la variabilidad de los datos es mas o menos “igual”

plot(mod1$residuals, pch=16)

ANALISIS DE COVARIANZA

Es la mezcla entre la regresión lineal y analisis de varianza.

set.seed(123)
data = expand.grid(x=1:10, y=1:10)
data$rto = rnorm(100, 3, 0.3)
data$rto = sort(data$rto) + runif(100, 0, 0.1)
data$mo = rnorm(100, 2.5, 0.1)
data$mo = sort(data$ mo) + runif(100, 0, 0.1)

data$trt = gl(4, 25, 100, c("S0", "sf", "si", "sfi"))

TIP: Este es un diseño factorial simple completamente al azar, factorial simple sin bloqueo.

En este caso vamos a tomar covariable MO, tenemos covariables, se usa ANCOVA.

Modelo estadístico \[y_{ij} = \mu + \tau_i + \theta(x_{ij}-\bar{x})+ \epsilon_{ij} \]

¿De dónde sale este modelo?

Siendo theta la covariables que añadimos al modelo anterior Cambio de rendimiento (pendiente) El efecto que tiene la meteria organica en el rendimiento. Los factores que afectan el rto son la MO, semilla y error.

Hipótesis 1

\[H_0: \theta =0\] Hipotesis 2 \[H_0: \mu_{s0} = \mu_{sf} = \mu_{fi} = \mu{sfi}\]

mod2 = aov(rto ~ mo + trt, data)
summary(mod2)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## mo           1  6.502   6.502  989.51  < 2e-16 ***
## trt          3  0.283   0.094   14.38 8.45e-08 ***
## Residuals   95  0.624   0.007                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretamos

MO, vamos al pvalor 2x10-16 < 0.05 rechazo H01 Por tanto, la pendiente no es 0 y hay una relación entre la MO y el rendimiento

trt, vamos al pvalor 8.45x10 -8 < 0.05 rechazo la H02

boxplot(rto ~ trt, data)

#Con este entendemos que el rendimiento es mejor con el cuarto tratamiento fungi + insecticida. 

Revisión de supuestos

shapiro.test(mod2$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod2$residuals
## W = 0.96113, p-value = 0.004843
hist(mod2$residuals) 

Revisión de posibles datos atípicos

boxplot(mod2$residuals)

Vemos que si hay un dato atípico.

boxplot(rto ~ trt, data, pch=16)

which.min(data$rto)
## [1] 1
data[which.min(data$rto), ]
##   x y      rto       mo trt
## 1 1 1 2.331122 2.399377  S0
library(outliers)
grubbs.test(mod2$residuals)
## 
##  Grubbs test for one outlier
## 
## data:  mod2$residuals
## G.1 = 4.36012, U = 0.80603, p-value = 0.0002265
## alternative hypothesis: lowest value -0.346216964518421 is an outlier

Caminos remediales para el atipico

  1. Imputar: esto es sustituirlos por su media
  2. eliminar
  3. repetir experimento en la misma parcela

Vamos a imputar:

#Media por tratamiento 
med_trt = tapply(data$rto,
                data$trt,
                mean)
med_trt
##       S0       sf       si      sfi 
## 2.740161 2.979286 3.155851 3.427611
data2 = data
data2$ rto[1] = med_trt["s0"]
head(data2)
##   x y      rto       mo trt
## 1 1 1       NA 2.399377  S0
## 2 2 1 2.506251 2.404943  S0
## 3 3 1 2.554129 2.397630  S0
## 4 4 1 2.586877 2.379526  S0
## 5 5 1 2.660638 2.410530  S0
## 6 6 1 2.708506 2.392674  S0

Corriendo nuevamente el analisis de covarianza con el dato imputado

Este nos permite concluir que los residuales ya son normales pvalue>5% gracias a la imputación del dato atipico

boxplot(rto~ trt, data2)

mod3 =aov(rto ~ mo + trt, data2)
summary(mod3)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## mo           1  6.068   6.068  1144.7  < 2e-16 ***
## trt          3  0.283   0.094    17.8 3.13e-09 ***
## Residuals   94  0.498   0.005                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 1 observation deleted due to missingness
##Normalida de residuales para el modelo con dato imputado
shapiro.test(mod3$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod3$residuals
## W = 0.98876, p-value = 0.5729