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
library(datarium)
df<-read.csv("https://raw.githubusercontent.com/gidasan08/DExperimental/main/Problema%205.csv")
df
##    ï..ID Ruido Angulo0 Angulo4 Angulo8
## 1      1    SR     420     420     480
## 2      1    CR     480     600     780
## 3      2    SR     420     480     480
## 4      2    CR     360     480     600
## 5      3    SR     480     480     540
## 6      3    CR     660     780     780
## 7      4    SR     420     540     540
## 8      4    CR     480     780     900
## 9      5    SR     540     660     540
## 10     5    CR     480     660     720
## 11     6    SR     360     420     360
## 12     6    CR     360     480     540
## 13     7    SR     480     480     600
## 14     7    CR     540     720     840
## 15     8    SR     480     600     660
## 16     8    CR     540     720     900
## 17     9    SR     540     600     540
## 18     9    CR     480     720     780
## 19    10    SR     480     420     540
## 20    10    CR     540     660     780
df$ï..ID=factor(df$ï..ID)
df$Ruido=factor(df$Ruido)
df$Angulo0=as.numeric(df$Angulo0)
df$Angulo4=as.numeric(df$Angulo4)
df$Angulo8=as.numeric(df$Angulo8)
df
##    ï..ID Ruido Angulo0 Angulo4 Angulo8
## 1      1    SR     420     420     480
## 2      1    CR     480     600     780
## 3      2    SR     420     480     480
## 4      2    CR     360     480     600
## 5      3    SR     480     480     540
## 6      3    CR     660     780     780
## 7      4    SR     420     540     540
## 8      4    CR     480     780     900
## 9      5    SR     540     660     540
## 10     5    CR     480     660     720
## 11     6    SR     360     420     360
## 12     6    CR     360     480     540
## 13     7    SR     480     480     600
## 14     7    CR     540     720     840
## 15     8    SR     480     600     660
## 16     8    CR     540     720     900
## 17     9    SR     540     600     540
## 18     9    CR     480     720     780
## 19    10    SR     480     420     540
## 20    10    CR     540     660     780
df<-df %>% gather(key="Angulo",value="score","Angulo0", "Angulo4", "Angulo8") %>% convert_as_factor(ï..ID, Angulo)
df
##    ï..ID Ruido  Angulo score
## 1      1    SR Angulo0   420
## 2      1    CR Angulo0   480
## 3      2    SR Angulo0   420
## 4      2    CR Angulo0   360
## 5      3    SR Angulo0   480
## 6      3    CR Angulo0   660
## 7      4    SR Angulo0   420
## 8      4    CR Angulo0   480
## 9      5    SR Angulo0   540
## 10     5    CR Angulo0   480
## 11     6    SR Angulo0   360
## 12     6    CR Angulo0   360
## 13     7    SR Angulo0   480
## 14     7    CR Angulo0   540
## 15     8    SR Angulo0   480
## 16     8    CR Angulo0   540
## 17     9    SR Angulo0   540
## 18     9    CR Angulo0   480
## 19    10    SR Angulo0   480
## 20    10    CR Angulo0   540
## 21     1    SR Angulo4   420
## 22     1    CR Angulo4   600
## 23     2    SR Angulo4   480
## 24     2    CR Angulo4   480
## 25     3    SR Angulo4   480
## 26     3    CR Angulo4   780
## 27     4    SR Angulo4   540
## 28     4    CR Angulo4   780
## 29     5    SR Angulo4   660
## 30     5    CR Angulo4   660
## 31     6    SR Angulo4   420
## 32     6    CR Angulo4   480
## 33     7    SR Angulo4   480
## 34     7    CR Angulo4   720
## 35     8    SR Angulo4   600
## 36     8    CR Angulo4   720
## 37     9    SR Angulo4   600
## 38     9    CR Angulo4   720
## 39    10    SR Angulo4   420
## 40    10    CR Angulo4   660
## 41     1    SR Angulo8   480
## 42     1    CR Angulo8   780
## 43     2    SR Angulo8   480
## 44     2    CR Angulo8   600
## 45     3    SR Angulo8   540
## 46     3    CR Angulo8   780
## 47     4    SR Angulo8   540
## 48     4    CR Angulo8   900
## 49     5    SR Angulo8   540
## 50     5    CR Angulo8   720
## 51     6    SR Angulo8   360
## 52     6    CR Angulo8   540
## 53     7    SR Angulo8   600
## 54     7    CR Angulo8   840
## 55     8    SR Angulo8   660
## 56     8    CR Angulo8   900
## 57     9    SR Angulo8   540
## 58     9    CR Angulo8   780
## 59    10    SR Angulo8   540
## 60    10    CR Angulo8   780

Resumen Estadistico

df %>% group_by(Angulo) %>% get_summary_stats(score,type="mean_sd")
## # A tibble: 3 x 5
##   Angulo  variable     n  mean    sd
##   <fct>   <chr>    <dbl> <dbl> <dbl>
## 1 Angulo0 score       20   477  74.1
## 2 Angulo4 score       20   585 123. 
## 3 Angulo8 score       20   645 154.
df
##    ï..ID Ruido  Angulo score
## 1      1    SR Angulo0   420
## 2      1    CR Angulo0   480
## 3      2    SR Angulo0   420
## 4      2    CR Angulo0   360
## 5      3    SR Angulo0   480
## 6      3    CR Angulo0   660
## 7      4    SR Angulo0   420
## 8      4    CR Angulo0   480
## 9      5    SR Angulo0   540
## 10     5    CR Angulo0   480
## 11     6    SR Angulo0   360
## 12     6    CR Angulo0   360
## 13     7    SR Angulo0   480
## 14     7    CR Angulo0   540
## 15     8    SR Angulo0   480
## 16     8    CR Angulo0   540
## 17     9    SR Angulo0   540
## 18     9    CR Angulo0   480
## 19    10    SR Angulo0   480
## 20    10    CR Angulo0   540
## 21     1    SR Angulo4   420
## 22     1    CR Angulo4   600
## 23     2    SR Angulo4   480
## 24     2    CR Angulo4   480
## 25     3    SR Angulo4   480
## 26     3    CR Angulo4   780
## 27     4    SR Angulo4   540
## 28     4    CR Angulo4   780
## 29     5    SR Angulo4   660
## 30     5    CR Angulo4   660
## 31     6    SR Angulo4   420
## 32     6    CR Angulo4   480
## 33     7    SR Angulo4   480
## 34     7    CR Angulo4   720
## 35     8    SR Angulo4   600
## 36     8    CR Angulo4   720
## 37     9    SR Angulo4   600
## 38     9    CR Angulo4   720
## 39    10    SR Angulo4   420
## 40    10    CR Angulo4   660
## 41     1    SR Angulo8   480
## 42     1    CR Angulo8   780
## 43     2    SR Angulo8   480
## 44     2    CR Angulo8   600
## 45     3    SR Angulo8   540
## 46     3    CR Angulo8   780
## 47     4    SR Angulo8   540
## 48     4    CR Angulo8   900
## 49     5    SR Angulo8   540
## 50     5    CR Angulo8   720
## 51     6    SR Angulo8   360
## 52     6    CR Angulo8   540
## 53     7    SR Angulo8   600
## 54     7    CR Angulo8   840
## 55     8    SR Angulo8   660
## 56     8    CR Angulo8   900
## 57     9    SR Angulo8   540
## 58     9    CR Angulo8   780
## 59    10    SR Angulo8   540
## 60    10    CR Angulo8   780

visualización de datos

bxp<-ggboxplot(df,x="Angulo",y="score",color="Ruido",palette="jco")
bxp

Supuestos del Modelo

Outlier

df %>% group_by(Ruido, Angulo) %>% identify_outliers(score)
## # A tibble: 6 x 6
##   Ruido Angulo  ï..ID score is.outlier is.extreme
##   <fct> <fct>   <fct> <dbl> <lgl>      <lgl>     
## 1 CR    Angulo0 2       360 TRUE       FALSE     
## 2 CR    Angulo0 3       660 TRUE       FALSE     
## 3 CR    Angulo0 6       360 TRUE       FALSE     
## 4 CR    Angulo8 6       540 TRUE       FALSE     
## 5 SR    Angulo8 6       360 TRUE       FALSE     
## 6 SR    Angulo8 8       660 TRUE       FALSE

Normalidad

df %>% group_by(Ruido, Angulo) %>% shapiro_test(score)
## # A tibble: 6 x 5
##   Ruido Angulo  variable statistic      p
##   <fct> <fct>   <chr>        <dbl>  <dbl>
## 1 CR    Angulo0 score        0.897 0.202 
## 2 CR    Angulo4 score        0.869 0.0965
## 3 CR    Angulo8 score        0.892 0.180 
## 4 SR    Angulo0 score        0.911 0.287 
## 5 SR    Angulo4 score        0.886 0.151 
## 6 SR    Angulo8 score        0.897 0.203
ggqqplot(df,"score",ggtheme=theme_bw()) + facet_grid(Angulo~
Ruido,labeller="label_both")

homogeneidad de varianza

df %>% group_by(Angulo) %>% 
levene_test(score~Ruido)
## # A tibble: 3 x 5
##   Angulo    df1   df2 statistic     p
##   <fct>   <int> <int>     <dbl> <dbl>
## 1 Angulo0     1    18     0.574 0.458
## 2 Angulo4     1    18     0.372 0.550
## 3 Angulo8     1    18     0.812 0.379

Calculo de ANOVA

Repeated.Measures.ANOVA <- aov(score ~ Angulo + Ruido + Angulo*Ruido + Error(ï..ID/Angulo*Ruido), data=df)
summary(Repeated.Measures.ANOVA)
## 
## Error: ï..ID
##           Df Sum Sq Mean Sq F value Pr(>F)
## Residuals  9 292140   32460               
## 
## Error: Ruido
##       Df Sum Sq Mean Sq
## Ruido  1 285660  285660
## 
## Error: ï..ID:Angulo
##           Df Sum Sq Mean Sq F value   Pr(>F)    
## Angulo     2 289920  144960   40.72 2.09e-07 ***
## Residuals 18  64080    3560                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Error: ï..ID:Ruido
##           Df Sum Sq Mean Sq F value Pr(>F)
## Residuals  9  76140    8460               
## 
## Error: ï..ID:Angulo:Ruido
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## Angulo:Ruido  2 105120   52560   45.31 9.42e-08 ***
## Residuals    18  20880    1160                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res.aov<-anova_test(data=df,dv=score,wid=ï..ID,within=c(Ruido,Angulo))
get_anova_table(res.aov)
## ANOVA Table (type III tests)
## 
##         Effect DFn DFd      F        p p<.05   ges
## 1        Ruido   1   9 33.766 2.56e-04     * 0.387
## 2       Angulo   2  18 40.719 2.09e-07     * 0.390
## 3 Ruido:Angulo   2  18 45.310 9.42e-08     * 0.188

Post Hoc

one.way<- df %>% group_by(Angulo) %>% anova_test(dv=score,wid=ï..ID,within=Ruido) %>% get_anova_table() %>% adjust_pvalue(method="bonferroni")
one.way
## # A tibble: 3 x 9
##   Angulo  Effect   DFn   DFd      F          p `p<.05`   ges      p.adj
## * <fct>   <chr>  <dbl> <dbl>  <dbl>      <dbl> <chr>   <dbl>      <dbl>
## 1 Angulo0 Ruido      1     9   1.55 0.244      ""      0.043 0.732     
## 2 Angulo4 Ruido      1     9  19.7  0.002      "*"     0.392 0.006     
## 3 Angulo8 Ruido      1     9 126.   0.00000138 "*"     0.605 0.00000414

Comparaciones de Medias

pwc<- df %>% 
      group_by(Angulo) %>% 
      pairwise_t_test(
     score~Ruido,paired=TRUE,
     p.adjust.method="bonferroni"
)
pwc
## # A tibble: 3 x 11
##   Angulo  .y.   group1 group2    n1    n2 statistic    df          p      p.adj
## * <fct>   <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>      <dbl>      <dbl>
## 1 Angulo0 score CR     SR        10    10      1.25     9 0.244      0.244     
## 2 Angulo4 score CR     SR        10    10      4.44     9 0.002      0.002     
## 3 Angulo8 score CR     SR        10    10     11.2      9 0.00000138 0.00000138
## # ... with 1 more variable: p.adj.signif <chr>

Reporte

pwc<-pwc %>% add_xy_position(x="Angulo")
bxp+
  stat_pvalue_manual(pwc,tip.length=0,hide.ns=TRUE)+
  labs(
     subtitle=get_test_label(res.aov,detailed=TRUE),
     caption=get_pwc_label(pwc)
  )