Logistic curve fitting in epidemiology: Difference between revisions

m
→‎{{header|Phix}}: tidy, iterations/=18
m (→‎{{header|Phix}}: tidy, iterations/=18)
Line 245:
n0 = 27 -- number of cases at day 0
sequence yactual = {
27, 27, 27, 44, 44, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60,
61, 61, 66, 83, 219, 239, 392, 534, 631, 897, 1350, 2023,
Line 262:
function f(atom r)
atom sq = 0
for i=1 to length(yactual) do
atom eri = exp(r*(i-1)),
sq + guess = power((n0*eri)/(1+n0*(eri-1)/K) - y[i],2)
diff = guess-actual[i]
sq += diff*diff
end for
return sq
Line 271 ⟶ 273:
function solve(integer f, atom guess=0.5, epsilon=0)
atom f0 = f(guess),
delta = iff(guess?guess:1),
factor = 2 -- double until f0 best, then
-- halve until delta<=epsilon
-- or we hit precision limit
while delta>epsilon do -- (predefined limit)
and guess!=guess-delta do -- (precision limit)
atom nf = f(guess-delta)
if nf<f0 then
7,806

edits