Meaning of predict.fixed and predict.Subject values in 'predict' function of nlme As discussed in this SO thread, I am using the predict function in nlme to derive predictions for each participants' fourth day score in my own dataset, based on their previous scores and a mixed-effects model. So I am wondering which column of predicted values to use. 
Here is an example of how the predict function works using the Orthodont dataset and code supplied by the nlme package manual
library(nlme)
fm1 <- lme(distance ~ age, Orthodont, random = ~ age | Subject)
    newOrth <- data.frame(Sex = c("Female","Female","Female","Female","Male","Male"),
                          age = c(15, 20, 10, 12, 2, 4),
                          Subject = c("M01","M01","F30","F30","M04","M04"))
    ## The  Orthodont  data has *no*  F30 , so predict  NA  at level 1 :
    predict(fm1, newOrth, level = 0:1)

So if we specify levels as 0:1 the predict function gives two columns of predicted values for each participant. One is the marginal predictions, when we 'set the random effects to 0' or 'average across random effects'. The other column is the conditional or subject-specific random effects for each individual, where we 'hold the random effects constant'
If the population estimates are for the average subject, why are they all different? i.e. in what sense are they average? 
I have been trying to get a sense of this for a while. Are the extrapolated population predictions for each subject derived from some combination of fixed group-level effects and from fitting a slope for each individual from the previous measurement occassions and then using that 'individual slope + fixed group effect' to come up with the estimated value?
 A: I think it works as follows, the predict.fixed column only uses the fixed effects from your model. We can view these with summary(fm1):
Fixed effects: distance ~ age 
                Value Std.Error DF   t-value p-value
(Intercept) 16.761111 0.7752460 80 21.620377       0
age          0.660185 0.0712533 80  9.265333       0

As you specified a different age for each subject in your dataframe age = c(15, 20, 10, 12, 2, 4) the resulting predictions are made 16.761111 + 0.660185 * newOrth$age. The differences are a result of differences in age. 
As you noted the predict.Subject column includes the subject specific random effects. You can retrieve these with the command ranef(fm1). You will see that subject M01 has a random intercept of 1.0515830 and a random slope of 0.215684556. So the first value of predict.Subject is 16.761111 + 1.0515830 + 0.660185 * (15 + 0.215684556). Although the second line is the same subject with the same random effects, you've specified a different age for this subject (20 instead of 15) so the difference is the age coefficient 0.660185 multiplied by the 5 year difference in age. The second prediction in predict.Subject is 16.761111 + 1.0515830 + 20*(0.660185 + 0.215684556).
I hope that I understood your question and that this answer resolves your interpretation issues.
