Una empresa electrónica busca contratar el proveedor con la mejor calidad de insumos, para ello evalúa de forma aleatoria muestras de la materia prima proveniente de tres proveedores en el último mes, dando puntuaciones de calidad de 0-100. Haga un análisis de los datos obtenidos usando el análisis de varianzas y las pruebas pertinentes. Concluya sobre ¿Cuál empresa posee mejor calidad en sus productos?

Hipótesis

Ho= μ1=μ2=μ3 Las medias son iguales HA= μ1≠μn Alguna de las medias es diferente

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.4     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.0.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(ggpubr)
library(rstatix)
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
ID<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)
A<-c(75,72,87,77,84,82,84,81,78,97,85,81,95,81,72,89,84,73,NA,NA,NA)
B<-c(94,87,80,86,80,67,86,82,86,82,72,77,87,68,80,76,68,86,74,86,90)
C<-c(90,86,92,75,79,94,95,85,86,92,92,85,87,86,92,85,93,89,83,NA,NA)
df<-data.frame(ID=ID,A=A,B=B,C=C)
df
##    ID  A  B  C
## 1   1 75 94 90
## 2   2 72 87 86
## 3   3 87 80 92
## 4   4 77 86 75
## 5   5 84 80 79
## 6   6 82 67 94
## 7   7 84 86 95
## 8   8 81 82 85
## 9   9 78 86 86
## 10 10 97 82 92
## 11 11 85 72 92
## 12 12 81 77 85
## 13 13 95 87 87
## 14 14 81 68 86
## 15 15 72 80 92
## 16 16 89 76 85
## 17 17 84 68 93
## 18 18 73 86 89
## 19 19 NA 74 83
## 20 20 NA 86 NA
## 21 21 NA 90 NA
df <- df %>% gather(key="Proveedor",value="Calidad",A,B,C) %>% convert_as_factor(ID,Proveedor)
df
##    ID Proveedor Calidad
## 1   1         A      75
## 2   2         A      72
## 3   3         A      87
## 4   4         A      77
## 5   5         A      84
## 6   6         A      82
## 7   7         A      84
## 8   8         A      81
## 9   9         A      78
## 10 10         A      97
## 11 11         A      85
## 12 12         A      81
## 13 13         A      95
## 14 14         A      81
## 15 15         A      72
## 16 16         A      89
## 17 17         A      84
## 18 18         A      73
## 19 19         A      NA
## 20 20         A      NA
## 21 21         A      NA
## 22  1         B      94
## 23  2         B      87
## 24  3         B      80
## 25  4         B      86
## 26  5         B      80
## 27  6         B      67
## 28  7         B      86
## 29  8         B      82
## 30  9         B      86
## 31 10         B      82
## 32 11         B      72
## 33 12         B      77
## 34 13         B      87
## 35 14         B      68
## 36 15         B      80
## 37 16         B      76
## 38 17         B      68
## 39 18         B      86
## 40 19         B      74
## 41 20         B      86
## 42 21         B      90
## 43  1         C      90
## 44  2         C      86
## 45  3         C      92
## 46  4         C      75
## 47  5         C      79
## 48  6         C      94
## 49  7         C      95
## 50  8         C      85
## 51  9         C      86
## 52 10         C      92
## 53 11         C      92
## 54 12         C      85
## 55 13         C      87
## 56 14         C      86
## 57 15         C      92
## 58 16         C      85
## 59 17         C      93
## 60 18         C      89
## 61 19         C      83
## 62 20         C      NA
## 63 21         C      NA

Resumen Estadístico

df %>% group_by(Proveedor) %>% get_summary_stats(Calidad,type="mean_sd")
## # A tibble: 3 x 5
##   Proveedor variable     n  mean    sd
##   <fct>     <chr>    <dbl> <dbl> <dbl>
## 1 A         Calidad     18  82.1  7.12
## 2 B         Calidad     21  80.7  7.60
## 3 C         Calidad     19  87.7  5.23
df
##    ID Proveedor Calidad
## 1   1         A      75
## 2   2         A      72
## 3   3         A      87
## 4   4         A      77
## 5   5         A      84
## 6   6         A      82
## 7   7         A      84
## 8   8         A      81
## 9   9         A      78
## 10 10         A      97
## 11 11         A      85
## 12 12         A      81
## 13 13         A      95
## 14 14         A      81
## 15 15         A      72
## 16 16         A      89
## 17 17         A      84
## 18 18         A      73
## 19 19         A      NA
## 20 20         A      NA
## 21 21         A      NA
## 22  1         B      94
## 23  2         B      87
## 24  3         B      80
## 25  4         B      86
## 26  5         B      80
## 27  6         B      67
## 28  7         B      86
## 29  8         B      82
## 30  9         B      86
## 31 10         B      82
## 32 11         B      72
## 33 12         B      77
## 34 13         B      87
## 35 14         B      68
## 36 15         B      80
## 37 16         B      76
## 38 17         B      68
## 39 18         B      86
## 40 19         B      74
## 41 20         B      86
## 42 21         B      90
## 43  1         C      90
## 44  2         C      86
## 45  3         C      92
## 46  4         C      75
## 47  5         C      79
## 48  6         C      94
## 49  7         C      95
## 50  8         C      85
## 51  9         C      86
## 52 10         C      92
## 53 11         C      92
## 54 12         C      85
## 55 13         C      87
## 56 14         C      86
## 57 15         C      92
## 58 16         C      85
## 59 17         C      93
## 60 18         C      89
## 61 19         C      83
## 62 20         C      NA
## 63 21         C      NA
bxp<-ggboxplot(df,x="Proveedor",y="Calidad", add="point")
bxp
## Warning: Removed 5 rows containing non-finite values (stat_boxplot).
## Warning: Removed 5 rows containing missing values (geom_point).

Supuestos del Modelo, identificación de Outliers

df %>% group_by(Proveedor) %>% identify_outliers(Calidad)
## # A tibble: 1 x 5
##   Proveedor ID    Calidad is.outlier is.extreme
##   <fct>     <fct>   <dbl> <lgl>      <lgl>     
## 1 A         10         97 TRUE       FALSE

Normalidad

df %>% group_by(Proveedor) %>% shapiro_test(Calidad)
## # A tibble: 3 x 4
##   Proveedor variable statistic     p
##   <fct>     <chr>        <dbl> <dbl>
## 1 A         Calidad      0.949 0.410
## 2 B         Calidad      0.939 0.205
## 3 C         Calidad      0.931 0.179
ggqqplot(df,"Calidad",facet.by="Proveedor")
## Warning: Removed 5 rows containing non-finite values (stat_qq).
## Warning: Removed 5 rows containing non-finite values (stat_qq_line).

## Warning: Removed 5 rows containing non-finite values (stat_qq_line).

ANOVA

res.aov<-anova_test(data=df,dv=Calidad,wid=ID,within=Proveedor)
## Warning: NA detected in rows: 19,20,21,62,63.
## Removing this rows before the analysis.
get_anova_table(res.aov)
## ANOVA Table (type III tests)
## 
##      Effect DFn DFd     F     p p<.05   ges
## 1 Proveedor   2  34 5.781 0.007     * 0.201

Comparación de medias

pwc<-df %>% pairwise_t_test(Calidad~Proveedor,paired=TRUE,p.adjust.method="bonferroni")
pwc
## # A tibble: 3 x 10
##   .y.     group1 group2    n1    n2 statistic    df     p p.adj p.adj.signif
## * <chr>   <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl> <chr>       
## 1 Calidad A      B         21    21     0.674    17 0.51  1     ns          
## 2 Calidad A      C         21    21    -3.07     17 0.007 0.021 *           
## 3 Calidad B      C         21    21    -3.42     18 0.003 0.009 **
pwc <- pwc %>% add_xy_position(x="Proveedor")
  bxp+
  stat_pvalue_manual(pwc) +
    labs(subtitle = get_test_label(res.aov,detailed=TRUE),caption=get_pwc_label(pwc))
## Warning: Removed 5 rows containing non-finite values (stat_boxplot).
## Warning: Removed 5 rows containing missing values (geom_point).

Conclusión

En el diagrama de cajas y bigotes, se observan a los proveedores 1 y 2 obtuvieron peor calificación que el 3. El único outliers que se muestra no es significativo, por lo que no se descarta de la muestra. Los datos presentan un comportamiento normal según la prueba de Shapiro, con un valor de p >0.05, al 95% de confianza, en los gráficos de normalidad, se presentan una distribución normal de los datos. Con el análisis de varianza ANOVA se demuestra un efecto significativo del proveedor con p<0.05 al 95% de confianza. En la prueba de Bonferroni de comparación de medias, se puede decir que la calidad 3 es significativa con respecto a los grupos A y B con un valor de p<0.05 y 95% de confianza. Con los datos obtenidos con p<0.05 podemos rechazar la hipótesis nula de igualdad de medias y se acepta la Ha de que al menos una media es diferente.Podemos concluir que el proveedor 3 debe ser contratado por la empresa, ya que la calidad de insumos es superior a la calidad de los otros proveedores.