Problem 3.7

c) Perform ANOVA and LSD test

# Load necessary library
options(repos = c(CRAN = "https://cran.rstudio.com/"))
install.packages("agricolae")
## Installing package into 'C:/Users/juank/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'agricolae' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\juank\AppData\Local\Temp\RtmpsntqL9\downloaded_packages
library(agricolae)

# Data for tensile strengths and groups
tensile_strengths <- c(3129, 3000, 2865, 2890, 3200, 3300, 2975, 3150, 2800, 2900, 2985, 3050, 2600, 2700, 2600, 2765)
groups <- factor(rep(1:4, each=4))

# Perform ANOVA
cement_data <- data.frame(tensile_strengths, groups)
anova_result <- aov(tensile_strengths ~ groups, data=cement_data)

# LSD test
lsd_test <- LSD.test(anova_result, "groups", p.adj="none", alpha=0.05)
print(lsd_test)
## $statistics
##    MSerror Df     Mean       CV  t.value      LSD
##   12825.69 12 2931.812 3.862817 2.178813 174.4798
## 
## $parameters
##         test p.ajusted name.t ntr alpha
##   Fisher-LSD      none groups   4  0.05
## 
## $means
##   tensile_strengths       std r       se      LCL      UCL  Min  Max     Q25
## 1           2971.00 120.55704 4 56.62528 2847.624 3094.376 2865 3129 2883.75
## 2           3156.25 135.97641 4 56.62528 3032.874 3279.626 2975 3300 3106.25
## 3           2933.75 108.27242 4 56.62528 2810.374 3057.126 2800 3050 2875.00
## 4           2666.25  80.97067 4 56.62528 2542.874 2789.626 2600 2765 2600.00
##      Q50     Q75
## 1 2945.0 3032.25
## 2 3175.0 3225.00
## 3 2942.5 3001.25
## 4 2650.0 2716.25
## 
## $comparison
## NULL
## 
## $groups
##   tensile_strengths groups
## 2           3156.25      a
## 1           2971.00      b
## 3           2933.75      b
## 4           2666.25      c
## 
## attr(,"class")
## [1] "group"

d) Analyze residuald from ANOVA

# Extract residuals and create QQ plot
residuals_anova <- residuals(anova_result)
qqnorm(residuals_anova)
qqline(residuals_anova, col = "blue")

e) Residuals vs Predicted Values Plot

# Plot predicted values vs residuals
predicted_values <- predict(anova_result)
plot(predicted_values, residuals_anova, xlab = "Predicted Tensile Strength", 
     ylab = "Residuals", main = "Residuals vs. Predicted Tensile Strength", pch = 19)
abline(h = 0, col = "blue")

f) Tensile Strenght

# Plot tensile strengths for different groups
plot(groups, tensile_strengths, xlab = "Mixing Technique", 
     ylab = "Tensile Strength (lb/in²)", 
     main = "Tensile Strengths for Different Mixing Techniques", pch = 19)

Problem 3.10

b) Perform ANOVA for Cotton Percent

# Data for cotton percentages and tensile strengths
cotton_percent <- rep(c(15, 20, 25, 30, 35), each=5)
tensile_strength <- c(7, 7, 15, 11, 9, 12, 17, 12, 18, 18, 14, 19, 19, 18, 18, 19, 25, 22, 19, 23, 7, 10, 11, 15, 11)

# Perform ANOVA
fiber_data <- data.frame(cotton_percent, tensile_strength)
anova_result <- aov(tensile_strength ~ as.factor(cotton_percent), data=fiber_data)

# LSD test
lsd_test <- LSD.test(anova_result, "cotton_percent", p.adj="none", alpha=0.05)
print(lsd_test)
## NULL

c) Residual Analysis

# Plot residuals vs fitted values and QQ plot for residuals
residuals_anova <- residuals(anova_result)
fitted_values <- fitted(anova_result)

# Residuals vs fitted values
plot(fitted_values, residuals_anova, xlab = "Fitted Values", 
     ylab = "Residuals", main = "Residuals vs. Fitted Values")
abline(h = 0, col = "blue")

# QQ plot for residuals
qqnorm(residuals_anova)
qqline(residuals_anova, col = "blue", lwd = 2)

Problem 3.20

a) ANOVA for Rodding Level and Compressive Strength

# Data for rodding levels and compressive strengths
rodding_level <- c(rep(10, 3), rep(15, 3), rep(20, 3), rep(25, 3))
compressive_strength <- c(1530, 1530, 1440, 1610, 1650, 1500, 1560, 1730, 1530, 1500, 1490, 1510)

# Perform ANOVA
data <- data.frame(rodding_level, compressive_strength)
anova_model <- aov(compressive_strength ~ factor(rodding_level), data = data)
summary(anova_model)
##                       Df Sum Sq Mean Sq F value Pr(>F)
## factor(rodding_level)  3  28633    9544   1.865  0.214
## Residuals              8  40933    5117

b) Extract P-value

# Extract and print p-value
anova_summary <- summary(anova_model)
p_value <- anova_summary[[1]][["Pr(>F)"]][1]
p_value
## [1] 0.2137815

Problem 3.44

Power Analysis for ANOVA

# Load necessary package
options(repos = c(CRAN = "https://cran.rstudio.com/"))
install.packages("pwr")
## Installing package into 'C:/Users/juank/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'pwr' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\juank\AppData\Local\Temp\RtmpsntqL9\downloaded_packages
library(pwr)

# Data for means
means <- c(50, 60, 50, 60)
k <- length(means)
grand_mean <- mean(means)

# Calculate between group variance
between_var <- sum((means - grand_mean)^2) / (k - 1)
sigma_squared <- 25

# Effect size calculation and power analysis
effect_size <- sqrt(between_var / sigma_squared)
result <- pwr.anova.test(k = k, f = effect_size, sig.level = 0.05, power = 0.90)
print(result)
## 
##      Balanced one-way analysis of variance power calculation 
## 
##               k = 4
##               n = 3.806049
##               f = 1.154701
##       sig.level = 0.05
##           power = 0.9
## 
## NOTE: n is number in each group

Problem 3.45

c) Sample Size Calculation

# Function to calculate sample size based on error variance
calculate_sample_size <- function(sigma_squared) {
  k <- length(means)
  grand_mean <- mean(means)
  between_var <- sum((means - grand_mean)^2) / (k - 1)
  effect_size <- sqrt(between_var / sigma_squared)
  result <- pwr.anova.test(k = k, f = effect_size, sig.level = 0.05, power = 0.90)
  return(result$n)
}

# Sample size for different variances
sigma_squared_values <- c(25, 36, 49)
sample_sizes <- sapply(sigma_squared_values, calculate_sample_size)
data.frame(Sigma_Squared = sigma_squared_values, Sample_Size = sample_sizes)
##   Sigma_Squared Sample_Size
## 1            25    3.806049
## 2            36    4.933292
## 3            49    6.285335