Logistic curve fitting in epidemiology: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Raku}}: Add a Raku example) |
(→{{header|Wren}}: Now uses Wren-math module.) |
||
Line 477: | Line 477: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
{{trans|Phix}} |
{{trans|Phix}} |
||
{{libheader|Wren-math}} |
|||
⚫ | |||
<lang ecmascript>import "/math" for Math |
|||
⚫ | |||
var n0 = 27 // number of cases at day 0 |
var n0 = 27 // number of cases at day 0 |
||
Line 494: | Line 497: | ||
1174652 |
1174652 |
||
] |
] |
||
var exp = Fn.new { |x| |
|||
var e = 2.718281828459045 |
|||
return e.pow(x) |
|||
} |
|||
var f = Fn.new { |r| |
var f = Fn.new { |r| |
||
var sq = 0 |
var sq = 0 |
||
for (i in 0...y.count) { |
for (i in 0...y.count) { |
||
var eri = |
var eri = Math.exp(r*i) |
||
var dst = (n0*eri)/(1+n0*(eri-1)/K) - y[i] |
var dst = (n0*eri)/(1+n0*(eri-1)/K) - y[i] |
||
sq = sq + dst * dst |
sq = sq + dst * dst |
||
Line 534: | Line 532: | ||
var r = (solve.call(f, 0.5, 0) * 1e10).round / 1e10 |
var r = (solve.call(f, 0.5, 0) * 1e10).round / 1e10 |
||
var R0 = ( |
var R0 = (Math.exp(12 * r) * 1e8).round / 1e8 |
||
System.print("r = %(r), R0 = %(R0)")</lang> |
System.print("r = %(r), R0 = %(R0)")</lang> |
||