#ejercicio 1
# Datos proporcionados
SSTr <- 300    # Suma de cuadrados de tratamientos
SSE <- 460     # Suma de cuadrados del error
k <- 5         # Número de niveles del factor (tratamientos)
n <- 7         # Número de observaciones por nivel (unidades experimentales)

# Cálculos
N <- k * n                            # Total de observaciones
df_trat <- k - 1                      # Grados de libertad para tratamientos
df_error <- N - k                     # Grados de libertad para el error
df_total <- N - 1                     # Grados de libertad total
MS_trat <- SSTr / df_trat             # Cuadrado medio para tratamientos
MS_error <- SSE / df_error            # Cuadrado medio para el error
F <- MS_trat / MS_error               # Estadístico F
p_valor <- 1 - pf(F, df_trat, df_error) # Valor-p asociado al estadístico F

# Generar la tabla ANOVA
tabla_anova <- data.frame(
  `Fuente de Variación` = c("Tratamientos", "Error", "Total"),
  `Suma de Cuadrados` = c(SSTr, SSE, SSTr + SSE),
  `Grados de Libertad` = c(df_trat, df_error, df_total),
  `Cuadrado Medio` = c(MS_trat, MS_error, NA),
  `F` = c(F, NA, NA),
  `Valor-p` = c(p_valor, NA, NA)
)

# Mostrar la tabla
print(tabla_anova)
##   Fuente.de.Variación Suma.de.Cuadrados Grados.de.Libertad Cuadrado.Medio
## 1        Tratamientos               300                  4       75.00000
## 2               Error               460                 30       15.33333
## 3               Total               760                 34             NA
##          F     Valor.p
## 1 4.891304 0.003709674
## 2       NA          NA
## 3       NA          NA
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (p_valor < 0.05) {
  cat("Rechazamos H0: Existen diferencias significativas entre los tratamientos.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente de diferencias significativas.\n")
}
## Rechazamos H0: Existen diferencias significativas entre los tratamientos.
rm(SSTr, SSE, df_trat, df_error, df_total, MS_trat, MS_error, F_calculado, valor_p)
## Warning in rm(SSTr, SSE, df_trat, df_error, df_total, MS_trat, MS_error, :
## object 'F_calculado' not found
## Warning in rm(SSTr, SSE, df_trat, df_error, df_total, MS_trat, MS_error, :
## object 'valor_p' not found
#ejercicio 2
# Datos proporcionados
SSTr <- 1200    # Suma de cuadrados de tratamientos
SST <- 1800     # Suma de cuadrados total
k <- 3          # Número de tratamientos
n1 <- 12         # Unidades experimentales para el primer tratamiento
n2 <- 15         # Unidades experimentales para el segundo tratamiento
n3 <- 20         # Unidades experimentales para el tercer tratamiento

# Total de unidades experimentales
N <- n1 + n2 + n3  # Total de observaciones

# Grados de libertad
df_trat <- k - 1                  # Grados de libertad para tratamientos
df_error <- N - k                 # Grados de libertad para el error
df_total <- N - 1                 # Grados de libertad total

# Suma de cuadrados del error
SSE <- SST - SSTr                 # Suma de cuadrados del error

# Cuadrados medios
MS_trat <- SSTr / df_trat         # Cuadrado medio para tratamientos
MS_error <- SSE / df_error        # Cuadrado medio para el error

# Estadístico F
F <- MS_trat / MS_error           # Estadístico F

# Valor-p
p_valor <- 1 - pf(F, df_trat, df_error)  # Valor-p asociado al estadístico F

# Generar la tabla ANOVA
tabla_anova <- data.frame(
  `Fuente de Variación` = c("Tratamientos", "Error", "Total"),
  `Suma de Cuadrados` = c(SSTr, SSE, SST),
  `Grados de Libertad` = c(df_trat, df_error, df_total),
  `Cuadrado Medio` = c(MS_trat, MS_error, NA),
  `F` = c(F, NA, NA),
  `Valor-p` = c(p_valor, NA, NA)
)

# Mostrar la tabla
print(tabla_anova)
##   Fuente.de.Variación Suma.de.Cuadrados Grados.de.Libertad Cuadrado.Medio  F
## 1        Tratamientos              1200                  2      600.00000 44
## 2               Error               600                 44       13.63636 NA
## 3               Total              1800                 46             NA NA
##        Valor.p
## 1 3.186629e-11
## 2           NA
## 3           NA
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (p_valor < 0.05) {
  cat("Rechazamos H0: Existen diferencias significativas entre los tratamientos.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente de diferencias significativas.\n")
}
## Rechazamos H0: Existen diferencias significativas entre los tratamientos.
rm(SSTr, SST, k, n1, n2, n3, N, df_trat, df_error, df_total, SSE, MS_trat, MS_error, F, p_valor, tabla_anova)
#ejercicio 3
# Datos proporcionados para los tratamientos A y B
tratamiento_A <- c(136, 107, 92, 82, 85, 120, 114, 113, 107, 125, 104, 101, 89, 131, 107, 114, 129, 109, 97, 117, 102)
tratamiento_B <- c(114, 104, 110, 120, 98, 89, 106, 119, 107, 100, 146, 86, 96, 44, 173, 78)

# Combinamos los datos en un solo vector para ANOVA
datos <- c(tratamiento_A, tratamiento_B)
grupo <- factor(rep(c("A", "B"), c(length(tratamiento_A), length(tratamiento_B))))  # Etiquetas de los grupos

# Realizamos el análisis de varianza (ANOVA)
anova_resultado <- aov(datos ~ grupo)

# Resumen de la tabla ANOVA
summary(anova_resultado)
##             Df Sum Sq Mean Sq F value Pr(>F)
## grupo        1     81    81.4   0.173   0.68
## Residuals   35  16459   470.2
# Realizamos los cálculos de la tabla ANOVA
SSTr <- sum((tapply(datos, grupo, mean) - mean(datos))^2 * table(grupo))  # Suma de cuadrados tratamientos
SSE <- sum((datos - tapply(datos, grupo, mean)[grupo])^2)  # Suma de cuadrados error
df_trat <- length(unique(grupo)) - 1  # Grados de libertad para tratamientos
df_error <- length(datos) - length(unique(grupo))  # Grados de libertad para el error
MS_trat <- SSTr / df_trat  # Cuadrado medio para tratamientos
MS_error <- SSE / df_error  # Cuadrado medio para error
F_calculado <- MS_trat / MS_error  # Estadístico F
valor_p <- 1 - pf(F_calculado, df_trat, df_error)  # Valor-p asociado al estadístico F

# Imprimimos los resultados
cat("Suma de cuadrados para tratamientos (SSTr):", SSTr, "\n")
## Suma de cuadrados para tratamientos (SSTr): 81.40573
cat("Suma de cuadrados del error (SSE):", SSE, "\n")
## Suma de cuadrados del error (SSE): 16458.7
cat("Cuadrado medio para tratamientos (MS_trat):", MS_trat, "\n")
## Cuadrado medio para tratamientos (MS_trat): 81.40573
cat("Cuadrado medio para el error (MS_error):", MS_error, "\n")
## Cuadrado medio para el error (MS_error): 470.2486
cat("Estadístico F:", F_calculado, "\n")
## Estadístico F: 0.1731121
cat("Valor-p:", valor_p, "\n")
## Valor-p: 0.679901
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (valor_p < 0.05) {
  cat("Rechazamos H0: Existe una diferencia significativa entre las medias de los tratamientos.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente para afirmar que las medias son diferentes.\n")
}
## No se puede rechazar H0: No hay evidencia suficiente para afirmar que las medias son diferentes.
rm(tratamiento_A, tratamiento_B, datos, grupo, anova_resultado, SSTr, SSE, df_trat, df_error, MS_trat, MS_error, F_calculado, valor_p)
#ejercico 4 
# Datos proporcionados
SST <- 10800    # Suma de cuadrados total
SSA <- 4560     # Suma de cuadrados tratamientos
k <- 3          # Número de tratamientos (métodos)
N <- 30         # Total de empleados

# Cálculos
SSE <- SST - SSA        # Suma de cuadrados del error
df_trat <- k - 1        # Grados de libertad para tratamientos
df_error <- N - k       # Grados de libertad para el error
df_total <- N - 1       # Grados de libertad total

# Cuadrados medios
MS_trat <- SSA / df_trat    # Cuadrado medio para tratamientos
MS_error <- SSE / df_error  # Cuadrado medio para el error

# Estadístico F
F_calculado <- MS_trat / MS_error  # Estadístico F

# Valor-p
p_valor <- 1 - pf(F_calculado, df_trat, df_error)  # Valor-p asociado al estadístico F

# Generar la tabla ANOVA
tabla_anova <- data.frame(
  `Fuente de Variación` = c("Tratamientos", "Error", "Total"),
  `Suma de Cuadrados` = c(SSA, SSE, SST),
  `Grados de Libertad` = c(df_trat, df_error, df_total),
  `Cuadrado Medio` = c(MS_trat, MS_error, NA),
  `F` = c(F_calculado, NA, NA),
  `Valor-p` = c(p_valor, NA, NA)
)

# Mostrar la tabla ANOVA
print(tabla_anova)
##   Fuente.de.Variación Suma.de.Cuadrados Grados.de.Libertad Cuadrado.Medio
## 1        Tratamientos              4560                  2      2280.0000
## 2               Error              6240                 27       231.1111
## 3               Total             10800                 29             NA
##          F      Valor.p
## 1 9.865385 0.0006078148
## 2       NA           NA
## 3       NA           NA
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (p_valor < 0.05) {
  cat("Rechazamos H0: Existen diferencias significativas entre las medias de los métodos de fabricación.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente para afirmar que las medias son diferentes.\n")
}
## Rechazamos H0: Existen diferencias significativas entre las medias de los métodos de fabricación.
# Borrar las variables utilizadas después del análisis
rm(SST, SSA, k, N, SSE, df_trat, df_error, df_total, MS_trat, MS_error, F_calculado, p_valor, tabla_anova)
#ejercicio 5
# Datos de los rendimientos para cada temperatura
temperatura_50 <- c(34, 39, 23, 28, 32)
temperatura_60 <- c(24, 30, 34, 23, 27)
temperatura_70 <- c(36, 31, 28, 30, 31)

# Combinamos los datos en un solo vector
rendimiento <- c(temperatura_50, temperatura_60, temperatura_70)

# Crear un factor para representar las temperaturas
temperatura <- factor(rep(c("50°C", "60°C", "70°C"), each = 5))

# Realizamos el análisis de varianza (ANOVA)
anova_resultado <- aov(rendimiento ~ temperatura)

# Mostrar resumen de ANOVA
summary(anova_resultado)
##             Df Sum Sq Mean Sq F value Pr(>F)
## temperatura  2   43.2    21.6   0.986  0.401
## Residuals   12  262.8    21.9
# Cálculos de la tabla ANOVA
SSTr <- sum((tapply(rendimiento, temperatura, mean) - mean(rendimiento))^2 * table(temperatura))  # Suma de cuadrados tratamientos
SSE <- sum((rendimiento - tapply(rendimiento, temperatura, mean)[temperatura])^2)  # Suma de cuadrados error
df_trat <- length(unique(temperatura)) - 1  # Grados de libertad para tratamientos
df_error <- length(rendimiento) - length(unique(temperatura))  # Grados de libertad para el error
MS_trat <- SSTr / df_trat  # Cuadrado medio para tratamientos
MS_error <- SSE / df_error  # Cuadrado medio para error
F_calculado <- MS_trat / MS_error  # Estadístico F
valor_p <- 1 - pf(F_calculado, df_trat, df_error)  # Valor-p asociado al estadístico F

# Imprimir resultados de la tabla ANOVA
cat("Suma de cuadrados para tratamientos (SSTr):", SSTr, "\n")
## Suma de cuadrados para tratamientos (SSTr): 43.2
cat("Suma de cuadrados del error (SSE):", SSE, "\n")
## Suma de cuadrados del error (SSE): 262.8
cat("Cuadrado medio para tratamientos (MS_trat):", MS_trat, "\n")
## Cuadrado medio para tratamientos (MS_trat): 21.6
cat("Cuadrado medio para el error (MS_error):", MS_error, "\n")
## Cuadrado medio para el error (MS_error): 21.9
cat("Estadístico F:", F_calculado, "\n")
## Estadístico F: 0.9863014
cat("Valor-p:", valor_p, "\n")
## Valor-p: 0.4012579
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (valor_p < 0.05) {
  cat("Rechazamos H0: Existen diferencias significativas entre las temperaturas en el rendimiento del proceso.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente de que la temperatura afecte el rendimiento del proceso.\n")
}
## No se puede rechazar H0: No hay evidencia suficiente de que la temperatura afecte el rendimiento del proceso.
# Limpiar el entorno
rm(temperatura_50, temperatura_60, temperatura_70, rendimiento, temperatura, anova_resultado, SSTr, SSE, df_trat, df_error, MS_trat, MS_error, F_calculado, valor_p)
#ejercicio 6
# Datos de rendimiento en millas por galón para cada automóvil
automovil_A <- c(19, 21, 20, 20, 21)
automovil_B <- c(19, 20, 22, 23, 23)
automovil_C <- c(24, 21, 25, 23, 23)

# Combinamos los datos en un solo vector
rendimiento <- c(automovil_A, automovil_B, automovil_C)

# Crear un factor para representar los automóviles
automovil <- factor(rep(c("A", "B", "C"), each = 5))

# Realizamos el análisis de varianza (ANOVA)
anova_resultado <- aov(rendimiento ~ automovil)

# Mostrar resumen de ANOVA
summary(anova_resultado)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## automovil    2   22.8  11.400   5.516   0.02 *
## Residuals   12   24.8   2.067                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Cálculos de la tabla ANOVA
SSTr <- sum((tapply(rendimiento, automovil, mean) - mean(rendimiento))^2 * table(automovil))  # Suma de cuadrados tratamientos
SSE <- sum((rendimiento - tapply(rendimiento, automovil, mean)[automovil])^2)  # Suma de cuadrados error
df_trat <- length(unique(automovil)) - 1  # Grados de libertad para tratamientos
df_error <- length(rendimiento) - length(unique(automovil))  # Grados de libertad para el error
MS_trat <- SSTr / df_trat  # Cuadrado medio para tratamientos
MS_error <- SSE / df_error  # Cuadrado medio para error
F_calculado <- MS_trat / MS_error  # Estadístico F
valor_p <- 1 - pf(F_calculado, df_trat, df_error)  # Valor-p asociado al estadístico F

# Imprimir resultados de la tabla ANOVA
cat("Suma de cuadrados para tratamientos (SSTr):", SSTr, "\n")
## Suma de cuadrados para tratamientos (SSTr): 22.8
cat("Suma de cuadrados del error (SSE):", SSE, "\n")
## Suma de cuadrados del error (SSE): 24.8
cat("Cuadrado medio para tratamientos (MS_trat):", MS_trat, "\n")
## Cuadrado medio para tratamientos (MS_trat): 11.4
cat("Cuadrado medio para el error (MS_error):", MS_error, "\n")
## Cuadrado medio para el error (MS_error): 2.066667
cat("Estadístico F:", F_calculado, "\n")
## Estadístico F: 5.516129
cat("Valor-p:", valor_p, "\n")
## Valor-p: 0.02000177
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (valor_p < 0.05) {
  cat("Rechazamos H0: Existen diferencias significativas entre los automóviles en el rendimiento de la gasolina.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente de que los automóviles tengan diferencias significativas en el rendimiento de la gasolina.\n")
}
## Rechazamos H0: Existen diferencias significativas entre los automóviles en el rendimiento de la gasolina.
# Limpiar el entorno
rm(automovil_A, automovil_B, automovil_C, rendimiento, automovil, anova_resultado, SSTr, SSE, df_trat, df_error, MS_trat, MS_error, F_calculado, valor_p)
#ejercicio 7
# Datos proporcionados
SST <- 1500       # Suma de cuadrados total
MSA <- 400        # Cuadrado medio de tratamientos
k <- 4            # Número de tratamientos (poblaciones)
n <- 16           # Número de observaciones por tratamiento
N <- n * k        # Número total de observaciones
df_tratamientos <- k - 1  # Grados de libertad para los tratamientos
df_error <- N - k         # Grados de libertad para el error

# Calculamos ESS (Suma de cuadrados del error)
SSA <- MSA * df_tratamientos  # Suma de cuadrados de los tratamientos
ESS <- SST - SSA              # Suma de cuadrados del error

# Calculamos MSE (Cuadrado medio del error)
MSE <- ESS / df_error

# Calculamos la razón F
FMSA <- MSA / MSE

# Imprimimos la tabla ANOVA
cat("Suma de Cuadrados de Tratamientos (SSA):", SSA, "\n")
## Suma de Cuadrados de Tratamientos (SSA): 1200
cat("Suma de Cuadrados del Error (ESS):", ESS, "\n")
## Suma de Cuadrados del Error (ESS): 300
cat("Cuadrado Medio del Error (MSE):", MSE, "\n")
## Cuadrado Medio del Error (MSE): 5
cat("Razón F:", FMSA, "\n")
## Razón F: 80
# Borrar todos los objetos utilizados
rm(list = ls())
cat("\nTodos los datos y variables han sido eliminados.\n")
## 
## Todos los datos y variables han sido eliminados.
#ejercicio 8
# Valores para los grados de libertad
df1 <- 3  # grados de libertad de los tratamientos
df2 <- 20 # grados de libertad del error
alpha <- 0.05  # nivel de significancia

# Valor crítico de F
F_critico <- qf(1 - alpha, df1, df2)
cat("Valor crítico de F:", F_critico, "\n")
## Valor crítico de F: 3.098391
#ejercicio 9
# Definir los grados de libertad y el nivel de significancia
df1 <- 3   # Grados de libertad para tratamientos
df2 <- 16  # Grados de libertad para el error
alpha <- 0.05

# Calcular el valor crítico de F
F_critico <- qf(1 - alpha, df1, df2)
cat("Valor crítico de F:", F_critico, "\n")
## Valor crítico de F: 3.238872
# Calcular el valor p asociado al estadístico F
p_valor <- pf(107.3, df1, df2, lower.tail = FALSE)
cat("Valor p:", p_valor, "\n")
## Valor p: 8.257772e-11
#ejercicio 10
# Datos proporcionados
MSA <- 2573.3  # Cuadrado medio entre tratamientos
MSE <- 1394.2  # Cuadrado medio dentro de los tratamientos
k <- 5         # Número de marcas (niveles del factor)
n <- 4         # Número de muestras por marca
alpha <- 0.05  # Nivel de significancia

# Grados de libertad
df_trat <- k - 1                 # Grados de libertad para tratamientos
df_error <- k * (n - 1)          # Grados de libertad para el error
df_total <- k * n - 1            # Grados de libertad total

# Estadístico F calculado
F_calculado <- MSA / MSE

# Valor crítico de F
F_critico <- qf(1 - alpha, df_trat, df_error)

# Valor-p
p_valor <- pf(F_calculado, df_trat, df_error, lower.tail = FALSE)

# Resultados
cat("Tabla ANOVA:\n")
## Tabla ANOVA:
cat("Fuente de Variación | Suma de Cuadrados | Grados de Libertad | Cuadrado Medio | Razón F\n")
## Fuente de Variación | Suma de Cuadrados | Grados de Libertad | Cuadrado Medio | Razón F
cat("Tratamientos         |        NA        |", df_trat, "                |", MSA, "        |", F_calculado, "\n")
## Tratamientos         |        NA        | 4                 | 2573.3         | 1.845718
cat("Error                |        NA        |", df_error, "               |", MSE, "       |   NA\n")
## Error                |        NA        | 15                | 1394.2        |   NA
cat("Total                |        NA        |", df_total, "               |   NA          |   NA\n")
## Total                |        NA        | 19                |   NA          |   NA
cat("\nPrueba de Hipótesis:\n")
## 
## Prueba de Hipótesis:
cat("F calculado:", F_calculado, "\n")
## F calculado: 1.845718
cat("F crítico:", F_critico, "\n")
## F crítico: 3.055568
cat("Valor-p:", p_valor, "\n")
## Valor-p: 0.1726335
# Conclusión
cat("\nConclusión:\n")
## 
## Conclusión:
if (p_valor < alpha) {
  cat("Rechazamos H0: Existen diferencias significativas entre las marcas de pintura.\n")
} else {
  cat("No se puede rechazar H0: No hay evidencia suficiente para afirmar diferencias significativas entre las marcas.\n")
}
## No se puede rechazar H0: No hay evidencia suficiente para afirmar diferencias significativas entre las marcas.
# Eliminar los datos creados
rm(list = ls())