Which function should I use for generating the weighted least squares fit linear line for a given data?

39 次查看(过去 30 天)
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
Sindar 2020-10-4
编辑:Sindar 2020-10-5
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)
  5 个评论
Vihaan Misra
Vihaan Misra 2020-10-5
Thanks a lot!! I have been trying to generate the weights matrix but can't seem to do so, I am very new to MATLAB so any input will be really helpful

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Regression 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by