1 view (last 30 days)

Show older comments

I have a set of data which I generate using the following code:

x = linspace(-10, 10, 20);

slope = 1.5;

intercept = -1;

noiseAmplitude = 15;

y = slope .* x + intercept + noiseAmplitude * rand(1, length(x));

I want to generate a weighted linear least squares fit regression line for the above data points. I don't have the weights matrix so I can go with using the formula w(i) = 1/variance(i)^2 or any other default formula that a MATLAB function may use for generating the weights matrix. I don't know how to generate this matrix and make sure its diagonal and then fit a regression line in the data, is there a function in MATLAB which can help me achieve this?

Sindar
on 4 Oct 2020

Edited: Sindar
on 5 Oct 2020

fitlm accepts weights as a vector, but doesn't come with any pre-designed ones

mdl = fitlm(x,y,'Weights',weight);

Ypred = predict(mdl,x);

plot(x,y,'k*',x,Ypred,'r')

determining variance values for your points is a separate question (my answer would be "huh? I don't think that's a sensible quantity," but if you ask clearly, others may have an answer)

Sindar
on 5 Oct 2020

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

Start Hunting!