#!/usr/bin/env python # coding: utf-8 # # normalDist # Tutorial illustrating the new statistical distributions functions (pdf, cdf and quantile) # # based on Anna Kreshuk's normalDist.C # # # # # **Author:** Juan Fernando Jaramillo Botero # This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Wednesday, April 17, 2024 at 11:15 AM. # In[1]: from ROOT import TF1, TCanvas, TSystem, TAxis, TLegend from ROOT import kRed, kGreen, kBlue # Create the one dimensional functions for normal distribution. # In[2]: pdfunc = TF1("pdf","ROOT::Math::normal_pdf(x, [0],[1])", -5, 5) cdfunc = TF1("cdf","ROOT::Math::normal_cdf(x, [0],[1])", -5, 5) ccdfunc = TF1("cdf_c","ROOT::Math::normal_cdf_c(x, [0])", -5, 5) qfunc = TF1("quantile","ROOT::Math::normal_quantile(x, [0])", 0, 1) cqfunc = TF1("quantile_c","ROOT::Math::normal_quantile_c(x, [0])", 0, 1) # Set the parameters for the normal distribution with sigma to 1 and mean to # zero. And set the color to blue and title to none. # In[3]: pdfunc.SetParameters(1.0, 0.0) pdfunc.SetTitle("") pdfunc.SetLineColor(kBlue) # Set the configuration for the X and Y axis. # In[4]: Xaxis = pdfunc.GetXaxis() Yaxis = pdfunc.GetYaxis() Xaxis.SetLabelSize(0.06) Xaxis.SetTitle("x") Xaxis.SetTitleSize(0.07) Xaxis.SetTitleOffset(0.55) Yaxis.SetLabelSize(0.06) # Set sigma to 1 and mean to zero, for the cumulative normal distribution, and # set the color to red and title to none. # In[5]: cdfunc.SetParameters(1.0, 0.0) cdfunc.SetTitle("") cdfunc.SetLineColor(kRed) # Set the configuration for the X and Y axis for the cumulative normal # distribution. # In[6]: cdXaxis = cdfunc.GetXaxis() cdYaxis = cdfunc.GetYaxis() cdXaxis.SetLabelSize(0.06) cdXaxis.SetTitle("x") cdXaxis.SetTitleSize(0.07) cdXaxis.SetTitleOffset(0.55) cdYaxis.SetLabelSize(0.06) cdYaxis.SetTitle("p") cdYaxis.SetTitleSize(0.07) cdYaxis.SetTitleOffset(0.55) # Set sigma to 1 and mean to zero, for the survival function of normal # distribution, and set the color to green and title to none # In[7]: ccdfunc.SetParameters(1.0, 0.0) ccdfunc.SetTitle("") ccdfunc.SetLineColor(kGreen) # Set sigma to 1 and mean to zero, for the quantile of normal distribution # To get more precision for p close to 0 or 1, set Npx to 1000 # In[8]: qfunc.SetParameter(0, 1.0) qfunc.SetTitle("") qfunc.SetLineColor(kRed) qfunc.SetNpx(1000) # Set the configuration of X and Y axis # In[9]: qfXaxis = qfunc.GetXaxis() qfYaxis = qfunc.GetYaxis() qfXaxis.SetLabelSize(0.06) qfXaxis.SetTitle("p") qfYaxis.SetLabelSize(0.06) qfXaxis.SetTitleSize(0.07) qfXaxis.SetTitleOffset(0.55) qfYaxis.SetTitle("x") qfYaxis.SetTitleSize(0.07) qfYaxis.SetTitleOffset(0.55) # Set sigma to 1 and mean to zero of survival function of quantile of normal # distribution, and set color to green and title to none. # In[10]: cqfunc.SetParameter(0, 1.0) cqfunc.SetTitle("") cqfunc.SetLineColor(kGreen) cqfunc.SetNpx(1000) # Create canvas and divide in three parts # In[11]: c1 = TCanvas("c1", "Normal Distributions", 100, 10, 600, 800) c1.Divide(1, 3) c1.cd(1) # Draw the normal distribution # In[12]: pdfunc.Draw() legend1 = TLegend(0.583893, 0.601973, 0.885221, 0.854151) legend1.AddEntry(pdfunc, "normal_pdf", "l") legend1.Draw() # Draw the cumulative normal distribution # In[13]: c1.cd(2) cdfunc.Draw() ccdfunc.Draw("same") legend2 = TLegend(0.585605, 0.462794, 0.886933, 0.710837) legend2.AddEntry(cdfunc, "normal_cdf", "l") legend2.AddEntry(ccdfunc, "normal_cdf_c", "l") legend2.Draw() # Draw the normal quantile of normal distribution # In[14]: c1.cd(3) qfunc.Draw() cqfunc.Draw("same") legend3 = TLegend(0.315094, 0.633668, 0.695179, 0.881711) legend3.AddEntry(qfunc, "normal_quantile", "l") legend3.AddEntry(cqfunc, "normal_quantile_c", "l") legend3.Draw() # Draw all canvases # In[15]: from ROOT import gROOT gROOT.GetListOfCanvases().Draw()