Iris.csv

library(car)
## Loading required package: carData
library(leaps)
library(faraway)
## 
## Attaching package: 'faraway'
## The following objects are masked from 'package:car':
## 
##     logit, vif
library(MASS)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
# Lectura de los datos
#setwd(<aquí ponen el nombre de la carpeta donde tienen sus datos)
  Iris<-read.csv("Iris.csv",row.names=1) # lectura del archivo eventualmente read.table con sus opciones
  attach(Iris)                               # archivo en uso
  lab <- rownames(Iris)                      # etiquetas de las unidades en lab 
  nom <- colnames(Iris)                      # etiquetas de las variables en nom    
  n = dim(Iris)[1]                           # número de unidades 
  p = dim(Iris)[2]                           # número de variables     
  plot(Iris)

#### Tabla de Promedios

# Tablas de promedios
  n_t = length(iris[,3])                     # numerosidad total
  m_t = mean(iris[,3])                       # promedio total
  v_t = var(iris[,3])*(n_t-1)/n_t            # varianza total
  s_t = sqrt(v_t)                            # desvío estándar total   
  cvt = s_t/m_t                              # coeficiente de variación total
  total=rbind(n_t,m_t,v_t,s_t,cvt)           # tabla total
  total
##            [,1]
## n_t 150.0000000
## m_t   3.7580000
## v_t   3.0955027
## s_t   1.7594041
## cvt   0.4681756
  n_unit=table(iris[,5])                     # numerosidad clases
  mean=tapply(iris[,3],iris[,5],mean)        # promedios clases
  var=tapply(iris[,3],iris[,5],var)          # varianzas clases
#  var=var*(n_unit-1)/n_unit                  # ajuste  
  stdev=sqrt(var)                            # desvío estándar clases
  cv=stdev/mean                              # coeficiente de variación clases  
  brk=rbind(n_unit,mean,var,stdev,cv)        # tabla clases
  brk
##             setosa versicolor   virginica
## n_unit 50.00000000 50.0000000 50.00000000
## mean    1.46200000  4.2600000  5.55200000
## var     0.03015918  0.2208163  0.30458776
## stdev   0.17366400  0.4699110  0.55189470
## cv      0.11878522  0.1103077  0.09940466
  brtot=cbind(brk,total)                     # unión tablas
  colnames(brtot) = c(colnames(brk),"total")
  brtot
##             setosa versicolor   virginica       total
## n_unit 50.00000000 50.0000000 50.00000000 150.0000000
## mean    1.46200000  4.2600000  5.55200000   3.7580000
## var     0.03015918  0.2208163  0.30458776   3.0955027
## stdev   0.17366400  0.4699110  0.55189470   1.7594041
## cv      0.11878522  0.1103077  0.09940466   0.4681756
# Realizar el ANOVA con el modelo con intercepto
modelo_con_intercepto <- aov(Sepal.Length ~ Species, data = iris)
summary(modelo_con_intercepto)
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Species       2  63.21  31.606   119.3 <2e-16 ***
## Residuals   147  38.96   0.265                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Grados de libertad (Df):

# Species: 2
# Residuals: 147
# Los grados de libertad para Species (2) corresponden al número de niveles del factor Species menos uno (3 especies - 1 = 2). Los grados de libertad residuales (147) son el total de observaciones (150) menos el número de grupos (3).

# Suma de cuadrados (Sum Sq):

# Species: 63.21
# Residuals: 38.96
# La suma de cuadrados para Species (63.21) mide la variabilidad de la variable respuesta (Sepal.Length) explicada por las diferencias entre las especies. La suma de cuadrados residuales (38.96) mide la variabilidad no explicada por el modelo.

# Cuadrados medios (Mean Sq):

# Species: 31.606
# Residuals: 0.265
# Los cuadrados medios se obtienen dividiendo la suma de cuadrados por sus respectivos grados de libertad. Para Species, es 63.21/2 = 31.606, y para los residuos, es 38.96/147 = 0.265.

# Valor F (F value): 119.3

# El valor F se calcula como la razón de los cuadrados medios del factor y de los residuos: 31.606 / 0.265 = 119.3. Este valor indica cuántas veces mayor es la variabilidad explicada por el factor Species en comparación con la variabilidad no explicada.

# Valor p (Pr(>F)): < 2e-16

# El valor p asociado con el valor F es extremadamente pequeño (menor que 2e-16), lo que indica una fuerte evidencia contra la hipótesis nula. En este contexto, la hipótesis nula es que no hay diferencias en la longitud del sépalo entre las especies. Dado el valor p, rechazamos la hipótesis nula y concluimos que hay diferencias significativas en la longitud del sépalo entre las especies.

# Los resultados del ANOVA muestran que hay una diferencia significativa en la longitud del sépalo (Sepal.Length) entre las diferentes especies de iris. La variabilidad explicada por la especie es significativamente mayor que la variabilidad no explicada (residual), como lo indica el alto valor F y el extremadamente bajo valor p.
# Obtener los coeficientes estimados del modelo con intercepto
coef(modelo_con_intercepto)
##       (Intercept) Speciesversicolor  Speciesvirginica 
##             5.006             0.930             1.582
# Cálculo de los promedios
# Promedio de setosa: Es el intercepto (𝛽o): Promedio setosa= βo =5.006

# Promedio de versicolor: Es el intercepto más el coeficiente de Speciesversicolor (𝛽1): Promedio versicolor=β0+ β1 =5.006+0.930=5.936

# Promedio de virginica: Es el intercepto más el coeficiente de Speciesvirginica (𝛽0+𝛽2) : Promedio virginica=5.006+1.582=6.588
# Realizar el ANOVA con el modelo sin intercepto
modelo_sin_intercepto <- aov(Sepal.Length ~ Species - 1, data = iris)
summary(modelo_sin_intercepto)
##            Df Sum Sq Mean Sq F value Pr(>F)    
## Species     3   5185  1728.3    6522 <2e-16 ***
## Residuals 147     39     0.3                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Grados de libertad (Df):

# Species: 3
# Residuals: 147
# Los grados de libertad para Species (3) corresponden al número de niveles del factor Species (3 especies). Los grados de libertad residuales (147) son el total de observaciones (150) menos el número de grupos (3).

# Suma de cuadrados (Sum Sq):

# Species: 5185
# Residuals: 39
# La suma de cuadrados para Species (5185) mide la variabilidad de la variable respuesta (Sepal.Length) explicada por las diferencias entre las especies. La suma de cuadrados residuales (39) mide la variabilidad no explicada por el modelo.

# Cuadrados medios (Mean Sq):

# Species: 1728.3
# Residuals: 0.3
# Los cuadrados medios se obtienen dividiendo la suma de cuadrados por sus respectivos grados de libertad. Para Species, es 5185/3 = 1728.3, y para los residuos, es 39/147 = 0.3.

# Valor F (F value): 6522

# El valor F se calcula como la razón de los cuadrados medios del factor y de los residuos: 1728.3 / 0.3 = 6522. Este valor indica cuántas veces mayor es la variabilidad explicada por el factor Species en comparación con la variabilidad no explicada.

# Valor p (Pr(>F)): < 2e-16

# El valor p asociado con el valor F es extremadamente pequeño (menor que 2e-16), lo que indica una fuerte evidencia contra la hipótesis nula. En este contexto, la hipótesis nula es que no hay diferencias en la longitud del sépalo entre las especies. Dado el valor p, rechazamos la hipótesis nula y concluimos que hay diferencias significativas en la longitud del sépalo entre las especies.
# Calcular el promedio general directamente de los datos
promedio_general <- mean(iris$Sepal.Length)
promedio_general
## [1] 5.843333
# Si usamos promedios específicos:
promedio_general <- mean(c(5.006, 5.936, 6.588))
promedio_general
## [1] 5.843333
# Ambos modelos confirman que hay diferencias significativas en la longitud del sépalo entre las especies. Sin embargo, el modelo sin intercepto proporciona directamente los promedios de cada especie, mientras que el modelo con intercepto requiere ajustes a partir de los coeficientes estimados. Ambos modelos son útiles dependiendo de la forma en que deseamos interpretar los coeficientes y promedios.

Wines.csv

# Lectura de los datos
#setwd(<aquí ponen el nombre de la carpeta donde tienen sus datos)
  Wines<-read.csv("Wines.csv",row.names=1) # lectura del archivo eventualmente read.table con sus opciones
  attach(Wines)                               # archivo en uso
  lab <- rownames(Wines)                      # etiquetas de las unidades en lab 
  nom <- colnames(Wines)                      # etiquetas de las variables en nom    
  n = dim(Wines)[1]                           # número de unidades 
  p = dim(Wines)[2]                           # número de variables     
head(Wines)
##           Label      Soil Odor.Intensity.before.shaking Aroma.quality.before.shaking Fruity.before.shaking Flower.before.shaking Spice.before.shaking Visual.intensity Nuance Surface.feeling Odor.Intensity Quality.of.odour Fruity Flower Spice Plante Phenolic Aroma.intensity Aroma.persistency
## 2EL      Saumur      Env1                         3.074                        3.000                 2.714                 2.280                1.960            4.321  4.000           3.269          3.407            3.308  2.885  2.320 1.840  2.000    1.650           3.259             2.963
## 1CHA     Saumur      Env1                         2.964                        2.821                 2.375                 2.280                1.680            3.222  3.000           2.808          3.370            3.000  2.560  2.440 1.739  2.000    1.381           2.962             2.808
## 1FON Bourgueuil      Env1                         2.857                        2.929                 2.560                 1.960                2.077            3.536  3.393           3.000          3.250            2.929  2.769  2.192 2.250  1.750    1.250           3.077             2.800
## 1VAU     Chinon      Env2                         2.808                        2.593                 2.417                 1.913                2.160            2.893  2.786           2.538          3.160            2.880  2.391  2.083 2.167  2.304    1.476           2.542             2.583
## 1DAM     Saumur Reference                         3.607                        3.429                 3.154                 2.154                2.040            4.393  4.036           3.385          3.536            3.360  3.160  2.231 2.148  1.762    1.600           3.615             3.296
## 2BOU Bourgueuil Reference                         2.857                        3.111                 2.577                 2.040                2.077            4.464  4.259           3.407          3.179            3.385  2.800  2.240 2.148  1.750    1.476           3.214             3.148
##      Aroma.quality Attack.intensity Acidity Astringency Alcohol Balance Smooth Bitterness Intensity Harmony Overall.quality Typical
## 2EL          3.200            2.963   2.107       2.429   2.500   3.250  2.731      1.926     2.857   3.143           3.393   3.250
## 1CHA         2.926            3.036   2.107       2.179   2.654   2.926  2.500      1.926     2.893   2.964           3.214   3.036
## 1FON         3.077            3.222   2.179       2.250   2.643   3.321  2.679      2.000     3.074   3.143           3.536   3.179
## 1VAU         2.478            2.704   3.179       2.185   2.500   2.333  1.680      1.963     2.462   2.038           2.464   2.250
## 1DAM         3.462            3.464   2.571       2.536   2.786   3.464  3.036      2.071     3.643   3.643           3.741   3.444
## 2BOU         3.321            3.286   2.393       2.643   2.857   3.286  2.857      2.179     3.464   3.500           3.643   3.393
# Realizar el ANOVA de dos vías
modelo_anova_dos_vias <- aov(Acidity ~ Label * Soil, data = Wines)

# Resumen del modelo
summary(modelo_anova_dos_vias)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Label        2 0.2465 0.12327   3.124 0.0809 .
## Soil         3 0.4061 0.13537   3.430 0.0523 .
## Label:Soil   3 0.0248 0.00827   0.210 0.8878  
## Residuals   12 0.4735 0.03946                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Conclusiones
# Efecto de Label:

# El valor p para Label es 0.0809, lo que indica que el efecto de Label en la acidez del vino es marginalmente significativo al nivel del 10% (0.1), pero no es significativo al nivel del 5% (0.05).
# Esto sugiere que puede haber una diferencia en la acidez del vino según las etiquetas, pero no es concluyente.

# Efecto de Soil:

# El valor p para Soil es 0.0523, lo que indica que el efecto de Soil en la acidez del vino es marginalmente significativo al nivel del 5% (0.05).
# Esto sugiere que el tipo de suelo puede tener un efecto en la acidez del vino, pero nuevamente, no es concluyente.

# Interacción Label:Soil:

# El valor p para la interacción entre Label y Soil es 0.8878, lo que indica que no hay una interacción significativa entre estos factores.
# Esto sugiere que el efecto combinado de la etiqueta y el tipo de suelo en la acidez del vino no es significativo.
# Boxplot para visualizar el efecto de Label en Acidity
boxplot(Acidity ~ Label, data = Wines, 
        main = "Efecto de Label en Acidity", 
        xlab = "Label", 
        ylab = "Acidity", 
        col = "lightblue")

# Boxplot para visualizar el efecto de Soil en Acidity
boxplot(Acidity ~ Soil, data = Wines, 
        main = "Efecto de Soil en Acidity", 
        xlab = "Soil", 
        ylab = "Acidity", 
        col = "lightgreen")

# Gráfico de interacción para visualizar la interacción entre Label y Soil en Acidity
interaction.plot(Wines$Label, Wines$Soil, Wines$Acidity,
                 col = c("red", "blue", "green", "purple"), 
                 lty = 1, 
                 lwd = 2, 
                 main = "Interacción entre Label y Soil en Acidity",
                 xlab = "Label", 
                 ylab = "Acidity", 
                 trace.label = "Soil")

# Efecto de Label: El boxplot muestra que Chinon tiene una mayor acidez y variabilidad, lo cual es consistente con el ANOVA que indica un efecto marginalmente significativo de Label.

# Visualmente, se observa que Env4 y Reference tienen medianas más altas en comparación con Env1 y Env2, lo que sugiere una diferencia en los niveles de acidez entre los tipos de suelo, consistente con la indicación marginalmente significativa del ANOVA.

# Efecto de Label y Soil:
# ANOVA: Ambos factores (Label y Soil) tienen valores p marginalmente significativos, indicando que podrían tener un efecto en la acidez.
# Gráfico de Interacción: Las tendencias en el gráfico son consistentes con estos resultados, mostrando diferencias en la acidez para diferentes niveles de Label y Soil.
# Modelo sin interacción
modelo_sin_interaccion <- aov(Acidity ~ Label + Soil, data = Wines)
summary(modelo_sin_interaccion)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Label        2 0.2465 0.12327   3.710 0.0491 *
## Soil         3 0.4061 0.13537   4.074 0.0266 *
## Residuals   15 0.4983 0.03322                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(modelo_sin_interaccion)
## Analysis of Variance Table
## 
## Response: Acidity
##           Df  Sum Sq  Mean Sq F value  Pr(>F)  
## Label      2 0.24654 0.123270  3.7104 0.04907 *
## Soil       3 0.40610 0.135366  4.0745 0.02656 *
## Residuals 15 0.49834 0.033223                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo_sin_interaccion)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Label        2 0.2465 0.12327   3.710 0.0491 *
## Soil         3 0.4061 0.13537   4.074 0.0266 *
## Residuals   15 0.4983 0.03322                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Modelo con interacción
modelo_con_interaccion <- aov(Acidity ~ Label * Soil, data = Wines)
summary(modelo_con_interaccion)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Label        2 0.2465 0.12327   3.124 0.0809 .
## Soil         3 0.4061 0.13537   3.430 0.0523 .
## Label:Soil   3 0.0248 0.00827   0.210 0.8878  
## Residuals   12 0.4735 0.03946                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(modelo_con_interaccion)
## Analysis of Variance Table
## 
## Response: Acidity
##            Df  Sum Sq  Mean Sq F value  Pr(>F)  
## Label       2 0.24654 0.123270  3.1238 0.08088 .
## Soil        3 0.40610 0.135366  3.4304 0.05229 .
## Label:Soil  3 0.02481 0.008270  0.2096 0.88782  
## Residuals  12 0.47353 0.039461                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo_con_interaccion)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Label        2 0.2465 0.12327   3.124 0.0809 .
## Soil         3 0.4061 0.13537   3.430 0.0523 .
## Label:Soil   3 0.0248 0.00827   0.210 0.8878  
## Residuals   12 0.4735 0.03946                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparación de modelos
anova(modelo_sin_interaccion, modelo_con_interaccion)
## Analysis of Variance Table
## 
## Model 1: Acidity ~ Label + Soil
## Model 2: Acidity ~ Label * Soil
##   Res.Df     RSS Df Sum of Sq      F Pr(>F)
## 1     15 0.49834                           
## 2     12 0.47353  3  0.024811 0.2096 0.8878
# Interpretación:

# Conclusiones
# Efectos Principales:

# En el modelo sin interacción, tanto Label como Soil tienen efectos significativos en la acidez (Acidity).
# En el modelo con interacción, los efectos de Label y Soil son marginalmente significativos, pero la interacción entre Label y Soil no es significativa.
# Interacción:

# La interacción entre Label y Soil no es significativa, lo que sugiere que los efectos combinados de estos factores no afectan significativamente la acidez.
# Elección del Modelo:

# Dado que la interacción no es significativa y el valor p para la comparación de modelos es alto (0.8878), se puede concluir que el modelo sin interacción (Label + Soil) es adecuado para describir los efectos en la acidez.