Commit fa1cacf5 authored by AlejandroSaezGonzalvo's avatar AlejandroSaezGonzalvo

Update in bayesian_av to return vector with data

parent ca677164
...@@ -307,11 +307,11 @@ function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64 ...@@ -307,11 +307,11 @@ function plat_av(obs::Vector{uwreal}, plat::Vector{Int64}, wpm::Union{Dict{Int64
end end
@doc raw""" @doc raw"""
bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool, data::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64, pl::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64, pl::Bool, data::Bool; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
Computes bayesian average of data. For a given fit function, it explores choices of fit intervals, assigning each a weight. Then it does the weighted average and assigns a systematic. See https://arxiv.org/abs/2008.01069 Computes bayesian average of data. For a given fit function, it explores choices of fit intervals, assigning each of them a weight. The function saves the `first` fit parameter of your function, and then it does the weighted average of it and assigns a systematic. See https://arxiv.org/abs/2008.01069
The function takes as input the fit intervals to explore. The function takes as input the fit intervals to explore.
...@@ -323,14 +323,14 @@ The function takes as input the fit intervals to explore. ...@@ -323,14 +323,14 @@ The function takes as input the fit intervals to explore.
You can also use as input two fit functions, and two values of `k`, one for each function. Then, for each fit interval choice, the function explores the two fit functions. This means that for each fit interval choice you get two results: one for the first fit funcction, and another for the second. You can also use as input two fit functions, and two values of `k`, one for each function. Then, for each fit interval choice, the function explores the two fit functions. This means that for each fit interval choice you get two results: one for the first fit funcction, and another for the second.
The method returns two objects: first, the weighted average as an uwreal object, with mean value and statistichal error. The second object returned is the systematic error coming from the fit interval variation. The method returns two objects: first, the weighted average as an uwreal object, with mean value and statistichal error. The second object returned is the systematic error coming from the fit interval variation. If `data` is `true`, then returns 4 objects: weighted average, systematic error, a vector with the results of the fit for each fit interval choice, and a vector with the weights associated to each fit.
```@example ```@example
@.fun(x,p) = p[1] * x ^0 @.fun(x,p) = p[1] * x ^0
k = 1 k = 1
tmin_array = [10,11,12,13,14,15] tmin_array = [10,11,12,13,14,15]
tmax_array = [80,81,82,83,84,85] tmax_array = [80,81,82,83,84,85]
(average, systematics) = bayesian_av(fun,x,tmin_array,tmax_array,k,pl=true) (average, systematics, data, weights) = bayesian_av(fun,x,tmin_array,tmax_array,k,pl=true,data=true)
@.fun1(x,p) = p[1] * x ^0 @.fun1(x,p) = p[1] * x ^0
@.fun2(x,p) = p[1] + p[2] * exp( - p[3] * (x)) @.fun2(x,p) = p[1] + p[2] * exp( - p[3] * (x))
...@@ -341,7 +341,7 @@ tmax_array = [80,81,82,83,84,85] ...@@ -341,7 +341,7 @@ tmax_array = [80,81,82,83,84,85]
(average, systematics) = bayesian_av(fun1,fun2,x,tmin_array,tmax_array,k1,k2) (average, systematics) = bayesian_av(fun1,fun2,x,tmin_array,tmax_array,k1,k2)
``` ```
""" """
function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k::Int64, pl::Bool=false, data::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
weight_model = Array{Float64,1}() weight_model = Array{Float64,1}()
AIC = Array{Float64,1}() AIC = Array{Float64,1}()
...@@ -403,11 +403,15 @@ function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64}, ...@@ -403,11 +403,15 @@ function bayesian_av(fun::Function, y::Array{uwreal}, tmin_array::Array{Int64},
display(gcf()) display(gcf())
end end
return (p1_mean, systematic_err) if !data
return (p1_mean, systematic_err)
else
return (p1_mean, systematic_err, p1, weight_model)
end
end end
function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64, pl::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing) function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_array::Array{Int64}, tmax_array::Array{Int64}, k1::Int64, k2::Int64, pl::Bool=false, data::Bool=false; wpm::Union{Dict{Int64,Vector{Float64}},Dict{String,Vector{Float64}}, Nothing}=nothing)
weight_model = Array{Float64,1}() weight_model = Array{Float64,1}()
AIC = Array{Float64,1}() AIC = Array{Float64,1}()
...@@ -480,8 +484,12 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra ...@@ -480,8 +484,12 @@ function bayesian_av(fun1::Function, fun2::Function, y::Array{uwreal}, tmin_arra
display(gcf()) display(gcf())
end end
return (p1_mean, systematic_err) if !data
return (p1_mean, systematic_err)
else
return (p1_mean, systematic_err, p1, weight_model)
end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment