2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2000 - INRIA - Carlos Klimann
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 //
12 function [f,p]=ftuneq(varargin)
13     //
14     //This function computes the F ratio for samples of unequal
15     //size.
16     //
17     //"The most  efficient design is  to make all  samples the
18     //same  size n.   However when  this is  nor  feasible, it
19     //still  is possible  to modify  the  ANOVA calculations."
20     //Note  that  the  definition  of  xbarbar  is  no  longer
21     //mean(xbar), but  rather a weighted  average with weights
22     //ni.  Additionnally  it gives (in  p) the p-value  of the
23     //computed Fischer ratio.
24     //
25     //Given a number  a of samples each of  them composed of n_i
26     //(i from 1  to a) observations this fonction  computes in f
27     //the Fischer  ratio (it is  the ratio between nr  times the
28     //variance  of the  means of  samples  and the  mean of  the
29     //variances of each sample).
30     //
31     //References:  Wonacott, T.H. & Wonacott, R.J.; Introductory
32     //Statistics, J.Wiley & Sons, 1990.
33     //
34     //
35     [lhs,rhs]=argn(0)
36     data=[]
37     total=0
38     sse=0
39     for i=1:rhs
40         len(i)=size(varargin(i),"*"),
41         mat=matrix(varargin(i),len(i),1),
42         partial=sum(mat),
43         xbar(i)=partial/len(i),
44         total=total+partial,
45         data=[data; mat]
46         sse=sse+sum((mat-xbar(i)).^2)
47     end
48     xbarbar=total/sum(len)
49     ssa=len'*((xbar-xbarbar).^2)
50     msa=ssa/(rhs-1)
51     deglib=sum(len-1)
52     mse=sse/deglib
53     f=msa/mse
54     p=1-cdff("PQ",f,(rhs-1),deglib)
55 endfunction