1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2000 - INRIA - Carlos Klimann
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9 //
11 function [coefs]=regress(x,y)
12     //
13     //This function computes the regresion coefficients of two
14     //variables x and y, both numerical vectors of same number
15     //of elements  n. coefs=[a  b] be a  1x2 matrix  such that
16     //Y=a+bX will be the equation of the ordinary least square
17     //approximation to our data.
18     //
19     //References:   Wonacott,    T.H.    &   Wonacott,   R.J.;
20     //Introductory Statistics, J.Wiley & Sons, 1990.
21     //
22     //
24     warnobsolete("reglin", "5.5.1");
25     [lhs, rhs] = argn(0);
26     if rhs < 2 then
27         error(msprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"),"regress",2))
28     end
30     coefs=[]
31     if (type(x) <> 1)|(type(y)<>1) then error(msprintf(gettext("%s: Wrong type for input arguments: Numerical expected.\n"),"regress")), end
32     lx=length(x)
33     if lx<>length(y) then error(msprintf(gettext("%s: Wrong size for both input arguments: same size expected.\n"),"regress")), end
34     if lx==0 then error(msprintf(gettext("%s: Wrong size for input argument #%d: Must be > %d.\n"),"regress", 1, 0)), end
35     x=matrix(x,lx,1)
36     y=matrix(y,lx,1)
37     xbar=sum(x)/lx
38     ybar=sum(y)/lx
39     coefs(2)=sum((x-xbar).*(y-ybar))/sum((x-xbar).^2)
40     coefs(1)=ybar-coefs(2)*xbar
41 endfunction