I believe that a beta regression is what you need.
You have two issues to deal with:
- your response variable is bound between 0 (0% humidity) and 1(100% humidity), so the model predictions need to account for that;
- the closer the average model predictions are to 0 and 1, the more asymmetrical the distribution of the single observations become around the expected mean. For an average predicted mean humidity of 0%, observed variability can only be 0% or more; for an average predicted mean humidity of 100%, observed variability can only be 100% or less.
Beta regression accounts for these two issues as follows:
- it fits a logistic model to the data. A logistic model is sigmoidal i.e. S-shaped and bound between 0 (0%) and 1 (100%);
- it assumes that the model residuals follow a beta distribution, which is usually a good approximation when data are rates and proportions (see, for example: https://besjournals.onlinelibrary.wiley.com/doi/epdf/10.1111/1365-2745.13200).
You can fit such a model in R with function
betareg() from package
It should also be possible to do so with function
glmmTMB() from package
You can (and should) check if your model residuals are "well-behaved" using diagnostic plots. Package
DHARMa produces diagnostic plots for generalised linear models and generalised linear mixed-effect models. See: https://cran.r-project.org/web/packages/DHARMa/vignettes/DHARMa.html