using a forloop to create vertical lines between regression line and scatter plot

조회 수: 13 (최근 30일)
I have these X and Y variables
X=[1;2;3;4;5;6;7;8;9;10];
Y=[17;7;15;13;17;34;35;30;46;31];
I created a scatter plot using
scatter(X,Y,'+','r')
and this is the line of best fit (regression line)
Y =5.9333+3.3758*X;
i need to draw VERTICAL lines from the observed values given in the scatter plot to the fitted line, and measure their distance.
how can I do this using a forloop with MATLAB please? (was specifically asked to use a forloop)
  댓글 수: 1
Elisa Caruana
Elisa Caruana 2022년 4월 14일
I managed to do it, I had a mistake in labelling more than one thing as Y.
Thanks for the help!

댓글을 달려면 로그인하십시오.

답변 (1개)

Voss
Voss 2022년 4월 14일
편집: Voss 2022년 4월 14일
X=[1;2;3;4;5;6;7;8;9;10];
Y=[17;7;15;13;17;34;35;30;46;31];
% I created a scatter plot using
scatter(X,Y,'+','r')
% and this is the line of best fit (regression line)
% Y =5.9333+3.3758*X;
% calculate and plot the fitted line:
mb = polyfit(X,Y,1)
mb = 1×2
3.3758 5.9333
Y_fit = polyval(mb,X);
hold on
plot(X,Y_fit,'--b')
% construct and plot the vertical lines:
% (without for loop)
nans = NaN(numel(X),1);
xdata = [X X nans].';
ydata = [Y Y_fit nans].';
plot(xdata(:),ydata(:),'g');
% calculate the lengths of the vertical line segments:
len = abs(Y-Y_fit)
len = 10×1
7.6909 5.6848 1.0606 6.4364 5.8121 7.8121 5.4364 2.9394 9.6848 8.6909
% (put the scatter plot on top of the others)
set(gca(),'Children',flip(get(gca(),'Children')))
  댓글 수: 2
Star Strider
Star Strider 2022년 4월 14일
This is the complete solution to a homework problem.
Note that the regression equation is provided. It does not have to be calculated.
Voss
Voss 2022년 4월 14일
I wanted to make sure the provided equation was correct.
I'll edit it to remove the loop, thus rendering the solution incomplete.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Scatter Plots에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by