Начало работы
Сначала импортируйте пакет.
julia> using LsqFit
Определите модель экспоненциального спада с двумя параметрами, где — одноэлементная независимая переменная, а и — параметры.
Функция модели имеет следующий вид:
julia> # t: массив независимой переменной
julia> # p: массив параметров модели
julia> model(t, p) = p[1] * exp.(-p[2] * t)
Для иллюстрации мы сгенерируем фиктивные данные.
julia> # tdata: данные независимой переменной
julia> # ydata: данные зависимой переменной
julia> tdata = range(0, stop=10, length=20)
julia> ydata = model(tdata, [1.0 2.0]) + 0.01*randn(length(tdata))
Перед подгонкой данных требуются также начальные значения параметров для curve_fit()
.
julia> p0 = [0.5, 0.5]
Выполните curve_fit()
, чтобы подогнать данные и получить оценочные параметры.
julia> fit = curve_fit(model, tdata, ydata, p0)
julia> param = fit.param
2-element Array{Float64,1}:
1.01105
2.0735
В LsqFit.jl
также есть функции для анализа качества соответствия p0 = [0.5, 0.5]. vcov(fit)
вычисляет оценочную ковариационную матрицу.
julia> cov = vcov(fit)
2×2 Array{Float64,2}:
0.000116545 0.000174633
0.000174633 0.00258261
stderror(fit)
возвращает среднеквадратичную погрешность каждого параметра.
julia> se = stderror(fit)
2-element Array{Float64,1}:
0.0107956
0.0508193
Чтобы получить доверительный интервал на уровне значимости 10 %, выполните вызов confint(fit; level=0.9)
, который, по сути, вычисляет the estimate parameter value
± (standard error
* critical value from t-distribution
).
julia> confidence_interval = confint(fit; level=0.9)
2-element Array{Tuple{Float64,Float64},1}:
(0.992333, 1.02977)
(1.98537, 2.16162)
Дополнительные сведения о пакете LsqFit.jl
см. в руководстве и справке по API.