The thread http://cxc.harvard.edu/sherpa/threads/flux_dist/index.py.html
describes how to use the functions to calculate the flux errors.
For the parameter errors it is easy to check the distribution of parameters returned by the sample_energy_flux()
Example:
sample100=sample_energy_flux(0.5,2.,num=1000)
print sample100
[...
[ 2.90602963e-10 1.10100135e+00 8.39761377e-01 7.01873798e-01
2.35626905e+00 1.03667988e+00]...
2.35626905e+00 1.03667988e+00]...
]
The first column contains the flux value for all the parameters in the other columns.
We can easily calculate 95% bounds for a given parameter:
sherpa-100> print sample100[:,1]
----------> print(sample100[:,1])
[ 1.10121073 1.1011715 1.10100135 1.10191317 1.10233657 1.10103386
1.10360142 1.09774949 1.0984214 1.09927707 1.10041681 1.09919926
sherpa-102> min(sample100[:,1])
1.0972469907219351
sherpa-103> max(sample100[:,1])
1.1065345259787218
We can use numpy to obtain the properties of the parameter distribution:
sherpa-104> numpy.median(sample100[:,1])
1.1015496488552339
sherpa-105> numpy.mean(sample100[:,1])
1.1015685708445886
sherpa-106> numpy.std(sample100[:,1])
0.0015635753706038143
We can also sort and make a histogram and plot the distribution:
sort_par=numpy.sort(sample100[:,1])
sort_par[0.99*len(sample100[:,1])-1]
# make a histogram of parameter value and plot:
xspace=numpy.linspace(min(sample100[:,1]),max(sample100[:,1]),30)
xlo=xspace[:-1]
xhi=xspace[1:]
parhist=histogram1d(sample100[:,1],xlo,xhi)
parhist100=parhist/1000.
add_histogram(xlo,parhist100)
sort_par[0.99*len(sample100[:,1])-1]
# make a histogram of parameter value and plot:
xspace=numpy.linspace(min(sample100[:,1]),max(sample100[:,1]),30)
xlo=xspace[:-1]
xhi=xspace[1:]
parhist=histogram1d(sample100[:,1],xlo,xhi)
parhist100=parhist/1000.
add_histogram(xlo,parhist100)
print_window("hist.png")
The histogram can be saved, but I could not place the figure into the Blogger - a known issue with the Google Blogger editor.
No comments:
Post a Comment