# Solución al problema del texto del material de diseños factoriales completos
# Dr. Carlos Téllez Martínez
# Marzo de 2015
# Lectura de datos
## =================================================================================

# Lectura de datos
Duracion <- read.csv("/Carlos Tellez Martinez/SkyDrive/Clases/Diseño de Experimentos/Curso en Blackboard/Curso/Tema 4/Videos/Duracion.csv")
Duracion
##     Material Temperatura Duracion
## 1  Material1          15      155
## 2  Material1          80       34
## 3  Material1         125       20
## 4  Material2          15      150
## 5  Material2          80      126
## 6  Material2         125       25
## 7  Material3          15      138
## 8  Material3          80      174
## 9  Material3         125       96
## 10 Material1          15      130
## 11 Material1          80       40
## 12 Material1         125       70
## 13 Material2          15      188
## 14 Material2          80      122
## 15 Material2         125       58
## 16 Material3          15      168
## 17 Material3          80      150
## 18 Material3         125       82
## 19 Material1          15       74
## 20 Material1          80       80
## 21 Material1         125       82
## 22 Material2          15      159
## 23 Material2          80      106
## 24 Material2         125       70
## 25 Material3          15      110
## 26 Material3          80      120
## 27 Material3         125      104
## 28 Material1          15      180
## 29 Material1          80       75
## 30 Material1         125       58
## 31 Material2          15      126
## 32 Material2          80      115
## 33 Material2         125       45
## 34 Material3          15      160
## 35 Material3          80      139
## 36 Material3         125       60
attach(Duracion)
## The following object is masked _by_ .GlobalEnv:
## 
##     Duracion
names(Duracion)
## [1] "Material"    "Temperatura" "Duracion"
str(Duracion)
## 'data.frame':    36 obs. of  3 variables:
##  $ Material   : Factor w/ 3 levels "Material1","Material2",..: 1 1 1 2 2 2 3 3 3 1 ...
##  $ Temperatura: int  15 80 125 15 80 125 15 80 125 15 ...
##  $ Duracion   : int  155 34 20 150 126 25 138 174 96 130 ...
# Cambio de variables
FactorA_Material <- factor(Material)
FactorB_Temperatura <- factor(Temperatura)
Respuesta_Duracion <- Duracion$Duracion

# Cálculo de la tabla ANOVA
Modelo <- lm(Respuesta_Duracion ~ (FactorA_Material + FactorB_Temperatura)^2)
ANOVA <- aov(Modelo)
summary(ANOVA)
##                                      Df Sum Sq Mean Sq F value   Pr(>F)
## FactorA_Material                      2  10633    5317   7.983  0.00189
## FactorB_Temperatura                   2  39083   19542  29.344 1.69e-07
## FactorA_Material:FactorB_Temperatura  4   9438    2359   3.543  0.01897
## Residuals                            27  17981     666                 
##                                         
## FactorA_Material                     ** 
## FactorB_Temperatura                  ***
## FactorA_Material:FactorB_Temperatura *  
## Residuals                               
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Coeficientes de la ecuación de regresión
coef(ANOVA)
##                                      (Intercept) 
##                                           134.75 
##                        FactorA_MaterialMaterial2 
##                                            21.00 
##                        FactorA_MaterialMaterial3 
##                                             9.25 
##                            FactorB_Temperatura80 
##                                           -77.50 
##                           FactorB_Temperatura125 
##                                           -77.25 
##  FactorA_MaterialMaterial2:FactorB_Temperatura80 
##                                            39.00 
##  FactorA_MaterialMaterial3:FactorB_Temperatura80 
##                                            79.25 
## FactorA_MaterialMaterial2:FactorB_Temperatura125 
##                                           -29.00 
## FactorA_MaterialMaterial3:FactorB_Temperatura125 
##                                            18.75
# Graficas de los efectos principales
Efectos <- data.frame(FactorA_Material, FactorB_Temperatura, Respuesta_Duracion)
plot.design(Efectos, fun="mean", main=" Gráfica de efectos principales", ylab= "Duración", xlab="Factor")

# Gráfica de interacción
interaction.plot(FactorA_Material, FactorB_Temperatura, Respuesta_Duracion,
                 main="Interacción Material-Temperatura", xlab="Material", ylab="Temperatura", col=c(1:3))

# Análisis de los residuos estándar del modelo
plot(rstandard(Modelo), 
     main="Gráfica de residuos estándar",
     xlab="Observación", ylab="Residuos estandarizados")

## No se observan problemas con los datos
qqnorm(rstandard(Modelo))
qqline(rstandard(Modelo), col="red")

shapiro.test(rstandard(Modelo))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(Modelo)
## W = 0.9777, p-value = 0.6672
# Los residuos se comportan de forma normal, no se observan problemas con los datos

# Para ver los valores ajustados por la regresión:
fitted(Modelo)
##      1      2      3      4      5      6      7      8      9     10 
## 134.75  57.25  57.50 155.75 117.25  49.50 144.00 145.75  85.50 134.75 
##     11     12     13     14     15     16     17     18     19     20 
##  57.25  57.50 155.75 117.25  49.50 144.00 145.75  85.50 134.75  57.25 
##     21     22     23     24     25     26     27     28     29     30 
##  57.50 155.75 117.25  49.50 144.00 145.75  85.50 134.75  57.25  57.50 
##     31     32     33     34     35     36 
## 155.75 117.25  49.50 144.00 145.75  85.50
# Graficando los valores tanto los ajustados como los reales
plot(fitted(Modelo),
     Respuesta_Duracion, col=c("red", "blue"), pch=19,
     main="Gráfica de valores ajustados y reales",
     ylab="Valores reales", xlab="Valores ajustados")
legend(50, 190, col=c("red","blue"), legend=c("Ajustado", "Real"), pch=19)

# Para hacer predicciones
# Se hace la predicción con los valores que salen del análisis
FactorA_Material2 <- factor(c("Material1", "Material2" ,"Material3"))
FactorB_Temperatura2 <- factor(c(15,15,15))
predict(lm(Respuesta_Duracion ~ (FactorA_Material + FactorB_Temperatura)^2), 
       data.frame(FactorA_Material= FactorA_Material2, FactorB_Temperatura= FactorB_Temperatura2), 
       level=0.95, interval="confidence")
##      fit      lwr      upr
## 1 134.75 108.2751 161.2249
## 2 155.75 129.2751 182.2249
## 3 144.00 117.5251 170.4749
## La predicción para Material 2 con Temperatura de 15 es de 155.75 de duración
# Para probar el material más homogéneo
# Se aprecia que el material 3 es el más homogéneo
FactorA_Material2 <- factor(c("Material3", "Material3" ,"Material3"))
FactorB_Temperatura2 <- factor(c(15,80, 125))
predict(lm(Respuesta_Duracion ~ (FactorA_Material + FactorB_Temperatura)^2), 
        data.frame(FactorA_Material= FactorA_Material2, FactorB_Temperatura= FactorB_Temperatura2), 
        level=0.95, interval="confidence")
##      fit       lwr      upr
## 1 144.00 117.52515 170.4749
## 2 145.75 119.27515 172.2249
## 3  85.50  59.02515 111.9749
# Es homogéneo a temperatura baja y media, baja a alta temperatura