One of the greatest challenges in accurately modeling a human system is the integration of dynamic, fine-grained information in a meaningful way. A model must allow for reasoning in the face of uncertain and incomplete information and be able to provide an easy to understand explanation of why the system is behaving as it is. To date, work in multi-agent systems has failed to come close to capturing these critical elements. Much of the problem is due the fact that most theories about the behavior of such a system are not computational in nature, they come from the social sciences. It is very difficult to successfully get from these qualitative social theories to meaningful computational models of the same phenomena. We focus on analysis of human populations where discerning the opinions of the members of the populace is integral in understanding behavior on an individual and group level. Our approach allows the easy aggregation and de-aggregation of information from multiple sources and in multiple data types into a unified model. We also present an algorithm that can be used to automatically detect the variables in the model that are causing changes in opinion over time. This gives our model the capability to explain why swings in opinion may be experienced in a principled, computational manner. An example is given based on the 2008 South Carolina Democratic Primary election. We show that our model is able to provide both predictions of how the population may vote and why they are voting this way. Our results compare favorably with the election results and our explanation of the changing trends compares favorably with the explanations given by experts.