year = Float64[0]
for i in 1:6
push!(year, i)
end
year = year .+ 20137-element Array{Float64,1}:
2013.0
2014.0
2015.0
2016.0
2017.0
2018.0
2019.0year_x = collect(Float64, 2013:1:2020);
h = [2, 2, 2, 3, 4, 6, 8, 12];using Plots
scatter(year_x, h,
xlab = "year", ylab = "h-index",
xlim = [2012, 2023], ylim = [0,15], framestyle = :box)
scatter!(year_x[3:end], h[3:end])using LsqFit
@. model(x, p) = p[1] + x*p[2] + x^2.0*p[3]
fit = curve_fit(model, year_x, h, [2.0, 0.5, -3.0])LsqFit.LsqFitResult{Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Int64,1}}([1.1832864618761656e6, -1174.946148708822, 0.2916665972735931], [0.20833284547552466, -0.19642864260822535, -0.017856936203315854, -0.2559520348440856, 0.08928606053814292, 0.017857350641861558, 0.5297618352342397, -0.3750004852190614], [1.0000000000082452 2012.9999999932165 4.05216899997484e6; 1.0000000000082452 2014.0000000073403 4.05619599998367e6; … ; 1.0000000000082452 2018.9999999797847 4.076360999975335e6; 1.0000000000082452 2019.9999999939084 4.08039999999393e6], true, Int64[])T = typeof(fit)
for (name, typ) in zip(fieldnames(T), T.types)
println("type of the fieldname
typ")
endtype of the fieldname param is Array{Float64,1}
type of the fieldname resid is Array{Float64,1}
type of the fieldname jacobian is Array{Float64,2}
type of the fieldname converged is Bool
type of the fieldname wt is Array{Int64,1}
?fitsearch: fit LsqFit filter filter! curve_fit first firstindex isfinite popfirst!
No documentation found.
fit is of type LsqFit.LsqFitResult{Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Int64,1}}.
Summary
struct LsqFit.LsqFitResult{Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Int64,1}} <: AnyFields
param :: Array{Float64,1}
resid :: Array{Float64,1}
jacobian :: Array{Float64,2}
converged :: Bool
wt :: Array{Int64,1}fitted_p = fit.param3-element Array{Float64,1}:
1.1832864618761656e6
-1174.946148708822
0.2916665972735931new_x = collect(Float64, 2013:1:2025)
new_y = fitted_p[1] .+ new_x.*fitted_p[2] .+ (new_x.^2).*fitted_p[3]
plot!(new_x, new_y, ylim = [0,30], seriestype =:line)fit.resid8-element Array{Float64,1}:
0.20833284547552466
-0.19642864260822535
-0.017856936203315854
-0.2559520348440856
0.08928606053814292
0.017857350641861558
0.5297618352342397
-0.3750004852190614fit.jacobian8×3 Array{Float64,2}:
1.0 2013.0 4.05217e6
1.0 2014.0 4.0562e6
1.0 2015.0 4.06022e6
1.0 2016.0 4.06426e6
1.0 2017.0 4.06829e6
1.0 2018.0 4.07232e6
1.0 2019.0 4.07636e6
1.0 2020.0 4.0804e6fit.wt0-element Array{Int64,1}fit.convergedtrue