Clear Filters
Clear Filters

Looping a regression for 30 different observations 10 times

2 views (last 30 days)
Suppose I have a total of 300 observations.
Now I would like to perform a regression over the observation 1:30 31:60 etc.
And I am intersted in the error of the regression
X = [ones(size(x)) x1 x2 x3];
[b,bint,r,rint,stats] = regress(y,X)
How do I write a for loop such that I get 300/30 = 10 values of the error of the regression?

Accepted Answer

Star Strider
Star Strider on 3 Apr 2022
One approach —
xa = randn(300,3);
ya = randn(300,1);
forstep = 30;
for k = 1:forstep:size(xa,1)-forstep
idxrng = k:k+30;
kidx = floor(k/forstep+1);
x1 = xa(idxrng,1);
x2 = xa(idxrng,2);
x3 = xa(idxrng,3);
y = ya(idxrng);
X = [ones(size(x1)) x1 x2 x3];
[b{kidx},bint{kidx},r{kidx},rint{kidx},stats{kidx}] = regress(y,X);
end
b
b = 1×9 cell array
{4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double}
bint
bint = 1×9 cell array
{4×2 double} {4×2 double} {4×2 double} {4×2 double} {4×2 double} {4×2 double} {4×2 double} {4×2 double} {4×2 double}
r
r = 1×9 cell array
{31×1 double} {31×1 double} {31×1 double} {31×1 double} {31×1 double} {31×1 double} {31×1 double} {31×1 double} {31×1 double}
... and so for the rest.
.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!