Is anybody aware of methods that are appropriate to modify the values of a time series to account for factors that are known to artificially inflate or deflate the measurement.

An example of the problem would be to see how the intelligence of a student changes over time.

We could test the student each week and their percentage score could be tracked, fomring a time series. Tests never truly capture intelligence so this time series will be noisy due to process error, and other factors effecting the test scores.

However there are certain factors we could measure that influence the test score, such as hours spent studying, or hours of sleep the night before taking the test. We could also measure the correlations between the values of these factors and test scores for a large population of students.

Is there any technique that could be used to smooth this time series so that it is more representative of the students true inner intelligence? So for example if the student studied abnormally higher for one week their test score would be decreased in the filter output to reflect that their measured intelligence (test percentage) was artificially inflated due to the extra time studying.

I recently learned about Kalman filters as they are good for dealing with noisy time-series, however I dont see any way to design the Kalman filter to make it 'smooth out' the effect of these external factors.

Is there any known modification to the Kalman Filter algorithm that would suit this problem, or maybe some other sort of bayesian filter?