0001 function pls = PCA2PLS(obj)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 x=whos('obj');
0015 if ~strcmp(x.class,'PCA')
0016 error('Error/PCA2PLS: obj must be an instance of PCA class!');
0017 end
0018
0019 temps = clock;
0020 datasource = {struct('name','', 'type','data', 'author','', 'date',temps, 'moddate',temps,'size',size(obj.getZ),'include_size',size(obj.getZ), 'description','','uniqueid',num2str(temps))};
0021 loads ={[obj.getT] ; [obj.getP]};
0022 pred = {[]};
0023 tsqs = {[obj.getT2]; [sum(obj.getP .^2,2)' * (size(obj.getP,1)-1)]};
0024 ssqresiduals = {[obj.getQ];[sum(obj.getQContribution,1)]};
0025 description = {['Principal Components Model'];[];[]};
0026 aux=min(obj.getVariableCount * obj.getSampleCount,obj.getBatchCount-1);
0027 li = obj.getLambdaAll;
0028 li = li(1:aux);
0029 aux2 =li * 100 / sum(li);
0030 ssq = [ (1:aux)' ,li, aux2, cumsum(aux2)];
0031 reslim = {{obj.getQLimit}};
0032 tsqlim = {{obj.getT2Limit}};
0033 li = obj.getLambdaAll;
0034 reseig = [li(obj.getNum+1:aux)];
0035 includ = {1:obj.getBatchCount(); 1:(obj.getVariableCount*obj.getSampleCount)};
0036
0037 if(obj.getNormalizationMethod == 1)
0038 aux11 = obj.getMean;
0039 aux22 = obj.getStd;
0040 preprocessing = struct('description','Autoscale','calibrate',{{'[data,out{1},out{2}] = auto(data,userdata);'}},'apply',{{'data = scale(data,out{1},out{2},userdata);'}},'undo',...
0041 {{'data = rescale(data,out{1},out{2},userdata);'}},'out',{{aux11,aux22}},'settingsgui','autoset','settingsonadd',0,'usesdataset',1,'caloutputs',2,'keyword','Autoscale',...
0042 'tooltip','Mean center and scale each variable to unit standard deviation','category','Scaling and Centering','userdata',struct('offset',0,'badreplacement',0,'stdthreshold',0));
0043 preprocessing2 = preprocessing;
0044 preprocessing2.out = cell(0,0);
0045 else
0046 if(obj.getNormalizationMethod == 4)
0047 aux11 = obj.getMean;
0048 aux22 = obj.getStd;
0049 preprocessing = struct('description','Group Scale','calibrate',{{'[data,out{1},out{2}] = gscale(data,userdata);'}},'apply',{{'data = gscaler(data,userdata,out{1},out{2});'}},'undo',...
0050 {{'data = gscaler(data,userdata,out{1},out{2},1);'}},'out',{{aux11,aux22}},'settingsgui','gscaleset','settingsonadd',0,'usesdataset',1,'caloutputs',2,'keyword','gscale',...
0051 'tooltip','Scale groups of variables to grand standard deviation','category','Scaling and Centering','userdata',0);
0052 preprocessing2 = preprocessing;
0053 else
0054 error('Metode no suportat');
0055 end
0056 end
0057 x=unique(obj.getClass)';
0058 lookup = cell(length(x),2);
0059 for i =1: length(x)
0060 lookup{i,1}=double(x(i));
0061 lookup{i,2}=['Class ' num2str(x(i))];
0062 end
0063 detail = struct('data',{cell(1,1)},'res',{cell(1,1)},'ssq',ssq,'rmsec',[],'rmsecv',[],'esterror',struct([]),'means',{cell(1,1)},'stds',{cell(1,1)},...
0064 'reslim',reslim ,'tsqlim',tsqlim,'reseig',reseig,'eigsnr',[],'cv','','split',[],'iter',[],'includ',{includ},'label',{{'';''}},'labelname',{{'';''}},'axisscale',{cell(2,1)},...
0065 'axisscalename',{{'';''}},'title',{{'';''}},'titlename',{{'';''}},'class',{{obj.getClass;[]}},'classname',{{'';''}},'classlookup',{{lookup;[]}},'preprocessing',{{preprocessing}},...
0066 'options', [struct('name', 'options','display', 'off','plots', 'none','outputversion', 3,'preprocessing', {{preprocessing2}},'algorithm', 'svd','blockdetails', 'standard',...
0067 'confidencelimit', 0.9500,'roptions', [struct('alpha',0.75,'cutoff',[])],'definitions', @optiondefs,'functionname', 'pca','rawmodel', 1)]);
0068
0069 help = struct('predictions',[...
0070 struct('label','Scores','field','loads{1}','dimension','vector'),...
0071 struct('label','Hotelling''s T^2','field','tsqs{1}','dimension','scalar'),...
0072 struct('label','Q Residuals','field','ssqresiduals{1}','dimension','scalar'),...
0073 struct('label','T Contributions','field','tcon','dimension','vector'),...
0074 struct('label','Q Contributions','field','qcon','dimension','vector')...
0075 ]);
0076
0077 pls = struct();
0078 pls.modeltype='PCA';
0079 pls.author='auto generated';
0080 pls.datasource=datasource;
0081 pls.date= [num2str(temps(3)) '/' num2str(temps(2)) '/' num2str(temps(1)) ' - ' num2str(temps(4)) 'h' num2str(temps(5)) 'm'];
0082 pls.time=temps;
0083 pls.info='Scores are in cell 1 of the loads field.';
0084 pls.loads= loads;
0085 pls.pred=pred;
0086 pls.tsqs= tsqs;
0087 pls.ssqresiduals= ssqresiduals;
0088 pls.description= description;
0089 pls.detail= detail;
0090 pls.help= help;
0091 pls.modelversion= '6.5';
0092 end