23 #define NTRIALS 100000 // trials 25 #define NPVALUES 20 // number of pvalues 26 #define COVERAGE 98.950 42 #include "Math/SpecFuncMathCore.h" 57 if(coverage<0 || coverage>100) {cout <<
"Error: wrong input coverage, must be [0,1]" << endl;
exit(1);}
62 for(
int j=0;
j<
NPVALUES;
j++) pvalue[
j] = gRandom->Uniform(0,1);
63 TMath::Sort(NPVALUES,pvalue,index,kFALSE);
73 double median = (50.)/100.;
74 double lower_tail = ((100.-coverage)/2.)/100.;
75 double upper_tail = 1.-lower_tail;
77 int imedian =
int(NTRIALS*median);
if(imedian>=NTRIALS) imedian=NTRIALS-1;
78 int ilower =
int(NTRIALS*lower_tail);
if(ilower>=NTRIALS) ilower=NTRIALS-1;
79 int iupper =
int(NTRIALS*upper_tail);
if(iupper>=NTRIALS) iupper=NTRIALS-1;
85 TMath::Sort(NTRIALS,pvalue,index,
false);
86 median_belt[
j] = pvalue[index[imedian]];
87 lower_belt[
j] = pvalue[index[ilower]];
88 upper_belt[
j] = pvalue[index[iupper]];
96 for(
int j=0;j<NPVALUES;j++) if(vpvalue[i][j]<lower_belt[j] || vpvalue[i][j]>upper_belt[
j]) iSinside=
false;
97 if(iSinside) nInside++;
99 double global_coverage = 100.*nInside/double(NTRIALS);
102 cout <<
"percentage of trials inside coverage " << coverage <<
"% = " << global_coverage << endl;
105 if(!draw_pvalues_plot)
exit(0);
109 gStyle->SetFrameBorderMode(0);
111 gStyle->SetTitleFont(12,
"D");
112 TCanvas*
canvas =
new TCanvas(
"pvalue",
"pvalue", 300,40, 1000, 600);
118 canvas->SetFillColor(kWhite);
122 TGraph* gmedian_belt =
new TGraph(NPVALUES,x,median_belt);
123 TGraph* glower_belt =
new TGraph(NPVALUES,x,lower_belt);
124 TGraph* gupper_belt =
new TGraph(NPVALUES,x,upper_belt);
126 glower_belt->Draw(
"ALP");
127 gmedian_belt->Draw(
"SAME");
128 gupper_belt->Draw(
"SAME");
138 double lower_tail3 = ((100.-90.)/2.)/100.;
139 double upper_tail3 = 1.-lower_tail3;
141 TGraph* glower_belt3 =
DrawProbabilityBH(NPVALUES, lower_tail3, kGreen,10,
"same");
142 TGraph* gupper_belt3 =
DrawProbabilityBH(NPVALUES, upper_tail3, kGreen,10,
"same");
145 glower_belt->SetTitle(TString::Format(
"p-values distribution (N = %d)",NPVALUES));
146 glower_belt->GetXaxis()->SetTitle(
"Cumulative number of events");
147 glower_belt->GetYaxis()->SetTitle(
"p-value");
149 glower_belt->GetYaxis()->SetRangeUser(0,1);
150 glower_belt->GetXaxis()->SetTitleOffset(0.80);
151 glower_belt->GetYaxis()->SetTitleOffset(0.80);
152 glower_belt->GetXaxis()->CenterTitle(kTRUE);
153 glower_belt->GetYaxis()->CenterTitle(kTRUE);
154 glower_belt->GetXaxis()->SetTitleFont(132);
155 glower_belt->GetXaxis()->SetLabelFont(132);
156 glower_belt->GetYaxis()->SetTitleFont(132);
157 glower_belt->GetYaxis()->SetLabelFont(132);
158 glower_belt->GetXaxis()->SetTitleSize(0.045);
159 glower_belt->GetXaxis()->SetLabelSize(0.045);
160 glower_belt->GetYaxis()->SetTitleSize(0.045);
161 glower_belt->GetYaxis()->SetLabelSize(0.045);
162 glower_belt->GetYaxis()->SetLabelOffset(0.01);
163 glower_belt->GetYaxis()->SetNdivisions(3);
166 TLegend *leg =
new TLegend(0.4148297,0.1184669,0.8897796,0.3501742,NULL,
"brNDC");
167 leg->SetBorderSize(1);
168 leg->SetTextAlign(22);
169 leg->SetTextFont(12);
170 leg->SetLineColor(1);
171 leg->SetLineStyle(1);
172 leg->SetLineWidth(1);
173 leg->SetFillColor(0);
174 leg->SetFillStyle(1001);
175 leg->SetTextSize(0.04);
176 leg->SetLineColor(kBlack);
177 leg->SetFillColor(kWhite);
178 leg->AddEntry(gmedian_belt,
"numerical median",
"lp");
179 leg->AddEntry(glower_belt,TString::Format(
"numerical %.4g%% confidence region",coverage));
180 leg->AddEntry(gmedian_belt2,
"analytical median",
"lp");
181 leg->AddEntry(glower_belt2,TString::Format(
"analytical %.4g%% confidence region",coverage));
182 leg->AddEntry(glower_belt3,TString::Format(
"analytical %.4g%% confidence region",90.));
191 #define PRECISION 1.e-6 201 x = gRandom->Uniform(xmin,xmax);
203 a=ROOT::Math::inc_beta(x, k, N-k+1);
204 if(a<p) xmin=
x;
else xmax=
x;
213 double*
x =
new double[
N];
214 for(
int i=0;
i<
N;
i++) x[
i]=
i+1;
216 double* prob =
new double[
N];
219 TGraph* gprob =
new TGraph(N,x,prob);
220 gprob->SetLineColor(color);
221 gprob->SetLineWidth(3);
222 gprob->SetLineStyle(style);
224 gprob->GetXaxis()->SetRangeUser(1,N);
225 gprob->GetYaxis()->SetRangeUser(0,1);
wavearray< double > a(hp.size())
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1) *itime+ifreq;double time=itime *dT;double freq=(ifreq >0) ? ifreq *dF :dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
double median(std::vector< double > &vec)
void PvalueLocal2GlobalBelts(double coverage=COVERAGE, bool draw_pvalues_plot=true)
TGraph * DrawProbabilityBH(int N, double p, Color_t color, int style=9, TString mode="ALP")
double InverseProbabilityBH(int N, int k, double p)
double vpvalue[NTRIALS][NPVALUES]
double fabs(const Complex &x)