library(collapsibleTree)
b<-8  #columnas
k<-7  #filas
row1 <- factor(rep(1:k, times <- b))
col1 <- factor(c(rep(1,k),rep(2,k),rep(3,k),rep(4,k),rep(5,k),rep(6,k),rep(7,k),rep(8,k)))
treat<-factor(c("D","H","C","B","E","A","G",
                "F","E","G","A","H","B","C",
                "B","C","H","D","G","F","E",
                "A","G","E","F","C","D","H",
                "C","B","D","H","A","E","F",
                "E","F","A","G","D","C","B",
                "G","A","F","E","B","H","D",
                "H","D","B","C","F","G","A"))

y<-c(16.6,16.9,17.4,17.4,15.8,18.2,15.7,
     15.9,16.4,15.8,19.0,17.6,17.8,18.9,
     17.1,16.8,19.2,16.6,15.8,17.8,18.4,
     17.7,15.9,16.3,16.0,17.6,17.8,18.1, 
     17.4,17.0,16.8,19.2,20.3,18.4,15.9, 
     16.5,16.0,16.9,15.9,17.1,17.5,17.4, 
     15.8,16.9,15.9,16.5,17.6,19.4,17.1, 
     18.6,17.4,17.4,19.2,16.8,15.7,17.4)
     

dat2<-data.frame(row1, col1, treat, y)
library(collapsibleTree)
collapsibleTreeSummary(dat2, hierarchy = c('col1', 'row1', 'treat','y'))
N<-xtabs(~treat + col1, data <- dat2);N
##      col1
## treat 1 2 3 4 5 6 7 8
##     A 1 1 0 1 1 1 1 1
##     B 1 1 1 0 1 1 1 1
##     C 1 1 1 1 1 1 0 1
##     D 1 0 1 1 1 1 1 1
##     E 1 1 1 1 1 1 1 0
##     F 0 1 1 1 1 1 1 1
##     G 1 1 1 1 0 1 1 1
##     H 1 1 1 1 1 0 1 1
v<-nlevels(treat);
n<-b*k;
T1<-aggregate(dat2$y, by<-list(treat<-dat2$treat),FUN<-sum);
Tt<-matrix(T1$x,v,1);# totales de Trat
T2<-aggregate(dat2$y, by<-list(row1<-dat2$row1),FUN<-sum);
Tr<-matrix(T2$x,k,1);# totales filas
T3<-aggregate(dat2$y, by<-list(col1<-dat2$col1),FUN<-sum);
Tc<-matrix(T3$x,b,1)#totales Columna
i<-1:k
j<-1:b
if((b==k)&&(N[i,j]==1)){
  print("dado el diseño cuadrado latino");
  #si es un DCL uno corre el código antes considerado.
  }else{
    x<-0;z<-0;
    if(v>=2 && k<v)
      {
      A<-N%*%t(N);
              for(i in 2:v){
                 x1<-A[1,1]-A[i,i];
                x<-x+abs(x1);
                }
              sum1<-sum(x);sum1
              for(i in 1:v){
                for(j in 1:v){
                  if(i!=j){
                    x2<-A[1,2]-A[i,j];
                    z<-z+abs(x2)}
                  }}
              sum2<-sum(z);
              if(sum1==0 && sum2==0){
                r<-A[1,1];
                lambda<-A[1,2];
                cat("dado el diseño cuadrado de Youden \n con r y lambda respectivamente")
                print(r);
                print(lambda);
                #se define el vector columna de k entradas todas en 1
                ek<-c(matrix(rep(1,k),k,1));
                Dk<-diag(k)-(ek%*%t(ek))/v;
                Q<-Tt-(N%*%Tc)/k;
                alpha_hat<-(k/(lambda*v))*Q;
                beta_hat<-(Tc/k)-(t(N)%*%Q)/(lambda*v);
                gamma_hat<-Tr/v;
                print("Las estimaciones son");
                print("mu_hat");
                print("0");
                print("alpha_hat");
                print(alpha_hat);
                print("beta_hat")
                print(beta_hat)
                print("gamma_hat")
                print(gamma_hat);
                #probando hipótesis H_alpha, H_beta y H_gamma
                myfit <- lm(y~treat+row1+col1, dat2);
                anova(myfit);
                  }}}
## dado el diseño cuadrado de Youden 
##  con r y lambda respectivamente[1] 7
## [1] 6
## [1] "Las estimaciones son"
## [1] "mu_hat"
## [1] "0"
## [1] "alpha_hat"
##      
## treat       [,1]
##     A  0.8750000
##     B  0.1416667
##     C  0.5895833
##     D -0.1520833
##     E -0.2895833
##     F -0.9666667
##     G -1.3604167
##     H  1.1625000
## [1] "beta_hat"
##     
## col1     [,1]
##    1 16.71905
##    2 17.32113
##    3 17.51071
##    4 17.07738
##    5 17.66280
##    6 16.92321
##    7 17.11280
##    8 17.45863
## [1] "gamma_hat"
##         [,1]
## [1,] 16.9500
## [2,] 16.6625
## [3,] 16.9625
## [4,] 17.4750
## [5,] 17.3250
## [6,] 17.8250
## [7,] 17.3625
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## treat      7 38.494  5.4992 10.5175 4.866e-07 ***
## row1       6  7.299  1.2164  2.3265   0.05386 .  
## col1       7  4.927  0.7039  1.3462   0.25867    
## Residuals 35 18.300  0.5229                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#Comparación de los tratamientos cuando el diseño es de tipo youden (modelo diferente)
El efecto de los tratamientos: tienen mejor respuesta los tratamientos A, B, H y c Segun el p-Valor de los tratamientos, se rechaza la H_o ya que el valor es <0.05

#Analisis descriptivo

med_trat=tapply(dat2$y, dat2$treat, mean)
barplot(med_trat, ylim = c(0,20), main = 'Distribucion de la respuesta por tratamiento')
abline(h=mean(dat2$y))

Al ver el grafico podemos decir que 4 de los tratamientos tienen efecto negativo y 4 de los tratamientos tienen efecto positivo

med_trat=tapply(dat2$y, dat2$row1, mean)
barplot(med_trat, ylim = c(0,20), main = 'Distribucion de la respuesta por bloque fila')
abline(h=mean(dat2$y))

med_trat=tapply(dat2$y, dat2$col1, mean)
barplot(med_trat, ylim = c(0,20), main = 'Distribucion de la respuesta por bloque columna')
abline(h=mean(dat2$y))