Ejemplo de Diseño Factorial implementado en R

Este ejemplo utiliza datos de mediciones de diferentes piezas mecánicas realizadas por dos diferentes inspectores. El objetivo es verificar si existen diferencias significativas entre las piezas y los inspectores. Se realizaron dos mediciones por cada inspector en piezas seleccionadas aleatoriamente.

Los datos se muestran en la siguiente tabla:

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(car)
## Loading required package: carData
library(readxl)
datos=read.csv("dataset_factorial.csv")
#datos=read_excel("nombre_archivo.xlsx")
View(datos)
attach(datos)
head(datos,n=28L)
##    Respuesta Pieza Inspector
## 1      69.38     1         1
## 2      69.72     2         1
## 3      69.58     3         1
## 4      69.50     4         1
## 5      69.48     5         1
## 6      69.56     6         1
## 7      69.90     7         1
## 8      69.60     1         2
## 9      69.80     2         2
## 10     69.70     3         2
## 11     69.50     4         2
## 12     69.40     5         2
## 13     69.40     6         2
## 14     70.02     7         2
## 15     69.62     1         1
## 16     69.78     2         1
## 17     69.70     3         1
## 18     69.46     4         1
## 19     69.50     5         1
## 20     69.68     6         1
## 21     69.94     7         1
## 22     69.52     1         2
## 23     69.90     2         2
## 24     69.92     3         2
## 25     69.50     4         2
## 26     69.42     5         2
## 27     69.64     6         2
## 28     69.88     7         2

Se propone un diseño factorial general con 2 factores, en donde el primer factor corresponde a las piezas evaluadas, las cuales son 7, por lo tanto los niveles de tal factor irán del 1 al 7, para el caso del inspector, se requirieron solo dos de ellos y se replico la medicion 2 veces. El modelo matemático propuesto se define de la siguiente manera:

\[ {y_{ij}}={\mu+\tau_i+\beta_j+{\tau\beta_{ij}}+\varepsilon_{ij}} \] Dado el modelo matemático anterior, realizaremos el modelado mediante la siguiente secuencia de comandos:

f.pieza=as.factor(Pieza)
f.inspector=as.factor(Inspector)
modelo=lm(Respuesta~f.pieza+f.inspector+f.pieza*f.inspector)
summary(modelo)
## 
## Call:
## lm(formula = Respuesta ~ f.pieza + f.inspector + f.pieza * f.inspector)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.1200 -0.0425  0.0000  0.0425  0.1200 
## 
## Coefficients:
##                       Estimate Std. Error  t value Pr(>|t|)    
## (Intercept)           69.50000    0.06492 1070.589  < 2e-16 ***
## f.pieza2               0.25000    0.09181    2.723 0.016493 *  
## f.pieza3               0.14000    0.09181    1.525 0.149544    
## f.pieza4              -0.02000    0.09181   -0.218 0.830691    
## f.pieza5              -0.01000    0.09181   -0.109 0.914809    
## f.pieza6               0.12000    0.09181    1.307 0.212245    
## f.pieza7               0.42000    0.09181    4.575 0.000433 ***
## f.inspector2           0.06000    0.09181    0.654 0.523996    
## f.pieza2:f.inspector2  0.04000    0.12984    0.308 0.762555    
## f.pieza3:f.inspector2  0.11000    0.12984    0.847 0.411118    
## f.pieza4:f.inspector2 -0.04000    0.12984   -0.308 0.762555    
## f.pieza5:f.inspector2 -0.14000    0.12984   -1.078 0.299133    
## f.pieza6:f.inspector2 -0.16000    0.12984   -1.232 0.238121    
## f.pieza7:f.inspector2 -0.03000    0.12984   -0.231 0.820609    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.09181 on 14 degrees of freedom
## Multiple R-squared:  0.8771, Adjusted R-squared:  0.7629 
## F-statistic: 7.682 on 13 and 14 DF,  p-value: 0.0002685

Como lo reporta el modelo propuesto, el coeficiente de determinación es 0.8771, por lo tanto, se concluye que el modelo matemático explica el 87.71% de la variación de las medidas en función de los factores considerados en el análisis.

Procedemos a realizar el Análisis de Varianza mediante la siguiente secuencia de comandos:

anova=aov(modelo)
summary(anova)
##                     Df Sum Sq Mean Sq F value   Pr(>F)    
## f.pieza              6 0.7816 0.13026  15.455 1.89e-05 ***
## f.inspector          1 0.0057 0.00571   0.678    0.424    
## f.pieza:f.inspector  6 0.0545 0.00908   1.077    0.421    
## Residuals           14 0.1180 0.00843                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Según lo reportado en el ANOVA, se concluye que el factor pieza es estadísticamente significativo, es decir, existen diferencias notorias entre las diferentes piezas evaluadas, con un 95% de confianza.

Procedemos a realizar las pruebas de Rango Múltiple mediante la Prueba de Tukey, con la siguiente secuencia de comandos:

tukey=TukeyHSD(anova)
print(tukey)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = modelo)
## 
## $f.pieza
##       diff         lwr          upr     p adj
## 2-1  0.270  0.04833348  0.491666517 0.0129869
## 3-1  0.195 -0.02666652  0.416666517 0.1023164
## 4-1 -0.040 -0.26166652  0.181666517 0.9950976
## 5-1 -0.080 -0.30166652  0.141666517 0.8701939
## 6-1  0.040 -0.18166652  0.261666517 0.9950976
## 7-1  0.405  0.18333348  0.626666517 0.0003386
## 3-2 -0.075 -0.29666652  0.146666517 0.8994904
## 4-2 -0.310 -0.53166652 -0.088333483 0.0042479
## 5-2 -0.350 -0.57166652 -0.128333483 0.0014255
## 6-2 -0.230 -0.45166652 -0.008333483 0.0397444
## 7-2  0.135 -0.08666652  0.356666517 0.4131072
## 4-3 -0.235 -0.45666652 -0.013333483 0.0346003
## 5-3 -0.275 -0.49666652 -0.053333483 0.0112858
## 6-3 -0.155 -0.37666652  0.066666517 0.2721648
## 7-3  0.210 -0.01166652  0.431666517 0.0686754
## 5-4 -0.040 -0.26166652  0.181666517 0.9950976
## 6-4  0.080 -0.14166652  0.301666517 0.8701939
## 7-4  0.445  0.22333348  0.666666517 0.0001256
## 6-5  0.120 -0.10166652  0.341666517 0.5402419
## 7-5  0.485  0.26333348  0.706666517 0.0000488
## 7-6  0.365  0.14333348  0.586666517 0.0009556
## 
## $f.inspector
##           diff         lwr       upr     p adj
## 2-1 0.02857143 -0.04585241 0.1029953 0.4240926
## 
## $`f.pieza:f.inspector`
##                  diff         lwr         upr     p adj
## 2:1-1:1  2.500000e-01 -0.11594095  0.61594095 0.3545182
## 3:1-1:1  1.400000e-01 -0.22594095  0.50594095 0.9402711
## 4:1-1:1 -2.000000e-02 -0.38594095  0.34594095 1.0000000
## 5:1-1:1 -1.000000e-02 -0.37594095  0.35594095 1.0000000
## 6:1-1:1  1.200000e-01 -0.24594095  0.48594095 0.9797412
## 7:1-1:1  4.200000e-01  0.05405905  0.78594095 0.0182079
## 1:2-1:1  6.000000e-02 -0.30594095  0.42594095 0.9999745
## 2:2-1:1  3.500000e-01 -0.01594095  0.71594095 0.0670165
## 3:2-1:1  3.100000e-01 -0.05594095  0.67594095 0.1366190
## 4:2-1:1  1.421085e-14 -0.36594095  0.36594095 1.0000000
## 5:2-1:1 -9.000000e-02 -0.45594095  0.27594095 0.9982721
## 6:2-1:1  2.000000e-02 -0.34594095  0.38594095 1.0000000
## 7:2-1:1  4.500000e-01  0.08405905  0.81594095 0.0103737
## 3:1-2:1 -1.100000e-01 -0.47594095  0.25594095 0.9898120
## 4:1-2:1 -2.700000e-01 -0.63594095  0.09594095 0.2635504
## 5:1-2:1 -2.600000e-01 -0.62594095  0.10594095 0.3066548
## 6:1-2:1 -1.300000e-01 -0.49594095  0.23594095 0.9636724
## 7:1-2:1  1.700000e-01 -0.19594095  0.53594095 0.8215065
## 1:2-2:1 -1.900000e-01 -0.55594095  0.17594095 0.7090325
## 2:2-2:1  1.000000e-01 -0.26594095  0.46594095 0.9954752
## 3:2-2:1  6.000000e-02 -0.30594095  0.42594095 0.9999745
## 4:2-2:1 -2.500000e-01 -0.61594095  0.11594095 0.3545182
## 5:2-2:1 -3.400000e-01 -0.70594095  0.02594095 0.0803619
## 6:2-2:1 -2.300000e-01 -0.59594095  0.13594095 0.4633841
## 7:2-2:1  2.000000e-01 -0.16594095  0.56594095 0.6475131
## 4:1-3:1 -1.600000e-01 -0.52594095  0.20594095 0.8689407
## 5:1-3:1 -1.500000e-01 -0.51594095  0.21594095 0.9087312
## 6:1-3:1 -2.000000e-02 -0.38594095  0.34594095 1.0000000
## 7:1-3:1  2.800000e-01 -0.08594095  0.64594095 0.2252073
## 1:2-3:1 -8.000000e-02 -0.44594095  0.28594095 0.9994522
## 2:2-3:1  2.100000e-01 -0.15594095  0.57594095 0.5849664
## 3:2-3:1  1.700000e-01 -0.19594095  0.53594095 0.8215065
## 4:2-3:1 -1.400000e-01 -0.50594095  0.22594095 0.9402711
## 5:2-3:1 -2.300000e-01 -0.59594095  0.13594095 0.4633841
## 6:2-3:1 -1.200000e-01 -0.48594095  0.24594095 0.9797412
## 7:2-3:1  3.100000e-01 -0.05594095  0.67594095 0.1366190
## 5:1-4:1  1.000000e-02 -0.35594095  0.37594095 1.0000000
## 6:1-4:1  1.400000e-01 -0.22594095  0.50594095 0.9402711
## 7:1-4:1  4.400000e-01  0.07405905  0.80594095 0.0125100
## 1:2-4:1  8.000000e-02 -0.28594095  0.44594095 0.9994522
## 2:2-4:1  3.700000e-01  0.00405905  0.73594095 0.0463813
## 3:2-4:1  3.300000e-01 -0.03594095  0.69594095 0.0961639
## 4:2-4:1  2.000000e-02 -0.34594095  0.38594095 1.0000000
## 5:2-4:1 -7.000000e-02 -0.43594095  0.29594095 0.9998625
## 6:2-4:1  4.000000e-02 -0.32594095  0.40594095 0.9999998
## 7:2-4:1  4.700000e-01  0.10405905  0.83594095 0.0071435
## 6:1-5:1  1.300000e-01 -0.23594095  0.49594095 0.9636724
## 7:1-5:1  4.300000e-01  0.06405905  0.79594095 0.0150911
## 1:2-5:1  7.000000e-02 -0.29594095  0.43594095 0.9998625
## 2:2-5:1  3.600000e-01 -0.00594095  0.72594095 0.0557912
## 3:2-5:1  3.200000e-01 -0.04594095  0.68594095 0.1147878
## 4:2-5:1  1.000000e-02 -0.35594095  0.37594095 1.0000000
## 5:2-5:1 -8.000000e-02 -0.44594095  0.28594095 0.9994522
## 6:2-5:1  3.000000e-02 -0.33594095  0.39594095 1.0000000
## 7:2-5:1  4.600000e-01  0.09405905  0.82594095 0.0086060
## 7:1-6:1  3.000000e-01 -0.06594095  0.66594095 0.1620508
## 1:2-6:1 -6.000000e-02 -0.42594095  0.30594095 0.9999745
## 2:2-6:1  2.300000e-01 -0.13594095  0.59594095 0.4633841
## 3:2-6:1  1.900000e-01 -0.17594095  0.55594095 0.7090325
## 4:2-6:1 -1.200000e-01 -0.48594095  0.24594095 0.9797412
## 5:2-6:1 -2.100000e-01 -0.57594095  0.15594095 0.5849664
## 6:2-6:1 -1.000000e-01 -0.46594095  0.26594095 0.9954752
## 7:2-6:1  3.300000e-01 -0.03594095  0.69594095 0.0961639
## 1:2-7:1 -3.600000e-01 -0.72594095  0.00594095 0.0557912
## 2:2-7:1 -7.000000e-02 -0.43594095  0.29594095 0.9998625
## 3:2-7:1 -1.100000e-01 -0.47594095  0.25594095 0.9898120
## 4:2-7:1 -4.200000e-01 -0.78594095 -0.05405905 0.0182079
## 5:2-7:1 -5.100000e-01 -0.87594095 -0.14405905 0.0034167
## 6:2-7:1 -4.000000e-01 -0.76594095 -0.03405905 0.0265016
## 7:2-7:1  3.000000e-02 -0.33594095  0.39594095 1.0000000
## 2:2-1:2  2.900000e-01 -0.07594095  0.65594095 0.1914652
## 3:2-1:2  2.500000e-01 -0.11594095  0.61594095 0.3545182
## 4:2-1:2 -6.000000e-02 -0.42594095  0.30594095 0.9999745
## 5:2-1:2 -1.500000e-01 -0.51594095  0.21594095 0.9087312
## 6:2-1:2 -4.000000e-02 -0.40594095  0.32594095 0.9999998
## 7:2-1:2  3.900000e-01  0.02405905  0.75594095 0.0319584
## 3:2-2:2 -4.000000e-02 -0.40594095  0.32594095 0.9999998
## 4:2-2:2 -3.500000e-01 -0.71594095  0.01594095 0.0670165
## 5:2-2:2 -4.400000e-01 -0.80594095 -0.07405905 0.0125100
## 6:2-2:2 -3.300000e-01 -0.69594095  0.03594095 0.0961639
## 7:2-2:2  1.000000e-01 -0.26594095  0.46594095 0.9954752
## 4:2-3:2 -3.100000e-01 -0.67594095  0.05594095 0.1366190
## 5:2-3:2 -4.000000e-01 -0.76594095 -0.03405905 0.0265016
## 6:2-3:2 -2.900000e-01 -0.65594095  0.07594095 0.1914652
## 7:2-3:2  1.400000e-01 -0.22594095  0.50594095 0.9402711
## 5:2-4:2 -9.000000e-02 -0.45594095  0.27594095 0.9982721
## 6:2-4:2  2.000000e-02 -0.34594095  0.38594095 1.0000000
## 7:2-4:2  4.500000e-01  0.08405905  0.81594095 0.0103737
## 6:2-5:2  1.100000e-01 -0.25594095  0.47594095 0.9898120
## 7:2-5:2  5.400000e-01  0.17405905  0.90594095 0.0019846
## 7:2-6:2  4.300000e-01  0.06405905  0.79594095 0.0150911

Se encuentran diferencias seignificativas entre las piezas.

Porocedemos a analizar las gráficas de caja, mediante la siguiente secuencia de comandos:

pieza=boxplot(Respuesta~f.pieza,
              xlab = "Identificador de pieza",
              ylab = "Medicion (mm)",
              main = "Medicion promedio por pieza",
              col = "skyblue")

inspector=boxplot(Respuesta~f.inspector,
                  xlab = "Identificador de inspector",
                  ylab="Medicion (mm)",
                  main="Medicion promedio por inspector",
                  col="orange")

Ahora se muestra las gráficas de interacciones:

interaccion=interaction.plot(x.factor = f.inspector,
                             trace.factor = f.pieza,
                             response = Respuesta,
                             main="Interacciones Inspector-Pieza")

Se realizan las pruebas de adecuación:

normalidad=shapiro.test(resid(modelo))
print(normalidad)
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(modelo)
## W = 0.97251, p-value = 0.6493
independencia=dwtest(modelo)
print(independencia)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.65, p-value = 0.2944
## alternative hypothesis: true autocorrelation is greater than 0
varianzas_iguales=ncvTest(modelo)
print(varianzas_iguales)
## Non-constant Variance Score Test 
## Variance formula: ~ fitted.values 
## Chisquare = 0.001269874, Df = 1, p = 0.97157