function plot_means_comparison(X,IHD,ALL_CATEGORIES) num_params=size(X,2); for param_idx=1:num_params mean_all=X(:,param_idx); mean_1=X(IHD==1,param_idx); mean_0=X(IHD==0,param_idx); mean_1_abs=abs(X(IHD==1,param_idx)); mean_0_abs=abs(X(IHD==0,param_idx)); isnan1=sum(~isnan(X(IHD==1,param_idx)))/(sum(IHD==1)); isnan0=sum(~isnan(X(IHD==0,param_idx)))/(sum(IHD==0)); M1 = mode(mean_1); M0 = mode(mean_0); max_score1_norm= th_search(X(:,param_idx)); max_score1_abs= th_search(abs(X(:,param_idx))); % figure(param_idx) % % subplot(1,3,1) % hist(mean_all) % title([ALL_CATEGORIES{param_idx} ' all']) % % % subplot(1,3,2) % hist(mean_1) % title([ALL_CATEGORIES{param_idx} ' 1']) % % % subplot(1,3,3) % hist(mean_0) % title([ALL_CATEGORIES{param_idx} ' 0']) % figure(param_idx+num_params+5) % hist(mean_1,20) % h = findobj(gca,'Type','patch'); % set(h,'FaceColor','r','EdgeColor','w','facealpha',0.75) % hold on; % hist(mean_0,20) % h1 = findobj(gca,'Type','patch'); % set(h1,'facealpha',0.75); % title([ALL_CATEGORIES{param_idx} ' mode0=' num2str(M0) '. ' ' mode1=' num2str(M1)]); % % figure(param_idx+num_params+5) title([ALL_CATEGORIES{param_idx} ' norm=' num2str(max_score1_norm) '. ' ' abs= ' num2str(max_score1_abs) ]); subplot(1,2,1) % [N, X] = hist(mean_1,25); % bar(X, N./sum(N), 1); % h = findobj(gca,'Type','patch'); % set(h,'FaceColor','r','EdgeColor','w','facealpha',0.75) % hold on; % [N, X] = hist(mean_0, X); % bar(X, N./sum(N), 1); % h1 = findobj(gca,'Type','patch'); % set(h1,'facealpha',0.75); % title([ALL_CATEGORIES{param_idx} ' mode0=' num2str(M0) '. ' ' mode1= ' num2str(M1) '. isnan0= ' num2str(isnan0) '. isnan1= ' num2str(isnan1)]); scatter(mean_1,ones(size(mean_1)),'xr') mean1=mean(mean_1(~isnan(mean_1))); % vari=var(mean_1(~isnan(mean_1))); medi=median(mean_1(~isnan(mean_1))); line([mean1 mean1],[1 0.5],'Color','r') line([medi medi],[1 0.5],'Color','r','LineStyle','--') hold on scatter(mean_0,zeros(size(mean_0)),'ob') mean0=mean(mean_0(~isnan(mean_0))); %vari=var(mean_0(~isnan(mean_0))); medi=median(mean_0(~isnan(mean_0))); line([mean0 mean0],[0 0.5],'Color','b') line([medi medi],[0 0.5],'Color','r','LineStyle','--') % title([ALL_CATEGORIES{param_idx} ' mode0=' num2str(M0) '. ' ' mode1= ' num2str(M1) '. isnan0= ' num2str(isnan0) '. isnan1= ' num2str(isnan1)]); title([ALL_CATEGORIES{param_idx} ' norm=' num2str(max_score1_norm) '. ' ' abs= ' num2str(max_score1_abs) ]); subplot(1,2,2) scatter(mean_1_abs,ones(size(mean_1_abs)),'xr') mean1_abs=mean(mean_1_abs(~isnan(mean_1_abs))); % vari=var(mean_1(~isnan(mean_1))); medi_abs=median(mean_1_abs(~isnan(mean_1_abs))); line([mean1_abs mean1_abs],[1 0.5],'Color','r') line([medi_abs medi_abs],[1 0.5],'Color','r','LineStyle','--') hold on scatter(mean_0_abs,zeros(size(mean_0_abs)),'ob') mean0_abs=mean(mean_0_abs(~isnan(mean_0_abs))); %vari=var(mean_0(~isnan(mean_0))); medi_abs=median(mean_0_abs(~isnan(mean_0_abs))); line([mean0_abs mean0_abs],[0 0.5],'Color','b') line([medi_abs medi_abs],[0 0.5],'Color','r','LineStyle','--') % title([ALL_CATEGORIES{param_idx} ' mode0=' num2str(M0) '. ' ' mode1= ' num2str(M1) '. isnan0= ' num2str(isnan0) '. isnan1= ' num2str(isnan1)]); title([ALL_CATEGORIES{param_idx} ' norm=' num2str(max_score1_norm) '. ' ' abs= ' num2str(max_score1_abs) ]); pause(.1) % data = rand(1, 100); % [N, X] = hist(data, 0:0.1:1); % % subplot(2, 1, 1); % hist(data, 0:0.1:1); % % subplot(2, 1, 2); % bar(X, N./sum(N), 1); end function max_score1_lam= th_search(X_Test) DATA=zeros(size(X_Test,1),3); best_lam=0; max_score1_lam=0; max_score2_lam=0; best_lam_score=[]; lam=1; for lam_idx=1:length(lam) B = mnrfit(X_Test,IHD+1); PHAT = mnrval(B,X_Test); if size(PHAT,2)==1 max_score1_lam=-1; return end % Y=(IHD-1)+IHD; % classes y ={-1,1} % X=X_Test; % R=~isnan(X); % PHAT=teach_log_reg(X,Y,R,lam(lam_idx)); %[IDX,C,sumd] = kmeans(double(R),5); %X_trunc_saps=[SAPS_SCORES(isnan(PHAT(:,2)))-SAPS_SCORES_48(isnan(PHAT(:,2))) SAPS_SCORES(isnan(PHAT(:,2))) ]; %B_saps = mnrfit(X_trunc_saps,IHD(isnan(PHAT(:,2)))+1); %PHAT_saps = mnrval(B_saps,X_trunc_saps); max_score1=0; max_score2=0; best_th=0; for class_th=.1:.01:0.5 DATA(:,1)=str2double('0000'); DATA(:,2)=PHAT(:,2); %DATA(isnan(PHAT(:,2)),2)=PHAT_saps(:,2); DATA(:,3)=PHAT(:,2)> class_th; % DATA(isnan(PHAT(:,2)),3)=PHAT_saps(:,2)> 0.33; % % % DATA(:,2)=PHAT(:,2); % % % DATA(isnan(PHAT(:,2)),2)=PHAT_saps(:,2); % % % DATA(~isnan(PHAT(:,2)),3)=PHAT(~isnan(PHAT(:,2)),2)> class_th; % % % DATA(isnan(PHAT(:,2)),3)=PHAT_saps(:,2)> 0.33; DATA(DATA(:,2)<0.01,2)=0.01; DATA(DATA(:,2)>0.99,2)=0.99; %DATA(:,3)=PHAT1(:,2)>0.17 & PHAT2(:,2)>class_th ; % if max_score1==0 % savefile = 'DATA_learn.mat'; % save(savefile, 'DATA') % % end % if(~isempty(results)) % Calculate sensitivity (Se) and positive predictivity (PPV) TP=sum(DATA(IHD==1,3)); FN=sum(~DATA(IHD==1,3)); FP=sum(DATA(IHD==0,3)); Se=TP/(TP+FN); PPV=TP/(TP+FP); show=0; % if show is 1, the decile graph will be displayed by lemeshow() H=lemeshow([IHD DATA(:,2)],show); % Use the title of figure to display the results title(['H= ' num2str(H) ' Se= ' num2str(Se) ' PPV= ' num2str(PPV) '. ' num2str(class_th) ]) % The event 1 score is the smaller of Se and PPV. score1 = min(Se, PPV); if score1>max_score1 max_score1=score1; best_th=class_th; max_score2=H; % display(['Unofficial Event 1 score: ' num2str(score1)]); end % The event 2 score is the Hosmer-Lemeshow statistic (H). %display(['Unofficial Event 2 score: ' num2str(H)]); figure(1000) hold on scatter(class_th,score1,'x') % end %B' end best_lam_score(lam_idx)=max_score1; if max_score1 > max_score1_lam best_lam=0; max_score1_lam=max_score1 max_score2_lam=max_score2 best_th end end end end