#### fixed FBS basedir fixed confidece interval plot

git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@205 83ab2cfd-5345-466c-8aeb-2b2739fb922d

Christoph Budziszewski authored on 06/08/2009 18:02:56
Showing 5 changed files
 1 1 `new file mode 100644` ... ... `@@ -0,0 +1,18 @@` 1 ```+function [KI_u,KI_o,PROZ]=ki_bin(Z,N,alpha) ``` 2 ```+% Berechnet Konfidenzintervall f�r Binomialverteilte Zufallsvariable ``` 3 ```+% Aufruf: [KI_u,KI_o,PROZ]=ki_bin(Z,N,alpha); ``` 4 ```+% Z (zB 5) von insgesamt N (zB 20) Beobachtungen mit Merkmalsauspr�gung x, ``` 5 ```+% und damit N-Z Beobachtungen des Alternativmerkmals y. ``` 6 ```+% alpha: Schranken des Konfidenzintervalls (z.B. 0.05 entspricht 95% Vertrauensbereich). ``` 7 ```+% �bergibt in KI_u die untere in KI_o die obere Vertrauensgrenze, ``` 8 ```+% PROZ ist der Anteil des Merkmals x bezogen auf alle Beobachtungen in Prozent. ``` 9 ```+ ``` 10 ```+ ``` 11 ```+PROZ=Z/N; ``` 12 ```+alpha=alpha/2; ``` 13 ```+KI_u=(Z+1)*finv(alpha,2*(Z+1),2*(N-Z))/(N-Z+(Z+1)*finv(alpha,2*(Z+1),2*(N-Z))); ``` 14 ```+KI_o=Z/(Z+(N-Z+1)*finv(alpha,2*(N-Z+1),2*Z)); ``` 15 ```+ ``` 16 ```+end ``` 17 ```+ ``` 18 ```+ ```
 ... ... `@@ -81,7 +81,7 @@ switch task` 81 81 ``` out.header.classDef = classDef; ``` 82 82 ``` ``` 83 83 ``` ``` 84 ```- out.subjectdata = fbs_load_mask(model.baseDir,subjects); ``` 84 ```+ out.subjectdata = fbs_load_mask(getBaseDir(model),subjects); ``` 85 85 ``` ``` 86 86 ``` % if(size(subjects,2)>1) ``` 87 87 ``` % display(sprintf('No BATCH Support for Searchlight!')); ``` ... ... `@@ -92,7 +92,7 @@ switch task` 92 92 ``` fbsargs.timeline = timeLine; ``` 93 93 ``` fbsargs.classes = classDef; ``` 94 94 ``` fbsargs.mask = mask; ``` 95 ```- fbsargs.basedir = model.baseDir; ``` 95 ```+ fbsargs.basedir = getBaseDir(model); ``` 96 96 ``` fbsargs.sessionList = 1:3; ``` 97 97 ``` fbsargs.eventList = classDef.eventMatrix; ``` 98 98 ``` fbsargs.psthOpts = psthOpts; ```
 ... ... `@@ -26,52 +26,64 @@ nTrials = getNTrials(psth);` 26 26 ``` axis([psthStart psthEnd 0 100]) ``` 27 27 ``` xlabel('time [sec]'); ``` 28 28 ``` ylabel('decode performance [%]'); ``` 29 ```- ``` 29 ```+plottime= tic; ``` 30 30 ``` switch type ``` 31 31 ``` case 'psth' ``` 32 32 ``` plotPSTH(psth,psthStart,psthEnd); ``` 33 ```+ ``` 33 34 ``` case 'simple' ``` 34 35 ``` plotDecodePerformanceWithSE(frameStart,frameEnd,decodePerformance) ``` 36 ```+ ``` 37 ```+ plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); ``` 38 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.05,chanceLevel/100,'--'); ``` 39 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.01,chanceLevel/100,'-.'); ``` 40 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.001,chanceLevel/100,':'); ``` 41 ```+ ``` 35 42 ``` case 'class performance' ``` 36 43 ``` plotClassPerformance(frameStart,frameEnd,decodePerformance,nClasses) ``` 44 ```+ ``` 45 ```+ plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); ``` 46 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.05,chanceLevel/100,'--'); ``` 47 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.01,chanceLevel/100,'-.'); ``` 48 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.001,chanceLevel/100,':'); ``` 37 49 ``` case 'x-subject-val' ``` 38 50 ``` for c = 1:nSubjects ``` 39 51 ``` plot(frameStart:frameEnd, decodePerformance(:,c) ,[colorChooser(mod(c,nSubjects)+3) '-']); ``` 40 52 ``` end ``` 41 53 ``` plotDecodePerformanceWithSE(frameStart,frameEnd,decodePerformance) ``` 42 ```- end ``` 43 ```- ``` 44 ```- plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); ``` 54 ```+ ``` 55 ```+ plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); ``` 56 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.05,chanceLevel/100,'--'); ``` 57 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.01,chanceLevel/100,'-.'); ``` 58 ```+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.001,chanceLevel/100,':'); ``` 45 59 ``` ``` 46 ```- plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.05,chanceLevel/100,'r'); ``` 47 ```- plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.01,chanceLevel/100,'g'); ``` 48 ```- ``` 60 ```+ end ``` 61 ```+toc(plottime); ``` 49 62 ``` hold off; ``` 50 63 ``` ``` 51 ```-% setTitle(f,header,decode,subjectData); ``` 52 ```- ``` 53 64 ``` end ``` 54 65 ``` ``` 55 66 ``` function plotBinConfidenceIntervall(pStart,pEnd,nTrials,alpha,limit,color) ``` 56 67 ``` [pLevel Z] = rev_ki_bin(nTrials,alpha,limit); ``` 57 68 ``` [lower upper proz] = ki_bin(Z,nTrials,alpha); ``` 58 69 ``` ``` 59 ```- plot([pStart pEnd],[pLevel*100 pLevel*100],[color ':']); ``` 60 ```- ``` 61 ```- plot([pStart pEnd],[lower*100 lower*100],[color '-.']); ``` 62 ```- plot([pStart pEnd],[upper*100 upper*100],[color '-.']); ``` 70 ```+ plot([pStart pEnd],[pLevel*100 pLevel*100],[color 'k']); ``` 71 ```+% plot([pStart pEnd],[lower*100 lower*100],[color 'k']); ``` 72 ```+% plot([pStart pEnd],[upper*100 upper*100],[color 'k']); ``` 63 73 ``` end ``` 64 74 ``` ``` 65 75 ``` function n = getNTrials(psth) ``` 66 ```-nSubjects = size(psth,2); ``` 76 ```+nOverallConditions = size(psth,2); ``` 67 77 ``` ``` 68 78 ``` n = 0; ``` 69 ```-for ns = 1:nSubjects ``` 79 ```+for ns = 1:nOverallConditions ``` 70 80 ``` nClasses = size(psth{ns},2); ``` 71 81 ``` for nc = 1:nClasses ``` 72 82 ``` n = n + size(psth{ns}{nc},1); ``` 73 83 ``` end ``` 74 84 ``` end ``` 85 ```+n=n/(nOverallConditions/nClasses); ``` 86 ```+ ``` 75 87 ``` end ``` 76 88 ``` ``` 77 89 ``` function plotClassPerformance(frameStart,frameEnd,decodePerformance,nClasses) ``` ... ... `@@ -104,7 +116,9 @@ PSTH_AXIS_MAX = 2;` 104 116 ``` psthData = nanmean(psth{voxel}{label}); ``` 105 117 ``` end ``` 106 118 ``` PSTH_AXIS_MAX = max(PSTH_AXIS_MAX,nanmax(psthData)); ``` 119 ```+ PSTH_AXIS_MIN = min(PSTH_AXIS_MIN,nanmin(psthData)); ``` 107 120 ``` plot(psthStart:psthEnd,psthData,[colorChooser(voxel), lineStyleChooser(label)]); ``` 121 ```+% plot(psthStart:psthEnd,psthData,[lineStyleChooser(voxel), colorChooser(label)]); ``` 108 122 ``` end ``` 109 123 ``` end ``` 110 124 ``` end ```
 111 125 `new file mode 100644` ... ... `@@ -0,0 +1,20 @@` 1 ```+function [PROZ Z] = rev_ki_bin(N,alpha,KI_u) ``` 2 ```+% rausbekommen ab wie vielen (hypothetischen) Beobachtungen einer Klasse ``` 3 ```+% (f�r ein gegebenes N, dh alle trials/Cross-Validations) das ``` 4 ```+% Konfidenzintervall f�r die decode performance f�r diese Klasse den ``` 5 ```+% 50%-Wert (also chance) gerade noch umschliesst (dh. KI_u=50%). Der ``` 6 ```+% zugeh�rige PROZ wert w�rde dann die Schwelle fetlegen, die geplottet ``` 7 ```+% werden soll. Decode werte �ber dieser Schwelle w�ren dann mit 95% ``` 8 ```+% Sicherheit signifikant. ``` 9 ```+ ``` 10 ```+ ``` 11 ```+Z = 0; ``` 12 ```+KI_low = 0; ``` 13 ```+% tic ``` 14 ```+while KI_low < KI_u && (Z+1)< N ``` 15 ```+ Z = Z + 1; ``` 16 ```+ KI_low = ki_bin(Z,N,alpha); ``` 17 ```+end ``` 18 ```+% toc ``` 19 ```+PROZ = Z/N; ``` 20 `+end` 0 21 `\ No newline at end of file`
 1 22 `Binary files a/study/default.mat and b/study/default.mat differ`