
%three groups


load Fl15 %coefficients
cxyz=[];

%3 groups

nrep=28;

%grupos: 1 control, 2 dcl, 3 enfermo
g=[repmat(1,1,12) repmat(2,1,6) repmat(3,1,10)];

grupo=g;



for i=1:nrep
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;

%con leave-one-out 

rand('state',1)

e=[];

for ni=1:24
lni=ni;

errores=0;
erroresq=0;


for i=1:28

 indi=ones(28,1);
 indi(i)=0;
 indi=logical(indi);
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),grupo(indi),'linear','empirical');




errores=errores + double(c1~=grupo(i));


if(c1~=grupo(i))

[i,c1]

end
end

e=[e errores]; 
end


e =

    15     4     5     5     6     6     4     6     4     5     4     5     2     2     3     4     3     5     5     5     6     8    12    11
    
     ni=9 %errors
    
    ans =

    14     1


ans =

    15     3


ans =

    18     1


ans =

    20     2
    
    %No. components
    
    
rand('state',1)

cll=zeros(28,23); %matriz de clasificacion por ni

erl=zeros(28,23); %matriz de errores global

for i=1:28
    indi=ones(28,1);
    indi(i)=0;
   indi=logical(indi);
 
 
    for ni=1:23 %

 lni=ni;
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),grupo(indi),'linear','empirical');

cll(i,ni)=c1;

s=setdiff(1:28,i);
errores=0;
for j=s
    
    indi2=ones(28,1);
    indi2(i)=0;
    indi2(j)=0;
   indi2=logical(indi2);
[c1,e1]=classify(coica(j,:),coica(indi2,:),grupo(indi2),'linear','empirical');
errores=errores + double(c1~=grupo(j));

end

erl(i,ni)=errores;

end
    
end

% plot(1:24,sum(er,1)) 
figure
plot(1:23,sum(erl,1)) % mínimo en 9 

sum(erl,1)

ans =

   394   132   135   161   163   154   132   143    92   122   121   118   107   154   157   161   176   237   318   370   344   377   438
   
   
   %%%

    %%%%%%%%%
    % CN-MCI
    
    
cxyz=[];




g2=[repmat(1,1,12) repmat(2,1,6)];


nrep=18;

for i=1:nrep
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;

%%%%%%%%%%%%%%%
  %leave-one out
  
  e=[];
  for ni=1:15
  lni=ni;

errores=0;
erroresq=0;


for i=1:18

 indi=ones(18,1);
 indi(i)=0;
 indi=logical(indi);
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),g2(indi),'linear','empirical');


errores=errores + double(c1~=g2(i));


if(c1~=g2(i))

[i,c1]

end
end

e=[e errores]; %

  end
  
  e =

     7     6     5     4     3     2     3     3     3     3     2     2     4     6     6

     
     ni=6
     
     los dos errores son:
     
     ans =

    14     1


ans =

    15     1
     
    %No. components
    
    
   grupo=[repmat(1,1,12) repmat(2,1,6)];

   
rand('state',1)

cll=zeros(18,14); %matriz de clasificacion por ni

erl=zeros(18,14); %matriz de errores global

for i=1:18
    indi=ones(18,1);
    indi(i)=0;
   indi=logical(indi);
 
 
    for ni=1:14 %
 lni=ni;
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),grupo(indi),'linear','empirical');

cll(i,ni)=c1;

s=setdiff(1:18,i);
errores=0;
for j=s
    
    indi2=ones(18,1);
    indi2(i)=0;
    indi2(j)=0;
   indi2=logical(indi2);
[c1,e1]=classify(coica(j,:),coica(indi2,:),grupo(indi2),'linear','empirical');
errores=errores + double(c1~=grupo(j));

end

erl(i,ni)=errores;

end
    
end

plot(1:14,sum(erl,1)) % el que menos 6  

120    94    84    37    38    35    43    61    65    81    99   104   103   105


%%%%%%%%%%%%%%%%
%%% CN-AD
    

g4=[repmat(1,1,12) repmat(3,1,10)];
 
 do=[1:12 19:28];
 
 cxyz=[];
 
for i=do
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;


%%%%%%%%%%%%%%%
  %leave-one out
  
  e=[];
  for ni=1:20
  lni=ni;

errores=0;
erroresq=0;


for i=1:22

 indi=ones(22,1);
 indi(i)=0;
 indi=logical(indi);
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),g4(indi),'linear','empirical');


errores=errores + double(c1~=g4(i));


if(c1~=g4(i))

[i,c1]

end
end

e=[e errores]; %

  end
  
  e =

     9     0     0     0     0     0     0     0     0     0     0     0     1     2     2     2     2     2     1


%No. components


   grupo=[repmat(1,1,12) repmat(3,1,10)];
   
    do=[1:12 19:28];
    cxyz=[];
 
for i=do
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;

   
rand('state',1)

cll=zeros(22,17); %matriz de clasificacion por ni

erl=zeros(22,17); %matriz de errores global

for i=1:22
    indi=ones(22,1);
    indi(i)=0;
   indi=logical(indi);
 
 
    for ni=1:17 %
 lni=ni;
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),grupo(indi),'linear','empirical');

cll(i,ni)=c1;

s=setdiff(1:22,i);
errores=0;
for j=s
    
    indi2=ones(22,1);
    indi2(i)=0;
    indi2(j)=0;
   indi2=logical(indi2);
[c1,e1]=classify(coica(j,:),coica(indi2,:),grupo(indi2),'linear','empirical');
errores=errores + double(c1~=grupo(j));

end

erl(i,ni)=errores;

end
    
end


   plot(1:17,sum(erl,1)) % el que menos el 2, más parsimonia
sum(erl,1)
   
   180     0     0     0     0     0     0     3     4     3    12    27    36    34    44    54    82
   
   
   %%%%%%%%%
   %%%%
   % MCI-AD
   
   
cxyz=[];




g2=[ repmat(2,1,6) repmat(3,1,10)];




for i=13:28
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;
  %leave-one out
  
  e=[];
  for ni=1:12
  lni=ni;

errores=0;
erroresq=0;


for i=1:16

 indi=ones(16,1);
 indi(i)=0;
 indi=logical(indi);
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),g2(indi),'linear','empirical');


errores=errores + double(c1~=g2(i));


if(c1~=g2(i))

[i+12,c1]

end
end

e=[e errores]; %

  end
  
  e =

     8     5     4     3     3     3     3     4     4     4     5     5
     
     ni=4
     
     ans =

    14     3


ans =

    15     3


ans =

    26     2


 %No. components
 
 
   
   grupo=[repmat(2,1,6) repmat(3,1,10)];
   
    
    cxyz=[];
 
for i=13:28
    
    r=find(Fl(i).x); %son los distintos de cero
    s=find(Fl(i).y);
    t=find(Fl(i).z);
    cxyz=[cxyz; Fl(i).x(r)' Fl(i).y(s)' Fl(i).z(t)'];
    
end

xmi=cxyz;

   
rand('state',1)

cll=zeros(16,12); %matriz de clasificacion por ni

erl=zeros(16,12); %matriz de errores global

for i=1:16
    indi=ones(16,1);
    indi(i)=0;
   indi=logical(indi);
 
 
    for ni=1:12 

 lni=ni;
 
  [icaxmi,A,W]=fastica(xmi(indi,:),'lastEig', lni,'numOfIC', ni,'verbose','off'); 
 
  
%calculo coeficientes c segun Ramsay para training
fi=icaxmi';

coica=inv(fi'*fi)*fi'*xmi';

coica=coica';


 
[c1,e1]=classify(coica(i,:),coica(indi,:),grupo(indi),'linear','empirical');

cll(i,ni)=c1;

s=setdiff(1:16,i);
errores=0;
for j=s
    
    indi2=ones(16,1);
    indi2(i)=0;
    indi2(j)=0;
   indi2=logical(indi2);
[c1,e1]=classify(coica(j,:),coica(indi2,:),grupo(indi2),'linear','empirical');
errores=errores + double(c1~=grupo(j));

end

erl(i,ni)=errores;

end
    
end


   plot(1:12,sum(erl,1)) % minimo en 4, 
sum(erl,1)
   
115    80    68    38    49    65    64    71    87    99    85    81


