ANOVA with a (very) unbalanced design

Hello everyone !

I have a very unbalanced design and wondering how to make my two-way ANOVA.

To give you the context, I am looking at the changes in communities along a salinity gradient in estuaries. I took species density measurements in 8 to 10 quadrats at three levels of stress (Low, Medium, High) in five estuaries, and then took the same measurements in 4 marine control sites (Null stress).

Therefore I have two factors : the Stress (fixed, 4 levels : null, low, medium, high) and the Site ("9"levels : Estuaries E1, E2, E3, E4, E5 and marines sites M1, M2, M3, M4).

As I am more interested by the effect of the stress rather than the site, I was going to consider the site as random :

lmer_biomass <- lmer(biomass ~ Stress + (1|Site), data = data_2019, contrasts = list(Stress = contr.sum))
anova(lmer_biomass, type = 3, singular.ok = TRUE)
Tukey_lmer_biomass <- emmeans(lmer_biomass, tukey ~ Stress)

However, my codirector would like me to use the Site as a fixed factor.
I would use this if the design was "normal" :
biomass.fixe<- aov(biomass ~ Stress*Site, data=data_2019)
summary(biomass.fixe)

However then I don't know (1) how to use a Type III for the unbalanced design, and (2) how to compare the the different stress levels with one another.

I think I should use a function ith contrasts, to do something like null vs. the other stress, but I am at lost here. Any advice would be welcome.

Thanks !

Without representative data for this, only readers who recognize this specific problem and have other data to hand are likely to attempt a solution. That's why a reprex is the key to better responses. See the FAQ.

the library(car) has Anova function that facilitates type 3 / 'III'

Anova – Type I/II/III SS explained | Matt's Stats n stuff (wordpress.com)

I am concerned that your response variable may be from the Poisson family of distributions, but you are using ANOVA, which assumes a normal distribution of the errors.