Situation

I'm performing an experiment in which I will use machine learning to build a model around how fast people generally (voluntarily) react to a set of stimuli.

To performs this, I will be using a Machine Learning Engine such as Google TensorFlow to train a model. My factors (X) will be a set of various stimuli and my measurement (Y) will be how fast a person reacts in milliseconds.

The dataset contains a good amount of instances in which the factors are very similar, but the reaction (Y) is different. This is, of course, due to the incredibly immense amount of factors that go into human perception, cognition, etc.

Since these immeasurable factors are still important, I want to account for them by treating them as a random variable. In this way, I want my model's predictions to give me a pseudo-random output, based on the distribution of reaction times for a given set of factors.

My Question

How can I use the "noise" of my data model to introduce randomness of a predicted Y output?

As an example, if I were to generate thousands of reaction times given the same factors, the times should vary, with a mean, standard devation, variance, etc that would be statistically insignificant from the human model (most likely a Gaussian distribution).

• You can treat your predictions as the "fixed" part of a plain ol' regression model, and using a formula like: observed response = predicted response + error, calculate the residuals which estimate the spread of a Gaussian noise distribution. However, reaction times are rarely Gaussian, skewed probability models like Weibull are much better. – AdamO Dec 13 '17 at 21:42
• Yes, that makes a lot of sense. So by using the residuals of any given prediction, I can create a probability distribution to generate numbers on? Correct? – Clay07g Dec 13 '17 at 21:49
• Yes, this is an appropriate way to simulate responses. – AdamO Dec 13 '17 at 21:53