A better way to pick up on hidden variables

I'm trying to determine cattle disease risk through various values, including weight, through a machine learning application.
I have the usual variance and standard deviation values calculated daily for a given cow. Now what I want to do is to try and determine if the individual cow's values are unusual(affected by hidden variables, e.g. the cow is ill), and compare them against the herd's values. So far I'm thinking that I calculate the mean weight for the whole herd per day, and then calculate standard deviation or variance from those values. I can't help but think that something is lost somewhere though. Is there a better way to do this? Should I apply a t-test instead somehow?
Hey shred14.

What kind of model do you use for your machine learning application? Neural net? Regression? Some kind of metric/clustering application? Bayes modelling?