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.
# 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.