Constraints on Parameter Estimation

I am trying to fit linear regression model and predict parameters without intercept. I have written my code as under;
tbl=table(yobs,x1,x2,x3);
mdl = fitlm(tbl,'yobs ~ x1 + x2 + x3 - 1')
but I am getting the estimates which are negative but in my model all parameters should be positive. LB>=0 and UB=inf. How to set these constraints while doing the prediction.

 Respuesta aceptada

Torsten
Torsten el 11 de Mzo. de 2023

0 votos

Use lsqlin instead of fitlm.

6 comentarios

Faizan Lali
Faizan Lali el 13 de Mzo. de 2023
I am using lsqlin with lb=[0.5 0 0] and ub=[inf inf inf], but it is not changing the 1st parameter. I mean whatever I give the value as lb it it spitting out same for Beta1, but changing the values of other two betas.
Torsten
Torsten el 13 de Mzo. de 2023
Editada: Torsten el 13 de Mzo. de 2023
C = [x1 x2 x3];
d = yobs;
lb = [0.5 0 0];
ub = [inf inf inf];
sol = lsqlin(C,d,[],[],[],[],lb,ub)
where x1, x2, x3 and yobs are column vectors of the same length doesn't work ?
Matt J
Matt J el 13 de Mzo. de 2023
Editada: Matt J el 13 de Mzo. de 2023
Perhaps the columns of C need to be normalized.
C = [x1 x2 x3];
c=vecnorm(C,2,1);
d = yobs+1;
lb = [0.5 0 0];
ub = [inf inf inf];
sol = lsqlin(C./c,d,[],[],[],[],lb,ub);
sol=sol./c(:)
Faizan Lali
Faizan Lali el 13 de Mzo. de 2023
Thank you, it worked. but it is not giving me the estimates with low SE. I mean the parameter estimates are way different from global values and it is not giving the best fit.
Torsten
Torsten el 13 de Mzo. de 2023
This is the best fit you can get without intercept and the constraints you want to impose on the parameters.
Torsten
Torsten el 13 de Mzo. de 2023
According to the documentation,
yobs ~ x1 + x2 + x3 - 1
means a three-variable linear model without intercept.
Thus the "-1" just means: no constant term, not
yobs = p1*x1 + p2*x2 + p3*x3 - 1
Very confusing.

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2022a

Preguntada:

el 11 de Mzo. de 2023

Comentada:

el 13 de Mzo. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by