You did not say what you corrected, but when I use this, I get no error:
newdata1=data.frame(PROD=factor(c("Test", "Test"), levels=levels(dat$PROD)),
SURENESS=factor(c("1","1")) )
predict(m1, newdata=newdata1)
The output from predict.clmm2 with a newdata argument will not make much sense unless you get all the factor levels aligned so they are in the agreement with the input data:
> newdata1=data.frame(
PROD=factor(c("Ref", "Test"), levels=levels(dat$PROD)),
SURENESS=factor(c("1","1")) )
> predict(m1, newdata=newdata1)
[1] 1 1 1 1 1 1 1 1 1 1 1 1
Not very interesting. The prediction is for an outcome with only one level to have a probability of 1 of being in that level. (A vacuous prediction.) But recreating the structure of the original ordered outcomes is more meaningful:
> newdata1=data.frame(
PROD=factor(c("Ref", "Test"), levels=levels(dat$PROD)),
SURENESS=factor(c("1","1"), levels=levels(dat$SURENESS)) , )
> predict(m1, newdata=newdata1)
[1] 0.20336975 0.03875713
You can answer the question in the comments by assembling all the predictions for various levels:
> sapply(as.character(1:6), function(x){ newdata1=data.frame(PROD=factor(c("Ref", "Test"), levels=levels(dat$PROD)), SURENESS=factor(c(x,x), levels=levels(dat$SURENESS)) );predict(m1, newdata=newdata1)})
1 2 3 4 5 6
[1,] 0.20336975 0.24282083 0.10997039 0.07010327 0.1553313 0.2184045
[2,] 0.03875713 0.07412618 0.05232823 0.04405965 0.1518367 0.6388921
> out <- .Last.value
> rowSums(out)
[1] 1 1
The probabilities are Pr(J=j|X=x & Random=all)
.