Problem 1:

Full factorial model equation:

\(Y_{ijk} = \mu + \tau_{i} + \beta_{j} + \gamma _{k} + (\tau\beta)_{ij} + (\tau\gamma)_{ik} + (\beta\gamma)_{jk} + (\tau\beta\gamma)_{ijk} + \epsilon_{ijkl}\)

Null Hypothesis :

\(H_{0} : (\tau\beta\gamma)_{ijk} = 0\)

Alternate Hypothesis :

\(H_{a} : (\tau\beta\gamma)_{ijk} \neq 0\)

Reading data:

csvData<-read.csv("https://raw.githubusercontent.com/tmatis12/datafiles/main/PowderProduction.csv")
print(csvData)
##    Ammonium StirRate Temperature Density
## 1         2      100           8   14.68
## 2         2      100           8   15.18
## 3        30      100           8   15.12
## 4        30      100           8   17.48
## 5         2      150           8    7.54
## 6         2      150           8    6.66
## 7        30      150           8   12.46
## 8        30      150           8   12.62
## 9         2      100          40   10.95
## 10        2      100          40   17.68
## 11       30      100          40   12.65
## 12       30      100          40   15.96
## 13        2      150          40    8.03
## 14        2      150          40    8.84
## 15       30      150          40   14.96
## 16       30      150          40   14.96
library(GAD)
csvData$Ammonium <- as.fixed(csvData$Ammonium)
csvData$StirRate <- as.fixed(csvData$StirRate)
csvData$Temperature <- as.fixed(csvData$Temperature)
str(csvData)
## 'data.frame':    16 obs. of  4 variables:
##  $ Ammonium   : Factor w/ 2 levels "2","30": 1 1 2 2 1 1 2 2 1 1 ...
##  $ StirRate   : Factor w/ 2 levels "100","150": 1 1 1 1 2 2 2 2 1 1 ...
##  $ Temperature: Factor w/ 2 levels "8","40": 1 1 1 1 1 1 1 1 2 2 ...
##  $ Density    : num  14.68 15.18 15.12 17.48 7.54 ...

Three factor interaction:

model<-aov(csvData$Density~csvData$Ammonium+csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$Ammonium*csvData$Temperature+csvData$StirRate*csvData$Temperature+csvData$Ammonium*csvData$StirRate*csvData$Temperature)
GAD::gad(model)
## $anova
## Analysis of Variance Table
## 
## Response: csvData$Density
##                                                       Df Sum Sq Mean Sq F value
## csvData$Ammonium                                       1 44.389  44.389 11.1803
## csvData$StirRate                                       1 70.686  70.686 17.8037
## csvData$Temperature                                    1  0.328   0.328  0.0826
## csvData$Ammonium:csvData$StirRate                      1 28.117  28.117  7.0817
## csvData$Ammonium:csvData$Temperature                   1  0.022   0.022  0.0055
## csvData$StirRate:csvData$Temperature                   1 10.128  10.128  2.5510
## csvData$Ammonium:csvData$StirRate:csvData$Temperature  1  1.519   1.519  0.3826
## Residuals                                              8 31.762   3.970        
##                                                         Pr(>F)   
## csvData$Ammonium                                      0.010175 * 
## csvData$StirRate                                      0.002918 **
## csvData$Temperature                                   0.781170   
## csvData$Ammonium:csvData$StirRate                     0.028754 * 
## csvData$Ammonium:csvData$Temperature                  0.942808   
## csvData$StirRate:csvData$Temperature                  0.148890   
## csvData$Ammonium:csvData$StirRate:csvData$Temperature 0.553412   
## Residuals                                                        
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Comment: The value of p(0.5534) for the three factor interaction is greater than 0.05, hence we fail to reject the null hypothesis. We conclude that there is no three factor interaction.

Testing for Ammonium and Temperature

model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$Ammonium*csvData$Temperature+csvData$StirRate*csvData$Temperature)
GAD::gad(model)
## $anova
## Analysis of Variance Table
## 
## Response: csvData$Density
##                                      Df Sum Sq Mean Sq F value   Pr(>F)   
## csvData$Ammonium                      1 44.389  44.389 12.0037 0.007109 **
## csvData$StirRate                      1 70.686  70.686 19.1150 0.001792 **
## csvData$Temperature                   1  0.328   0.328  0.0886 0.772681   
## csvData$Ammonium:csvData$StirRate     1 28.117  28.117  7.6033 0.022206 * 
## csvData$Ammonium:csvData$Temperature  1  0.022   0.022  0.0059 0.940538   
## csvData$StirRate:csvData$Temperature  1 10.128  10.128  2.7389 0.132317   
## Residuals                             9 33.281   3.698                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Comment:

The p-value ammonium and temperature (0.9405) is more than 0.05, so we fail to reject the null hypothesis. We conclude that there is no interaction between Ammonium and Temperature.

Testing for Stir rate and Temperature

model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$StirRate*csvData$Temperature)
GAD::gad(model)
## $anova
## Analysis of Variance Table
## 
## Response: csvData$Density
##                                      Df Sum Sq Mean Sq F value    Pr(>F)    
## csvData$Ammonium                      1 44.389  44.389 13.3287 0.0044560 ** 
## csvData$StirRate                      1 70.686  70.686 21.2250 0.0009696 ***
## csvData$Temperature                   1  0.328   0.328  0.0984 0.7601850    
## csvData$Ammonium:csvData$StirRate     1 28.117  28.117  8.4426 0.0156821 *  
## csvData$StirRate:csvData$Temperature  1 10.128  10.128  3.0412 0.1117751    
## Residuals                            10 33.303   3.330                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Comment:

The p value for stir rate and temperature (0.111) is more than 0.05 , hence we fail to reject Null hypothesis. We conclude that there is no interaction between Stir Rate and Temperature.

Testing for Ammonium and Stir rate

model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate)
GAD::gad(model)
## $anova
## Analysis of Variance Table
## 
## Response: csvData$Density
##                                   Df Sum Sq Mean Sq F value   Pr(>F)   
## csvData$Ammonium                   1 44.389  44.389 11.2425 0.006443 **
## csvData$StirRate                   1 70.686  70.686 17.9028 0.001410 **
## csvData$Temperature                1  0.328   0.328  0.0830 0.778613   
## csvData$Ammonium:csvData$StirRate  1 28.117  28.117  7.1211 0.021851 * 
## Residuals                         11 43.431   3.948                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Comment:

The p value for ammonium and stir rate(0.111) is more than 0.05 , hence we fail to reject Null hypothesis and claim there is no interaction between Stir Rate and Temperature.

Interaction Graph for Ammonium and Stir rate:

interaction.plot(csvData$StirRate,csvData$Ammonium,csvData$Density,col=c("blue","red"))

Question 2:

Reading the data:

Position<-c(1,2)
Temperature<-c(800,825,850)
df<-expand.grid (Position,Temperature)
df1<-rbind(df,df,df)
colnames(df1)<-c("Position","Temperature")
df1
##    Position Temperature
## 1         1         800
## 2         2         800
## 3         1         825
## 4         2         825
## 5         1         850
## 6         2         850
## 7         1         800
## 8         2         800
## 9         1         825
## 10        2         825
## 11        1         850
## 12        2         850
## 13        1         800
## 14        2         800
## 15        1         825
## 16        2         825
## 17        1         850
## 18        2         850
#response
response<-c(570,528,1063,988,565,526,565,547,1080,1026,510,538,583,521,1043,1004,590,532)
df1$response<-response

a.Both fixed effects:

df1$Position <- as.fixed(Position)
df1$Temperature <- as.fixed(Temperature)
model_1 <- aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_1)
## $anova
## Analysis of Variance Table
## 
## Response: response
##                      Df Sum Sq Mean Sq F value    Pr(>F)    
## Position              1   7160    7160  15.998  0.001762 ** 
## Temperature           2 249510  124755 278.748 8.753e-11 ***
## Position:Temperature  2 696650  348325 778.283 2.005e-13 ***
## Residuals            12   5371     448                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

b.Both random effects:

df1$Position <-as.random(Position)
df1$Temperature<-as.random(Temperature)
model_2 <-aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_2)
## $anova
## Analysis of Variance Table
## 
## Response: response
##                      Df Sum Sq Mean Sq  F value    Pr(>F)    
## Position              1   7160    7160   0.0206    0.8991    
## Temperature           2 249510  124755   0.3582    0.7363    
## Position:Temperature  2 696650  348325 778.2834 2.005e-13 ***
## Residuals            12   5371     448                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

c.Mixed effects:

df1$Position <- as.fixed(Position)
df1$Temperature <- as.random(Temperature)
model_3 <- aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_3)
## $anova
## Analysis of Variance Table
## 
## Response: response
##                      Df Sum Sq Mean Sq  F value    Pr(>F)    
## Position              1   7160    7160   0.0206    0.8991    
## Temperature           2 249510  124755 278.7476 8.753e-11 ***
## Position:Temperature  2 696650  348325 778.2834 2.005e-13 ***
## Residuals            12   5371     448                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

d. Comment:

There was no significant two factor interactional in all the three different effect models 

The p-value for temperature remains the same in part a and part c but increases in part b when temperature is treated as random. A similar pattern is observed for position where the p-value is comparable in parts b and c (random in b, fixed in c), but smaller in part a.

Temperature in all cases was significant both in the case of random or fixed effect.

 Complete R-code


#Reading data
csvData<-read.csv("https://raw.githubusercontent.com/tmatis12/datafiles/main/PowderProduction.csv")
print(csvData)

library(GAD)
csvData$Ammonium <- as.fixed(csvData$Ammonium)
csvData$StirRate <- as.fixed(csvData$StirRate)
csvData$Temperature <- as.fixed(csvData$Temperature)
str(csvData)

#Three factor interaction:
model<-aov(csvData$Density~csvData$Ammonium+csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$Ammonium*csvData$Temperature+csvData$StirRate*csvData$Temperature+csvData$Ammonium*csvData$StirRate*csvData$Temperature)
GAD::gad(model)

#Testing for Ammonium and Temperature
model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$Ammonium*csvData$Temperature+csvData$StirRate*csvData$Temperature)
GAD::gad(model)

#Testing for Stir rate and Temperature
model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate+csvData$StirRate*csvData$Temperature)
GAD::gad(model)

#Testing for Ammonium and Stir rate
model<-aov(csvData$Density~csvData$Ammonium+csvData$StirRate+csvData$Temperature+csvData$Ammonium*csvData$StirRate)
GAD::gad(model)

#Interaction Graph for Ammonium and Stir rate:
interaction.plot(csvData$StirRate,csvData$Ammonium,csvData$Density,col=c("blue","red"))

Question 2:
  
#Input data
Position<-c(1,2)
Temperature<-c(800,825,850)
df<-expand.grid (Position,Temperature)
df1<-rbind(df,df,df)
colnames(df1)<-c("Position","Temperature")
df1

#response
response<-c(570,528,1063,988,565,526,565,547,1080,1026,510,538,583,521,1043,1004,590,532)
df1$response<-response

#Both fixed effects:
df1$Position <- as.fixed(Position)
df1$Temperature <- as.fixed(Temperature)
model_1 <- aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_1)

#Both random effects:
df1$Position <-as.random(Position)
df1$Temperature<-as.random(Temperature)
model_2 <-aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_2)

#Mixed effects:
df1$Position <- as.fixed(Position)
df1$Temperature <- as.random(Temperature)
model_3 <- aov(response~Position+Temperature+Position*Temperature,data=df1)
GAD::gad(model_3)