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?
0 个评论
采纳的回答
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 个评论
Sindar
2020-10-5
I'd check out the Matlab online trainings (I believe most are currently free), starting with the Onramp (always free).
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Regression 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!