Borrar filtros
Borrar filtros

Looping a regression for 30 different observations 10 times

2 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Star Strider
Star Strider el 3 de Abr. de 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.
.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by