%% Exclude Data from Curve Fit
% Load the vote counts and county names for the state of Florida from the 2000 U.S. presidential election.

load flvote2k

% Use the vote counts for the two major party candidates, Bush and Gore, as predictors for the vote counts for the third-party candidate Buchanan, and plot the scatters:

plot(bush,buchanan,'rs')
hold on
plot(gore,buchanan,'bo')
legend('Bush data','Gore data')

% Assume a model where a fixed proportion of Bush or Gore voters choose to vote for Buchanan.

f = fittype({'x'})

% Exclude the data from absentee voters, who did not use the controversial “butterfly” ballot.

nobutterfly = strcmp(counties,'Absentee Ballots');

% Perform a bisquare weights robust fit of the model to the two data sets, excluding absentee voters.

bushfit = fit(bush,buchanan,f,'Exclude',nobutterfly,'Robust','on');
gorefit = fit(gore,buchanan,f,'Exclude',nobutterfly,'Robust','on');

% Robust fits give outliers a low weight, so large residuals from a robust fit can be used to identify the outliers.

figure
plot(bushfit,bush,buchanan,'rs','residuals')
hold on
plot(gorefit,gore,buchanan,'bo','residuals')

% Calculate the residuals.

bushres = buchanan - feval(bushfit,bush);
goreres = buchanan - feval(gorefit,gore);

% Identify large residuals as those outside the range [-500 500].

bushoutliers = excludedata(bush,bushres,'range',[-500 500]);
goreoutliers = excludedata(gore,goreres,'range',[-500 500]);

% Display the counties corresponding to the outliers. Miami-Dade and Broward counties correspond to the largest predictor values. Palm Beach county, the only county in the state to use the “butterfly” ballot, corresponds to the largest residual values.

counties(bushoutliers)
counties(goreoutliers)

%
% Copyright 2018 The MathWorks, Inc.