Logistic curve fitting in epidemiology: Difference between revisions

Content added Content deleted
(→‎{{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>var K = 7800000000 // approx world population
<lang ecmascript>import "/math" for Math

var K = 7800000000 // approx world population
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 = exp.call(r*i)
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 = (exp.call(12 * r) * 1e8).round / 1e8
var R0 = (Math.exp(12 * r) * 1e8).round / 1e8
System.print("r = %(r), R0 = %(R0)")</lang>
System.print("r = %(r), R0 = %(R0)")</lang>