image thumbnail

Linear regression with statistics for multiple category data

by

 

This function does linear regression with statistics for multiple category data (OLS and RMA)

regress_plot_twocategories
function regress_plot_twocategories(input_x,input_y,input_x1,input_y1,input_x2,input_y2,desc,x_label,y_label)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Name - regress_plot_twocategories
% Creation Date - 18th Oct 2011
% Author: Soumya Banerjee
% Website: www.cs.unm.edu/~soumya
%
% Acknowledgements: Dr. Melanie Moses
%
% Description: Takes six column vectors, a description, x label and y label and
% plots the data and outputs all the statistics (r2, OLS slope, RMA slope, 95% CI
% intervals)
% Same syntax as plot(x,y) : x-axis data 1st followed by y-axis data
%
% input_x:  combined column vector x
% input_y:  combined column vector y
% input_x1: category 1 column vector x
% input_y1: category 1 column vector y
% input_x2: category 2 column vector x
% input_y2: category 2 column vector y
% desc:     description of plot (goes in the title of the plot)
% x_label:  label for x-axis of plot
% y_label:  label for y-axis of plot
%
% Example usage:
% regress_plot_twocategories([1 1 1 1 2 2 2 2 2]',[1 1.1 1.2 1.3 2.2 2.1 2.3 2 2.4]',...
% [1 1 1 1]', [1 1.1 1.2 1.3]', [2 2 2 2 2]',[2.2 2.1 2.3 2 2.4]',...
% 'analysis of all individuals mcmc burn-in thinning',...
% 'log_1_0(M)','log_1_0(delta)')
%
% License - BSD
%
% Change History -
%                   18th Oct 2011 - Creation by Soumya Banerjee
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

msapop_ones = [ones(size(input_x)), input_x];
[b1 bint r rint stats] = regress(input_y,msapop_ones);
display('RMA Slope')
% RMA (reduced major axis) slope
rmaslope = b1(2,1) / stats(1,1) ^ 0.5
display('bint')
bint
display('95% CI on intercept')
bint(1,:)
display('95% CI on slope')
bint(2,:)
display('r2')
stats(1,1)
display('OLS Slope')
b1(2,1)
olsslope = b1(2,1);
display('p value')
stats(1,3)
display('b1')
b1

figure
plot(input_x1,input_y1,'ks','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',10)
xlabel(x_label,'fontsize',23);
ylabel(y_label,'fontsize',23);
title(strcat(strcat(strcat(strcat(desc,strcat(strcat(strcat(strcat('r^2 value = ',num2str(stats(1,1))), strcat('OLSslope = ',num2str(olsslope))), 'RMAslope = '),num2str(rmaslope)))),'p value = '),num2str(stats(1,3))),'fontsize',18);
hold on
plot(input_x2,input_y2,'ro','MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',10)
%  axis([-2 0.55 0.25 0.75])
% axis([1 11 1 17])
plot(input_x,olsslope .* input_x + b1(1,1),'-b');
hold on
% plot([-2 -1 0 1 2 3],[5 5 5 5 5 5],'-r')
% plot(plot_x,rmaslope * plot_x + 1,'-g');
plot(input_x,rmaslope * input_x + b1(1,1),'-g');
legend('Passerines','Nonpasserines','OLS slope','RMA slope','Location','NorthEast')

hold off

end
Error using regress_plot_twocategories (line 38)
Not enough input arguments.

Contact us