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, August 17, 2022 at 09:34 AM.

In [1]:
from ROOT import TF1, TCanvas, TSystem, TAxis, TLegend
from ROOT import kRed, kGreen, kBlue
Welcome to JupyROOT 6.27/01

Create the one dimentional 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)
Out[11]:
<cppyy.gbl.TPad object at 0x8005650>

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()