How to remove outliers from a linear fit?
    21 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi all!
I have points P(xi,yi)and the linear fit y=ax+b. I want to remove the maximum outlier from the linear fit and I will do a new linear fit. Then to remove the maximum outlier and a new linear fit and so on, until I have the 50% of points P(xi,yi). Any ideas?
Thank you!
0 commentaires
Réponse acceptée
  Star Strider
      
      
 le 28 Jan 2017
        My idea:
x = 1:100;                                                      % Create Data
y = randi(99, 1, 100);                                          % Create Data
nr_pts_to_remove = fix(length(x)/2);
for k1 = 1:nr_pts_to_remove
    dm = [ones(size(x(:))) x(:)];                               % Design Matrix
    b = dm\y(:);                                                % Estimate Parameters
    yfit = dm*b;                                                % Fit Data
    [~,idx] = max(abs(y(:) - yfit));                            % Index Of Maximum Residual
    x(idx) = [];                                                % Remove Maximum ‘x’
    y(idx) = [];                                                % Remove Maximum ‘y’
end
xv = linspace(min(x), max(x));                                  % Create Vectors For Plot
yv = [ones(size(xv(:))) xv(:)]*b;                               % Create Vectors For Plot
figure(1)
plot(x, y, 'pg', 'MarkerFaceColor','g')
hold on
plot(xv, yv, '-r')
hold off
grid
The ‘(:)’ creates column vectors for all data and other variables.
9 commentaires
  Star Strider
      
      
 le 31 Jan 2017
				You have two options, to save them all in the same file:
H(1) = figure(1)
plot( . . . )
    . . .
H(22) = figure(22)
plot( . . . )
savefig(H,'graphk.fig')
or to save every figure individually:
savefig('graphk01.fig')
savefig('graphk02.fig')
       . . .
savefig('graphk22.fig')
I would save them all in the same file (the first option). See the documentation for savefig for details. The documentation says it was ‘Introduced in R2013b’, so if you have that or a later version, you should be able to do this.
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Printing and Saving dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


