Problem 3.7
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
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
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