How to find groupings (trajectories) among longitudinal data? Context
I want to set the scene before somewhat expanding on the question. 
I have longitudinal data, measurements taken on subjects approximately every 3 months, primary outcome is numeric (as in continuous to 1dp) in the range 5 to 14 with the bulk (of all data points) being between 7 and 10. If I do a spaghetti plot (with age on the x axis and a line for each person) it's a mess obviously as I have >1500 subjects, but there is a clear tread towards higher values with increased age (and this is known). 
The broader question: What we would like to do is to firstly be able to identify trending groups (those that start high and stay high, those that start low and stay low, those that start low and increase to high etc) and then we can look at individual factors that are associated with 'trend group' membership.
My question here is specifically pertaining to the first portion, the grouping by trend.
Question


*

*How can we group individual longitudinal trajectories?

*What software would be suitable for implementing this?


I have looked at Proc Traj in SAS and M-Plus suggested by a colleague, which I'm looking into, but would like to know what others thoughts are on this. 
 A: I'd expect there is an MPLUS package to do what you need. There is a paper in Psychometrika about almost exactly this subject 
springerlink.com/content/25r110007g417187
except the data is binary and the trajectories are probability trajectories. The authors use latent class analysis (implemented by using a penalized finite mixture model) to group trajectories. I also know the first author wrote some other papers around 10 years ago with Bengt Muthen (creator of MPLUS) about latent class analysis in similar settings (with trajectories). For example, 
http://onlinelibrary.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/abstract
sounds very similar to what you're talking about, except the outcome is binary. The continuous case is much simpler, so I'd do a backwards literature search (i.e. look at the papers these papers reference) to find something that matches what you've described more precisely. 
To find out more, you can ask the proprietors of MPLUS directly what package you need to use to do what you need. They are generally pretty quick to respond and are very helpful: 
http://www.statmodel.com/cgi-bin/discus/discus.cgi
A: I've used the Mfuzz in R for clustering time-course microarray data sets. Mfuzz uses "soft-clustering". Basically, individuals can appear in more than one group. 
As @Andy points out in the comment, the original paper uses CTN data. However, I suspect that it should work OK for your discrete data. Especially since you are just exploring the data set. Here's a quick example in R:
##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

Gives the following plot:

