# Identifying if reaction times are 3 standard deviations away from mean

10 views (last 30 days)
Rania Hanna on 19 Sep 2022
Commented: Rania Hanna on 20 Sep 2022
have a data set of several thousand values.
There are 10 unique subj_indx, 1 through 10. Each one represents an experimental subject. Each subject has a bunch of reaction times, rt.
I am new to Matlab and don't understand how to write for loops. I know I need to run through the entire dataset, and identify outlier reaction time trials, without using isoutlier function. This is because I want to be ale to identify whether each RT trial is > 3 standard deviations away from the mean RT, and then mark that trial in a new vector as "1", otherwise, mark it as "0."
I know Matlab has standard deviation and mean functinos, but am not sure how to connect everything together for this code.
I don't know where to start other than:
rt=subject_data.rt;
for id = 1:length(subj_idx)%loop for each unique id value
%rtIdx = 1:length(rt)
currentid = rt(rtIdx);
rtIdx = 0;
and I'm not sure even that's correct.
Rania Hanna on 20 Sep 2022
Perfect, thanks so much!

Chunru on 20 Sep 2022
Edited: Chunru on 20 Sep 2022
% rt=subject_data.rt;
rt = randn(300, 1) * 3 + 1; % genate some random data
mu = mean(rt)
mu = 1.2843
sigma = std(rt)
sigma = 3.0914
idx = abs((rt-mu)) > 1*sigma; % use 3 sigma when samples are large
[rt idx]
ans = 300×2
2.6351 0 -0.5263 0 -1.5895 0 2.5097 0 4.4268 1.0000 1.5017 0 -3.1915 1.0000 -1.7580 0 1.9555 0 1.5195 0
Rania Hanna on 20 Sep 2022
Thank you!

Steven Lord on 20 Sep 2022
Take a look at the "mean" method for the isoutlier function.
Rania Hanna on 20 Sep 2022
Thank you!