# Cargo de librerias
library(ggplot2)
library(tidyverse)
library(dplyr)
library(gridExtra)
# lectura de la base
data = read.csv("GTL.csv")
head(data)

Punto 1

Se presentan estadísticos resumen de la variable Light con respecto al factor Glass:

# Estadísticos con respecto al factor Glass.
by(data$Light, data$Glass, summary)
## data$Glass: A
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     568     580    1087    1015    1380    1392 
## ------------------------------------------------------------ 
## data$Glass: B
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     530     579    1035     967    1299    1328 
## ------------------------------------------------------------ 
## data$Glass: C
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   546.0   599.0   889.0   838.2  1045.0  1066.0
# Desviación estandar con respecto al factor Glass.
by(data$Light, data$Glass, sd)
## data$Glass: A
## [1] 356.3289
## ------------------------------------------------------------ 
## data$Glass: B
## [1] 333.784
## ------------------------------------------------------------ 
## data$Glass: C
## [1] 212.2527

De estos resultados se observa lo siguiente:

Punto 2

# Estadísticos con respecto al factor Temp.
by(data$Light, data$Temp, summary)
## data$Temp: 100
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   530.0   550.0   570.0   566.3   579.0   599.0 
## ------------------------------------------------------------ 
## data$Temp: 125
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1000    1045    1066    1059    1085    1090 
## ------------------------------------------------------------ 
## data$Temp: 150
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     867     904    1312    1195    1380    1392
# Desviación estandar con respecto al factor Glass.
by(data$Light, data$Temp, sd)
## data$Temp: 100
## [1] 20.93442
## ------------------------------------------------------------ 
## data$Temp: 125
## [1] 29.32576
## ------------------------------------------------------------ 
## data$Temp: 150
## [1] 233.8829

De estos resultados se observa lo siguiente:

Punto 3

# Mediana por ambos factores.
tapply(data$Light, list(data$Glass, data$Temp), median)
##   100  125  150
## A 570 1087 1386
## B 550 1035 1312
## C 575 1053  889
# Media por ambos factores.
tapply(data$Light, list(data$Glass, data$Temp), mean)
##        100      125       150
## A 572.6667 1087.333 1386.0000
## B 553.0000 1035.000 1313.0000
## C 573.3333 1054.667  886.6667

Putno 4

Se realiza un gráfico comparativo de cajas y bigotes con los promedios para los datos crudos:

ggplot(data, aes(y=Light, x=Temp, fill = Glass,)) + ggtitle(
  "Bosplot entre las variables Light, Glass y Temp") +
  geom_boxplot() +
  stat_summary(aes(y=Light, x=Temp),
               fun=mean, geom="point", shape=20, 
               size=4, color="green", position = position_dodge(0.75))

Se observa que existe una ampli

Adicionalmente, se presentan gráficos individuales entre la variable Light y el factor Glass, así como de la Light y el factor Temp.

ggplot(data, aes(y=Light, x=Glass, fill = Glass)) + ggtitle(
  "Bosplot entre las variables Light y Glass") +
  geom_boxplot() +
  stat_summary(aes(y=Light, x=Glass),
               fun=mean, geom="point", shape=20, 
               size=4, color="green", position = position_dodge(0.75))

data$Temp <- as.factor(data$Temp)
ggplot(data, aes(y=Light, x=Temp, fill = Temp)) + ggtitle(
  "Bosplot entre las variables Light y Temp") +
  geom_boxplot() +
  stat_summary(aes(y=Light, x=Temp),
               fun=mean, geom="point", shape=20, 
               size=4, color="green", position = position_dodge(0.75))

Punto 5

Se realiza un gráfico de lineas que conecta los promedios de la variable Light con respecto a los factores Glass y Temp.

ggplot(data2, aes(y = dat,x = fac2)) + 
  geom_line(aes(y = dat, group = fac1, color = fac1)) +
  geom_point(aes(y = dat, group = fac1, color = fac1)) +
  ggtitle("Grafico de medias.") +
  xlab("Glass.") +
  ylab("Temp.") +
  labs(color = "Glass.")

Punto 6

Punto 7

Del gráfico de los box-plot por cada factor, se puede evidenciar que, para la varibale temp el tipo de temperatura 150 presenta una mayor variación en sus observaciones con respecto a las demás, igual, se videncia que para los otros dos tipos de tempratura, su media es muy similar a su mediana. Para la varibale Glass se puede observar que para cada uno de los factores, indican las observaciones una variabilidad alta, y que la mediana se comporta similiar a su media.

Punto 8

Punto 9

se implementa un modelo ANOVA a los datos crudos en R de la siguiente manera:

anova = aov(data = data, Light ~ Glass + Temp + (Glass*Temp) )
summary(anova)
##             Df  Sum Sq Mean Sq F value   Pr(>F)    
## Glass        2  150865   75432   206.4 3.89e-13 ***
## Temp         2 1970335  985167  2695.3  < 2e-16 ***
## Glass:Temp   4  290552   72638   198.7 1.25e-14 ***
## Residuals   18    6579     366                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Además, se verifican los supuestos de dicho modelo.Primero de manera gráfica:

par(mar = c(2, 1, 1, 1))
par(mfrow=c(2,2))
plot(anova)

Se observa gráficamente como, los datos no presentan normalidad, ya que cuenta con colas muy pesadas, las cuales hacen que en su mayoría los datos no se apeguen a la recta de normalidad. Por otro lado, analizando el gráfico de residuales contra los valores ajustados, se aprecian rachas de puntos, por lo cual se concluye que dichos datos tampoco cumplen con el supuesto de varianza constante.

Adicionalmente, se realizan test de normalidad y de varianza constante en R de la siguiente forma:

shapiro.test(data$Light)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$Light
## W = 0.87975, p-value = 0.004745

punto 10

Primeramente, se hallan los rangos de la variable Light:

light_rank = rank(data$Light)

Luego, se implementa un modelo ANOVA a dichos rangos en R de la siguiente manera:

anova_rank = aov(light_rank~  data$Glass + data$Temp + (data$Glass*data$Temp))
summary(anova_rank)
##                      Df Sum Sq Mean Sq F value   Pr(>F)    
## data$Glass            2  180.7    90.3   21.39 1.75e-05 ***
## data$Temp             2 1134.0   567.0  134.29 1.52e-11 ***
## data$Glass:data$Temp  4  247.3    61.8   14.64 1.73e-05 ***
## Residuals            18   76.0     4.2                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Se observa como los resultados de modelo ajustado, tanto para los datos en crudos, así como para los rangos de dichos datos, difieren en sus valores Mean Sq, F value, Pr(>F) y demás. Lo cual muestra que, dado que no se cumplen los supuestos de normalidad y varianza constante, la ANOVA de una vía no es invariante ante transformaciones.

Ahora, se realiza un gráfico de cajas y bigotes sobre los rangos de los datos y se compara con el anterior bosplot de los datos crudos:

# Gráfico con rangos.
ggplot(data, aes(y = rank(Light), x = as.factor(Temp), fill = Glass ))+
  geom_boxplot() +
  stat_summary(aes(y = rank(Light), x = as.factor(Temp)), 
               fun = mean, geom = "point", shape = 20,
               size = 4, color = "green", position = position_dodge(0.75)) +
  ggtitle("Light por Glass y Temp. con rangos.") +
  xlab("Temp.")+
  ylab("Light")

punto 11

Inicialmente, se calculan los efectos relativos de los rangos de los datos, se calculan en R así:

# calculo de rango promedio por cada muestra 

EfectoRel = (1/(nrow(data)))*(light_rank - 0.5)
EfectoRel
##  [1] 0.27777778 0.12962963 0.16666667 0.09259259 0.01851852 0.24074074
##  [7] 0.05555556 0.20370370 0.31481481 0.75925926 0.72222222 0.68518519
## [13] 0.64814815 0.50000000 0.46296296 0.53703704 0.57407407 0.61111111
## [19] 0.98148148 0.90740741 0.94444444 0.87037037 0.83333333 0.79629630
## [25] 0.35185185 0.42592593 0.38888889

Posteriormente, se implementa un modelo ANOVA a dichos efectos relativos en R de la siguiente manera:

anova_efect = aov(EfectoRel~  data$Glass + data$Temp + (data$Glass*data$Temp))
summary(anova_efect)
##                      Df Sum Sq Mean Sq F value   Pr(>F)    
## data$Glass            2 0.2478  0.1239   21.39 1.75e-05 ***
## data$Temp             2 1.5556  0.7778  134.29 1.52e-11 ***
## data$Glass:data$Temp  4 0.3393  0.0848   14.64 1.73e-05 ***
## Residuals            18 0.1043  0.0058                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Se observa como los resultados de modelo ajustado, tanto para los rangos de los datos en crudos, así como para los efectos relativos de dichos datos, presentan los mismos valores Mean Sq, F value, Pr(>F) y demás. Lo cual muestra que, dado que con la metodologia no paramétrica sin importar que no se cumplan los supuestos de normalidad y varianza constante, se mantiene la consistencia de los resultados arrojados por el ANOVA.

Ahora, se realiza un gráfico de cajas y bigotes sobre los efectos de los rangos de los datos en crudo:

# Gráfico con efectos relativos.
ggplot(data, aes(y = EfectoRel, x = as.factor(Temp), fill = Glass ))+
  geom_boxplot() +
  stat_summary(aes(y = EfectoRel, x = as.factor(Temp)), 
               fun = mean, geom = "point", shape = 20,
               size = 4, color = "green", position = position_dodge(0.75)) +
  ggtitle("Light por Glass y Temp. con efectos relativos.") +
  xlab("Temp.")+
  ylab("Light")

Punto 12

Se realiza un gráfico comparativo de cajas y bigotes para los datos crudos, sus rangos y sus efectos relativos:

Se observa como el primer gráfico boXplot presenta conjuntos de cajas muy separados, lo cual indica una alta variabilidad entre los distintos niveles de los factores. Mientras que, los gráficos boxplots de los rangos y de los efectos relativos presentan un comportamiento similar.