I am a beginner to mixed effect models and new to this forum so please let me know if I provided the wrong or not enough information. I saw there were some questions earlier about non-normal residuals in mixed models but none of those helped to fully answer my problem.
I want to analyse a dataset with repeated measures of the Willigness to Pay (WTP) for a product. Participants received different text information about the product and after each text they are asked for their WTP. So for every participant I have 4 WTP values.
Simplified my data looks like this with 1148 observations (287 cases):
CASE WTP Pack_ConfPla Pack_NoInfo Pack_GenInfo Pack_EnvInfo Pack_PerfInfo
579 2.0 1 0 0 0 0
579 2.5 1 1 0 0 0
579 2.8 1 1 1 0 0
579 2.8 1 1 1 0 1
669 2.0 1 0 0 0 0
669 2.8 1 1 0 0 0
669 2.6 1 1 1 0 0
669 2.6 1 1 1 0 1
Case is the participant ID, WTP my dependent variable and the dummy variables show which information packages have been received already for this WTP value. My issue with the data is, that I have many values at 0 because participants could also select to not buy the product and some outliers for high WTP values.
This is how the WTP values within one of the information package levels are distributed but they look similar for all four information levels:
I tried analysing the data with lmer():
lmer(WTP ~ Pack_ConfPla + Pack_NoInfo + Pack_GenInfo +
Pack_EnvInfo + Pack_PerfInfo + (1 |CASE),
data = data, na.action = na.omit)
but when I checked the model assumptions this model violates the assumptions of normal distribution of residuals. This is what my residuals look like:
I already tried to log10 and sqrt transform the data but that did not help. I also tried to use rlmer() which didn't help either.
I also tried to use glmer()
with the binomial family and rescale the data to a format 0 <= WTP <= 1 but then I don't know how to interpret the output. I can't use the Gamma family within glmer()
because my values include 0s.
Does anyone have a suggestion which model is appropriate for my data and maybe some resources on how I can implement it in R?