How can i build a for loop for a subset of data having repetitions?

1 view (last 30 days)
I would like to do a regression analysis with some data in matrix A1 (variables indexed). The variable IDstop1 is repeated many times and i want to do the regression for each subset of Rmean_pred1, Rmean_obs1 and Zero1 where IDstop1 is the same (for example for IDstop1 = 20160008 and then for the next one etc..). I tried this loop but i receive only one value for y, x1, x2, and an error for X. I expect to have the same length of (for example) 20160008 for these variables.
Can someone help me?
IDstop1 = A1(:,1);
Rmean_pred1 = A1(:,15);
Rmean_obs1 = A1(:,14);
Zero1 = A1(:,3)
k = unique(IDstop1);
for i= 1:length(k)
y = Rmean_pred1(i);
x1 = Rmean_obs1(i);
x2 = Zero1(i);
X = [ones(size(x1(i))) x1(i) x2(i)];
b = regress(y,X)
end

Accepted Answer

Jan
Jan on 22 Feb 2019
Edited: Jan on 22 Feb 2019
Maybe you want:
k = unique(IDstop1);
result = cell(1, numel(k));
for i = 1:numel(k)
index = (IDstop1 == k(i));
y = Rmean_pred1(index);
x1 = Rmean_obs1(index);
x2 = Zero1(index);
X = [ones(size(x1)), x1, x2];
b = regress(y, X);
result{i} = b;
end
  4 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!