Multiple regressions in a scatter plot
Mostrar comentarios más antiguos
I have several scatter plots that look like a hockey stick, or even more crooked, and I want to fit a linear trend in each of the segments. Is there a way to get this? Thanks
Respuestas (3)
bym
el 24 de Sept. de 2011
one way: [edit: added pp]
pp = mkpp([0 5 10],[[.5,0];[4,2.5]]);
x = (0:.1:10)';
y = ppval(pp,x);
y = y+rand(101,1); % make hockey stick example data
plot(x,y,'b.') % plot data
hold on
x1 = x(1:50); x1 = [ones(size(x1)),x1];
x2 = x(51:101); x2 = [ones(size(x2)),x2];
y1 = y(1:50); y2 = y(51:101);
c1 = x1\y1; c2 = x2\y2; % least squares coefficients
yhat1 = x1*c1; yhat2 = x2*c2; % fits
plot(x(1:50),yhat1,'--',...
x(51:101),yhat2,'--','LineWidth',2)
[edit]
% R^2 calculation
res1 = y1-yhat1; res2 = y2-yhat2;
r_sq1 = 1-(sum(res1.^2)/sum((y1-mean(y1)).^2));
r_sq2 = 1-(sum(res2.^2)/sum((y2-mean(y2)).^2));
3 comentarios
the cyclist
el 25 de Sept. de 2011
What is "pp" in your second line?
Walter Roberson
el 25 de Sept. de 2011
Looks like a pp = polyfit() call went missing, but I don't know what parameters were intended.
bym
el 25 de Sept. de 2011
sorry about that, sloppy cut and paste. Thanks for pointing that out
the cyclist
el 23 de Sept. de 2011
0 votos
One way to do this would be with the nlinfit() function of the Statistics Toolbox. You could define a function that is parameterized to be a series of line segments, and then nlinfit() will find the parameters that give the best fit to the data.
1 comentario
Julio
el 23 de Sept. de 2011
Categorías
Más información sobre Support Vector Machine Regression en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!