// Ejercicio 3 de la guia 8 #include #include #include "TCanvas.h" #include "TH1F.h" #include "TH2F.h" #include "TRandom3.h" #include "TF1.h" #include "TMath.h" #include "TGraph.h" #include "TString.h" #include "TText.h" #include "TLine.h" void g8e3() { float mu = 10.; float sigma = 2.; float N = 1000; float n = 3; float Nbin = 25; // hay que sumar 1 por ser histc y no la funcion hist !!!! TRandom r; r.SetSeed(0); TH1F h1("h1","", Nbin, 0, 20); TH1F h2("h2","", Nbin, 0, 20); TH1F h3("h3","", Nbin, 0, 20); TH1F h_u("h_u","", Nbin, -5, 5); TH1F h_v("h_v","", Nbin, 0, 15); TH1F h_w("h_w","", Nbin, 0, 12); TH1F h_z("h_z","", Nbin, -10, 10); h_u.Sumw2(); h_v.Sumw2(); h_w.Sumw2(); h_z.Sumw2(); TGraph gr1(N); TGraph gr2(N); TGraph gr3(N); gr1.SetMarkerColor(kRed); gr2.SetMarkerColor(kBlue); gr3.SetMarkerColor(kOrange); gr1.SetMarkerSize(0.5); gr2.SetMarkerSize(0.5); gr3.SetMarkerSize(0.5); TGraph grxp(N); grxp.SetMarkerColor(kBlack); grxp.SetMarkerSize(0.5); TCanvas c("c","c",500,700); TPad *pad1 = new TPad("pad1", "",0.0,0.8,1.0,1.0); TPad *pad2 = new TPad("pad2", "",0.0,0.6,1.0,0.8); TPad *pad3 = new TPad("pad3", "",0.0,0.0,1.0,0.6); pad1->Draw(); pad2->Draw(); pad3->Draw(); TText text; text.SetTextColor(kRed); text.SetTextSize(0.05); int countu = 0; for (unsigned int ii = 0; ii != N; ++ii) { float x1 = r.Gaus(mu,sigma); float x2 = r.Gaus(mu,sigma); float x3 = r.Gaus(mu,sigma); gr1.SetPoint(ii, ii, x1); gr2.SetPoint(ii, ii, x2); gr3.SetPoint(ii, ii, x3); h1.Fill(x1); h2.Fill(x2); h3.Fill(x3); float xp = (x1 + x2 + x3) / n; float S2 = ( (x1-mu)*(x1-mu) + (x2-mu)*(x2-mu) + (x3-mu)*(x3-mu) ) / n; float s2 = ( (x1-xp)*(x1-xp) + (x2-xp)*(x2-xp) + (x3-xp)*(x3-xp) ) / (n - 1.); grxp.SetPoint(ii, ii, xp); float u = (xp - mu)/ ( sigma/sqrt(n) ); float v = n * S2 / (sigma*sigma); float w = (n - 1) * s2 / (sigma*sigma); float z = (xp - mu) / (sqrt(s2)/sqrt(n) ); if ((xp - 2*sigma/sqrt(n) <= mu) && (mu <= xp+2*sigma/sqrt(n))) { ++countu; } TLine line; line.SetLineColor(kRed); h_u.Fill(u, 1.); h_v.Fill(v, 1./N); h_w.Fill(w, 1./N); h_z.Fill(z, 1./N); if (ii < 30) { sleep(1); } if (ii < 30 || ii%5 == 0 || ii==(N-1)) { TH2F frame("frame","",1,0,ii,1,0,20); frame.SetStats(0); pad1->cd(); frame.Draw(); gr1.Draw("P"); gr2.Draw("P"); gr3.Draw("P"); pad2->cd(); frame.Draw(); grxp.Draw("P"); pad3->cd(); h_u.SetFillColor(4); h_u.SetBarWidth(0.7); h_u.SetBarOffset(0.1); h_u.SetStats(0); h_u.SetMarkerSize(0); h_u.Draw("Hist b e0"); line.DrawLine(-2,0,-2,100); line.DrawLine(+2,0,+2,100); text.SetNDC(); text.DrawText(0.2,0.85,TString::Format("%d de %d",countu, ii+1)); text.DrawText(0.2,0.81,TString::Format("p = %2.3f",((float)countu)/(ii+1))); gr3.GetYaxis()->SetTitle("x"); grxp.GetYaxis()->SetTitle("#bar{x}"); h_u.GetXaxis()->SetTitle("#bar{x}-#mu/(#sigma/#sqrt{n})"); TF1 f1("f1", "[0]*1./TMath::Sqrt(2.*TMath::Pi())*TMath::Exp(-x*x/2)", -5,5); float binWidth1 = 10./Nbin*(ii+1); f1.SetParameter(0,binWidth1); f1.Draw("SAME"); c.Print(TString::Format("g8e3-intervalos-confianza-brownians-%d.pdf", ii)); } } } /* c.cd(); h1.Draw(); c.Print("g8e3-intervalos-confianza-1.pdf"); h2.Draw(); c.Print("g8e3-intervalos-confianza-2.pdf"); h3.Draw(); c.Print("g8e3-intervalos-confianza-3.pdf"); TF1 f1("f1", "[0]*1./TMath::Sqrt(2.*TMath::Pi())*TMath::Exp(-x*x/2)", -5,5); float binWidth1 = 10./Nbin; f1.SetParameter(0,binWidth1); TCanvas c1("c1","c1"); h_u.SetFillColor(4); h_u.SetBarWidth(0.7); h_u.SetBarOffset(0.1); h_u.SetStats(0); h_u.Draw("b"); f1.Draw("SAME"); c1.Print("g8e3-intervalos-confianza-u.pdf"); TH2F frame2("frame2","",1,0,15,1,0,0.3); frame2.SetStats(0); TF1 f2("f2", "[0]*TMath::Power(2.,-[1]/2.) / TMath::Gamma([1]/2.) * TMath::Power(x, [1]/2.-1.)*exp(-x/2.)", 0,15); // TF1 f22("f22", "[0]*ROOT::Math::chisquared_pdf(x,[1],0.)", 0,15); float binWidth2 = 15./Nbin; f2.SetParameter(0,binWidth2); f2.SetParameter(1,n); // f22.SetParameter(0,1.); // f22.SetParameter(1,3); // f22.SetLineColor(kRed); TCanvas c2("c2","c2"); h_v.SetFillColor(4); h_v.SetBarWidth(0.7); h_v.SetBarOffset(0.1); h_v.SetStats(0); frame2.Draw(); h_v.Draw("b SAME"); f2.Draw("SAME"); // f22.Draw("SAME"); c2.Print("g8e3-intervalos-confianza-v.pdf"); TF1 f3("f3", "[0]*1./TMath::Power(2.,[1]/2.)*1./TMath::Gamma([1]/2.)*TMath::Power(x, [1]/2.-1.)*exp(-x/2.)", 0,12); float binWidth3 = 12./Nbin; f3.SetParameter(0,binWidth3); f3.SetParameter(1,n-1); TCanvas c3("c3","c3"); h_w.SetFillColor(4); h_w.SetBarWidth(0.7); h_w.SetBarOffset(0.1); h_w.SetStats(0); h_w.Draw("b"); f3.Draw("SAME"); c3.Print("g8e3-intervalos-confianza-w.pdf"); TF1 f4("f4", "[0] * TMath::Gamma(([1]+1)/2.) / sqrt(TMath::Pi()*[1]) * TMath::Gamma([1]/2.) * TMath::Power(1+x*x/[1], -([1]+1)/2.)", -10,10); float binWidth4 = 20./Nbin; f4.SetParameter(0,binWidth4); f4.SetParameter(1,n-1); TCanvas c4("c4","c4"); h_z.SetFillColor(4); h_z.SetBarWidth(0.7); h_z.SetBarOffset(0.1); h_z.SetStats(0); h_z.Draw("b"); f4.Draw("SAME"); c4.Print("g8e3-intervalos-confianza-z.pdf"); }*/