[{"data":1,"prerenderedAt":939},["ShallowReactive",2],{"content-query-vNdul1GAoG":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":8,"prompt":10,"tags":14,"files":16,"nav":6,"presets":17,"gallery":34,"body":36,"_type":932,"_id":933,"_source":934,"_file":935,"_stem":936,"_extension":937,"sitemap":938},"/tools/logistic-curve-fit","tools",false,"","Logistic Curve Fit","Fit logistic curves online from Excel or CSV data. Model S-shaped growth, saturation, and cumulative adoption patterns with AI.",{"prefix":11,"label":12,"placeholder":13},"Fit a logistic growth curve","Describe the logistic growth analysis you want to run","e.g. fit logistic curve to cumulative cases over time, extract carrying capacity K, growth rate r, and inflection point",[15],"statistics",true,[18,24,29],{"label":19,"prompt":20,"dataset_url":21,"dataset_title":22,"dataset_citation":23},"COVID cumulative cases","fit logistic growth curve to cumulative confirmed COVID-19 cases over time; extract carrying capacity K (plateau), growth rate r, and inflection point date; plot fitted curve with 95% confidence band; annotate K and inflection","https://ourworldindata.org/grapher/cumulative-confirmed-cases-of-covid-19.csv","Cumulative confirmed COVID-19 cases","Our World in Data",{"label":25,"prompt":26,"dataset_url":27,"dataset_title":28,"dataset_citation":23},"World population growth","fit logistic growth model to world population over time; estimate carrying capacity K; report growth rate r and projected year of inflection; compare to exponential fit; plot both with 95% CI","https://ourworldindata.org/grapher/world-population-1750-2015.csv","World population since 1750",{"label":30,"prompt":31,"dataset_url":32,"dataset_title":33,"dataset_citation":23},"Internet adoption S-curve","fit logistic adoption curve to share of population using the internet over time; extract saturation level K, growth rate r, and year of fastest adoption (inflection point); overlay fitted curve on data","https://ourworldindata.org/grapher/share-of-individuals-using-the-internet.csv","Share of population using the internet",[35],"/img/tools/logistic-curve-fit.png",{"type":37,"children":38,"toc":921},"root",[39,48,104,137,143,215,221,390,402,408,558,564,688,694,755,761,798,804,842,852,875,898],{"type":40,"tag":41,"props":42,"children":44},"element","h2",{"id":43},"what-is-logistic-growth",[45],{"type":46,"value":47},"text","What Is Logistic Growth?",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,60,62,67,69,74,76,81,83,88,90,95,97,102],{"type":46,"value":53},"The ",{"type":40,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":46,"value":59},"logistic growth model",{"type":46,"value":61}," describes processes that start with exponential acceleration, reach a ",{"type":40,"tag":55,"props":63,"children":64},{},[65],{"type":46,"value":66},"point of fastest growth",{"type":46,"value":68}," (the inflection point), then decelerate and asymptote toward a maximum called the ",{"type":40,"tag":55,"props":70,"children":71},{},[72],{"type":46,"value":73},"carrying capacity K",{"type":46,"value":75},". The model is ",{"type":40,"tag":55,"props":77,"children":78},{},[79],{"type":46,"value":80},"P(t) = K / (1 + exp(−r(t − t₀)))",{"type":46,"value":82},", where ",{"type":40,"tag":55,"props":84,"children":85},{},[86],{"type":46,"value":87},"K",{"type":46,"value":89}," is the upper asymptote (saturation level), ",{"type":40,"tag":55,"props":91,"children":92},{},[93],{"type":46,"value":94},"r",{"type":46,"value":96}," is the intrinsic growth rate (steeper S-curve for larger r), and ",{"type":40,"tag":55,"props":98,"children":99},{},[100],{"type":46,"value":101},"t₀",{"type":46,"value":103}," is the time of the inflection point (where the curve is growing fastest and has reached exactly K/2). The result is a symmetric S-shaped (sigmoidal) curve on a linear time axis.",{"type":40,"tag":49,"props":105,"children":106},{},[107,109,114,116,121,123,128,130,135],{"type":46,"value":108},"Logistic growth is observed across a remarkable range of phenomena: ",{"type":40,"tag":55,"props":110,"children":111},{},[112],{"type":46,"value":113},"population biology",{"type":46,"value":115}," (a species colonizing a new habitat grows exponentially until resource limits impose carrying capacity), ",{"type":40,"tag":55,"props":117,"children":118},{},[119],{"type":46,"value":120},"epidemiology",{"type":46,"value":122}," (cumulative confirmed cases during an epidemic wave follow a logistic curve, with K representing the eventual total case count), ",{"type":40,"tag":55,"props":124,"children":125},{},[126],{"type":46,"value":127},"technology adoption",{"type":46,"value":129}," (internet users, smartphone penetration, electric vehicle sales — all follow S-curves as early adopters lead to mainstream diffusion and eventual market saturation), and ",{"type":40,"tag":55,"props":131,"children":132},{},[133],{"type":46,"value":134},"bacterial growth",{"type":46,"value":136}," (OD₆₀₀ curves in liquid culture). Fitting the logistic model extracts the three parameters that fully characterize the S-curve for comparison between conditions, prediction of the plateau, and estimation of when 50% or 90% of the final count will be reached.",{"type":40,"tag":41,"props":138,"children":140},{"id":139},"how-it-works",[141],{"type":46,"value":142},"How It Works",{"type":40,"tag":144,"props":145,"children":146},"ol",{},[147,172,188],{"type":40,"tag":148,"props":149,"children":150},"li",{},[151,156,158,163,165,170],{"type":40,"tag":55,"props":152,"children":153},{},[154],{"type":46,"value":155},"Upload your data",{"type":46,"value":157}," — provide a CSV or Excel file with a ",{"type":40,"tag":55,"props":159,"children":160},{},[161],{"type":46,"value":162},"time",{"type":46,"value":164}," column (dates, days, months, years) and a ",{"type":40,"tag":55,"props":166,"children":167},{},[168],{"type":46,"value":169},"cumulative count or proportion",{"type":46,"value":171}," column. The values should be monotonically increasing (or nearly so) and show signs of leveling off. One row per time point.",{"type":40,"tag":148,"props":173,"children":174},{},[175,180,182],{"type":40,"tag":55,"props":176,"children":177},{},[178],{"type":46,"value":179},"Describe the analysis",{"type":46,"value":181}," — e.g. ",{"type":40,"tag":183,"props":184,"children":185},"em",{},[186],{"type":46,"value":187},"\"fit logistic growth curve to cumulative sales over 24 months; report K (saturation), r (growth rate), and t₀ (inflection month) with 95% CI; plot with confidence band\"",{"type":40,"tag":148,"props":189,"children":190},{},[191,196,198,205,207,213],{"type":40,"tag":55,"props":192,"children":193},{},[194],{"type":46,"value":195},"Get full results",{"type":46,"value":197}," — the AI writes Python code using ",{"type":40,"tag":199,"props":200,"children":202},"a",{"href":201},"https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html",[203],{"type":46,"value":204},"scipy.optimize.curve_fit",{"type":46,"value":206}," to fit P(t) = K/(1+exp(−r(t−t₀))) and ",{"type":40,"tag":199,"props":208,"children":210},{"href":209},"https://plotly.com/python/",[211],{"type":46,"value":212},"Plotly",{"type":46,"value":214}," to render the S-curve with annotated K asymptote, inflection point marker, and parameter table",{"type":40,"tag":41,"props":216,"children":218},{"id":217},"required-data-format",[219],{"type":46,"value":220},"Required Data Format",{"type":40,"tag":222,"props":223,"children":224},"table",{},[225,249],{"type":40,"tag":226,"props":227,"children":228},"thead",{},[229],{"type":40,"tag":230,"props":231,"children":232},"tr",{},[233,239,244],{"type":40,"tag":234,"props":235,"children":236},"th",{},[237],{"type":46,"value":238},"Column",{"type":40,"tag":234,"props":240,"children":241},{},[242],{"type":46,"value":243},"Description",{"type":40,"tag":234,"props":245,"children":246},{},[247],{"type":46,"value":248},"Example",{"type":40,"tag":250,"props":251,"children":252},"tbody",{},[253,303,357],{"type":40,"tag":230,"props":254,"children":255},{},[256,266,271],{"type":40,"tag":257,"props":258,"children":259},"td",{},[260],{"type":40,"tag":261,"props":262,"children":264},"code",{"className":263},[],[265],{"type":46,"value":162},{"type":40,"tag":257,"props":267,"children":268},{},[269],{"type":46,"value":270},"Time variable (numeric or date)",{"type":40,"tag":257,"props":272,"children":273},{},[274,280,282,288,289,295,297],{"type":40,"tag":261,"props":275,"children":277},{"className":276},[],[278],{"type":46,"value":279},"1",{"type":46,"value":281},", ",{"type":40,"tag":261,"props":283,"children":285},{"className":284},[],[286],{"type":46,"value":287},"2",{"type":46,"value":281},{"type":40,"tag":261,"props":290,"children":292},{"className":291},[],[293],{"type":46,"value":294},"3",{"type":46,"value":296}," … (months) or ",{"type":40,"tag":261,"props":298,"children":300},{"className":299},[],[301],{"type":46,"value":302},"2020-03-01",{"type":40,"tag":230,"props":304,"children":305},{},[306,315,320],{"type":40,"tag":257,"props":307,"children":308},{},[309],{"type":40,"tag":261,"props":310,"children":312},{"className":311},[],[313],{"type":46,"value":314},"value",{"type":40,"tag":257,"props":316,"children":317},{},[318],{"type":46,"value":319},"Cumulative count, proportion, or stock",{"type":40,"tag":257,"props":321,"children":322},{},[323,329,330,336,337,343,344,350,351],{"type":40,"tag":261,"props":324,"children":326},{"className":325},[],[327],{"type":46,"value":328},"12",{"type":46,"value":281},{"type":40,"tag":261,"props":331,"children":333},{"className":332},[],[334],{"type":46,"value":335},"45",{"type":46,"value":281},{"type":40,"tag":261,"props":338,"children":340},{"className":339},[],[341],{"type":46,"value":342},"180",{"type":46,"value":281},{"type":40,"tag":261,"props":345,"children":347},{"className":346},[],[348],{"type":46,"value":349},"620",{"type":46,"value":281},{"type":40,"tag":261,"props":352,"children":354},{"className":353},[],[355],{"type":46,"value":356},"910",{"type":40,"tag":230,"props":358,"children":359},{},[360,369,374],{"type":40,"tag":257,"props":361,"children":362},{},[363],{"type":40,"tag":261,"props":364,"children":366},{"className":365},[],[367],{"type":46,"value":368},"group",{"type":40,"tag":257,"props":370,"children":371},{},[372],{"type":46,"value":373},"Optional: country, product, or condition",{"type":40,"tag":257,"props":375,"children":376},{},[377,383,384],{"type":40,"tag":261,"props":378,"children":380},{"className":379},[],[381],{"type":46,"value":382},"USA",{"type":46,"value":281},{"type":40,"tag":261,"props":385,"children":387},{"className":386},[],[388],{"type":46,"value":389},"Germany",{"type":40,"tag":49,"props":391,"children":392},{},[393,395,400],{"type":46,"value":394},"Any column names work. Values must be ",{"type":40,"tag":55,"props":396,"children":397},{},[398],{"type":46,"value":399},"cumulative",{"type":46,"value":401}," (monotonically non-decreasing) — do not use new-cases-per-day; convert to cumulative first.",{"type":40,"tag":41,"props":403,"children":405},{"id":404},"interpreting-the-results",[406],{"type":46,"value":407},"Interpreting the Results",{"type":40,"tag":222,"props":409,"children":410},{},[411,427],{"type":40,"tag":226,"props":412,"children":413},{},[414],{"type":40,"tag":230,"props":415,"children":416},{},[417,422],{"type":40,"tag":234,"props":418,"children":419},{},[420],{"type":46,"value":421},"Parameter",{"type":40,"tag":234,"props":423,"children":424},{},[425],{"type":46,"value":426},"What it means",{"type":40,"tag":250,"props":428,"children":429},{},[430,446,462,478,494,510,526,542],{"type":40,"tag":230,"props":431,"children":432},{},[433,441],{"type":40,"tag":257,"props":434,"children":435},{},[436],{"type":40,"tag":55,"props":437,"children":438},{},[439],{"type":46,"value":440},"K (carrying capacity)",{"type":40,"tag":257,"props":442,"children":443},{},[444],{"type":46,"value":445},"Upper plateau — predicted total at saturation; the most important output for forecasting",{"type":40,"tag":230,"props":447,"children":448},{},[449,457],{"type":40,"tag":257,"props":450,"children":451},{},[452],{"type":40,"tag":55,"props":453,"children":454},{},[455],{"type":46,"value":456},"r (growth rate)",{"type":40,"tag":257,"props":458,"children":459},{},[460],{"type":46,"value":461},"Steepness of the S-curve — higher r = faster transition from low to high",{"type":40,"tag":230,"props":463,"children":464},{},[465,473],{"type":40,"tag":257,"props":466,"children":467},{},[468],{"type":40,"tag":55,"props":469,"children":470},{},[471],{"type":46,"value":472},"t₀ (inflection point)",{"type":40,"tag":257,"props":474,"children":475},{},[476],{"type":46,"value":477},"Time of fastest growth — when P = K/2 and the curve switches from accelerating to decelerating",{"type":40,"tag":230,"props":479,"children":480},{},[481,489],{"type":40,"tag":257,"props":482,"children":483},{},[484],{"type":40,"tag":55,"props":485,"children":486},{},[487],{"type":46,"value":488},"Doubling time near t₀",{"type":40,"tag":257,"props":490,"children":491},{},[492],{"type":46,"value":493},"≈ ln(2)/r — time for the count to double when growth is fastest",{"type":40,"tag":230,"props":495,"children":496},{},[497,505],{"type":40,"tag":257,"props":498,"children":499},{},[500],{"type":40,"tag":55,"props":501,"children":502},{},[503],{"type":46,"value":504},"Time to 90% K",{"type":40,"tag":257,"props":506,"children":507},{},[508],{"type":46,"value":509},"t₀ + ln(9)/r — when 90% of the final plateau is reached",{"type":40,"tag":230,"props":511,"children":512},{},[513,521],{"type":40,"tag":257,"props":514,"children":515},{},[516],{"type":40,"tag":55,"props":517,"children":518},{},[519],{"type":46,"value":520},"95% CI on K",{"type":40,"tag":257,"props":522,"children":523},{},[524],{"type":46,"value":525},"Uncertainty in the plateau — wide CI if the data hasn't clearly leveled off yet",{"type":40,"tag":230,"props":527,"children":528},{},[529,537],{"type":40,"tag":257,"props":530,"children":531},{},[532],{"type":40,"tag":55,"props":533,"children":534},{},[535],{"type":46,"value":536},"Residuals",{"type":40,"tag":257,"props":538,"children":539},{},[540],{"type":46,"value":541},"Should be random scatter; systematic arch = asymmetric growth (try Gompertz model)",{"type":40,"tag":230,"props":543,"children":544},{},[545,553],{"type":40,"tag":257,"props":546,"children":547},{},[548],{"type":40,"tag":55,"props":549,"children":550},{},[551],{"type":46,"value":552},"R²",{"type":40,"tag":257,"props":554,"children":555},{},[556],{"type":46,"value":557},"Goodness of fit — values > 0.99 are typical for clean S-curves",{"type":40,"tag":41,"props":559,"children":561},{"id":560},"example-prompts",[562],{"type":46,"value":563},"Example Prompts",{"type":40,"tag":222,"props":565,"children":566},{},[567,583],{"type":40,"tag":226,"props":568,"children":569},{},[570],{"type":40,"tag":230,"props":571,"children":572},{},[573,578],{"type":40,"tag":234,"props":574,"children":575},{},[576],{"type":46,"value":577},"Scenario",{"type":40,"tag":234,"props":579,"children":580},{},[581],{"type":46,"value":582},"What to type",{"type":40,"tag":250,"props":584,"children":585},{},[586,603,620,637,654,671],{"type":40,"tag":230,"props":587,"children":588},{},[589,594],{"type":40,"tag":257,"props":590,"children":591},{},[592],{"type":46,"value":593},"Epidemic wave",{"type":40,"tag":257,"props":595,"children":596},{},[597],{"type":40,"tag":261,"props":598,"children":600},{"className":599},[],[601],{"type":46,"value":602},"fit logistic to cumulative cases column 'total_cases'; report K and inflection date; annotate 50% and 90% saturation on plot",{"type":40,"tag":230,"props":604,"children":605},{},[606,611],{"type":40,"tag":257,"props":607,"children":608},{},[609],{"type":46,"value":610},"Market saturation",{"type":40,"tag":257,"props":612,"children":613},{},[614],{"type":40,"tag":261,"props":615,"children":617},{"className":616},[],[618],{"type":46,"value":619},"logistic curve to monthly cumulative sales; extract K (market size), r, and month of peak growth; predict when 95% saturation is reached",{"type":40,"tag":230,"props":621,"children":622},{},[623,628],{"type":40,"tag":257,"props":624,"children":625},{},[626],{"type":46,"value":627},"Multiple countries",{"type":40,"tag":257,"props":629,"children":630},{},[631],{"type":40,"tag":261,"props":632,"children":634},{"className":633},[],[635],{"type":46,"value":636},"fit logistic growth for each country in 'country' column; overlay S-curves; table of K, r, t₀ sorted by growth rate",{"type":40,"tag":230,"props":638,"children":639},{},[640,645],{"type":40,"tag":257,"props":641,"children":642},{},[643],{"type":46,"value":644},"Bacterial growth",{"type":40,"tag":257,"props":646,"children":647},{},[648],{"type":40,"tag":261,"props":649,"children":651},{"className":650},[],[652],{"type":46,"value":653},"fit logistic to OD600 readings over time; report lag phase end, maximum growth rate, and carrying capacity",{"type":40,"tag":230,"props":655,"children":656},{},[657,662],{"type":40,"tag":257,"props":658,"children":659},{},[660],{"type":46,"value":661},"Compare waves",{"type":40,"tag":257,"props":663,"children":664},{},[665],{"type":40,"tag":261,"props":666,"children":668},{"className":667},[],[669],{"type":46,"value":670},"fit separate logistic curves to wave 1 (months 1–8) and wave 2 (months 12–20); compare K and r between waves",{"type":40,"tag":230,"props":672,"children":673},{},[674,679],{"type":40,"tag":257,"props":675,"children":676},{},[677],{"type":46,"value":678},"Forecast",{"type":40,"tag":257,"props":680,"children":681},{},[682],{"type":40,"tag":261,"props":683,"children":685},{"className":684},[],[686],{"type":46,"value":687},"fit logistic to first 60% of the time series; project forward to saturation; show forecast with prediction interval",{"type":40,"tag":41,"props":689,"children":691},{"id":690},"assumptions-to-check",[692],{"type":46,"value":693},"Assumptions to Check",{"type":40,"tag":695,"props":696,"children":697},"ul",{},[698,708,718,735,745],{"type":40,"tag":148,"props":699,"children":700},{},[701,706],{"type":40,"tag":55,"props":702,"children":703},{},[704],{"type":46,"value":705},"Cumulative data required",{"type":46,"value":707}," — the logistic model applies to cumulative totals, not rates or increments; if your data is daily new values, cumsum them first",{"type":40,"tag":148,"props":709,"children":710},{},[711,716],{"type":40,"tag":55,"props":712,"children":713},{},[714],{"type":46,"value":715},"Visible inflection",{"type":46,"value":717}," — parameter estimation is most reliable when the data shows both the accelerating phase and at least the beginning of deceleration; if data is still purely exponential, K is extrapolated with wide uncertainty",{"type":40,"tag":148,"props":719,"children":720},{},[721,726,728,733],{"type":40,"tag":55,"props":722,"children":723},{},[724],{"type":46,"value":725},"Symmetric S-curve",{"type":46,"value":727}," — the standard logistic model is symmetric around t₀; if the data shows a faster rise than fall (or vice versa), the ",{"type":40,"tag":55,"props":729,"children":730},{},[731],{"type":46,"value":732},"Gompertz model",{"type":46,"value":734}," (asymmetric S-curve) may fit better",{"type":40,"tag":148,"props":736,"children":737},{},[738,743],{"type":40,"tag":55,"props":739,"children":740},{},[741],{"type":46,"value":742},"Single wave",{"type":46,"value":744}," — the model fits one S-curve; multi-wave epidemics or seasonal adoption cycles require fitting separate logistic curves per wave",{"type":40,"tag":148,"props":746,"children":747},{},[748,753],{"type":40,"tag":55,"props":749,"children":750},{},[751],{"type":46,"value":752},"No sudden drops",{"type":46,"value":754}," — logistic growth is monotonically increasing; data corrections (negative adjustments to cumulative cases) violate the model and should be smoothed",{"type":40,"tag":41,"props":756,"children":758},{"id":757},"related-tools",[759],{"type":46,"value":760},"Related Tools",{"type":40,"tag":49,"props":762,"children":763},{},[764,766,772,774,780,782,788,790,796],{"type":46,"value":765},"Use the ",{"type":40,"tag":199,"props":767,"children":769},{"href":768},"/tools/dose-response-curve",[770],{"type":46,"value":771},"Dose-Response Curve Generator",{"type":46,"value":773}," when your S-curve represents a pharmacological response to concentration (not a time series) — it uses the 4-parameter logistic with a free baseline. Use the ",{"type":40,"tag":199,"props":775,"children":777},{"href":776},"/tools/hill-equation-fit",[778],{"type":46,"value":779},"Hill Equation Fit",{"type":46,"value":781}," for sigmoidal concentration-response data with a Hill coefficient. Use the ",{"type":40,"tag":199,"props":783,"children":785},{"href":784},"/tools/survival-curve",[786],{"type":46,"value":787},"Survival Curve Generator",{"type":46,"value":789}," when your data is time-to-event (not cumulative counts growing toward saturation). Use the ",{"type":40,"tag":199,"props":791,"children":793},{"href":792},"/tools/polynomial-regression",[794],{"type":46,"value":795},"Polynomial Regression",{"type":46,"value":797}," tool when your data is curved but doesn't follow a saturation model.",{"type":40,"tag":41,"props":799,"children":801},{"id":800},"frequently-asked-questions",[802],{"type":46,"value":803},"Frequently Asked Questions",{"type":40,"tag":49,"props":805,"children":806},{},[807,812,814,819,821,826,828,833,835,840],{"type":40,"tag":55,"props":808,"children":809},{},[810],{"type":46,"value":811},"What is the difference between logistic growth and logistic regression?",{"type":46,"value":813},"\nThey share a mathematical form but model completely different things. ",{"type":40,"tag":55,"props":815,"children":816},{},[817],{"type":46,"value":818},"Logistic growth",{"type":46,"value":820}," (this tool) models how a ",{"type":40,"tag":55,"props":822,"children":823},{},[824],{"type":46,"value":825},"cumulative quantity grows over time",{"type":46,"value":827}," toward a carrying capacity — a time series model. ",{"type":40,"tag":55,"props":829,"children":830},{},[831],{"type":46,"value":832},"Logistic regression",{"type":46,"value":834}," (binary classification) models the ",{"type":40,"tag":55,"props":836,"children":837},{},[838],{"type":46,"value":839},"probability that a categorical outcome occurs",{"type":46,"value":841}," as a function of predictor variables — a classification model. The S-shaped curve is just a mathematical coincidence; the two methods are used in entirely different contexts.",{"type":40,"tag":49,"props":843,"children":844},{},[845,850],{"type":40,"tag":55,"props":846,"children":847},{},[848],{"type":46,"value":849},"My data hasn't leveled off yet — can I still estimate K?",{"type":46,"value":851},"\nYou can, but with wide uncertainty. If the curve is still in the exponential phase, K is essentially extrapolated from the growth rate alone, and small changes in r produce large changes in the estimated plateau. The 95% CI on K will be very wide. Best practice: report K as a lower bound (at least K_estimated) and refit as more data arrives. If K CI spans an order of magnitude, say the plateau is not yet estimable from current data.",{"type":40,"tag":49,"props":853,"children":854},{},[855,860,862,866,868,873],{"type":40,"tag":55,"props":856,"children":857},{},[858],{"type":46,"value":859},"What is the Gompertz model and when should I use it instead?",{"type":46,"value":861},"\nThe ",{"type":40,"tag":55,"props":863,"children":864},{},[865],{"type":46,"value":732},{"type":46,"value":867}," is P(t) = K × exp(−exp(−r(t − t₀))) — an asymmetric S-curve that rises faster than it levels off. Many biological growth processes (tumor growth, organ development, adoption of disruptive technologies) follow Gompertz rather than symmetric logistic kinetics. If your logistic fit shows systematic residuals where the early rise is underfit and the late plateau is overfit, try the Gompertz model. Ask the AI to ",{"type":40,"tag":183,"props":869,"children":870},{},[871],{"type":46,"value":872},"\"fit both logistic and Gompertz models and compare AIC\"",{"type":46,"value":874},".",{"type":40,"tag":49,"props":876,"children":877},{},[878,883,885,890,892,897],{"type":40,"tag":55,"props":879,"children":880},{},[881],{"type":46,"value":882},"How do I compute when 90% of the final value will be reached?",{"type":46,"value":884},"\nThe time to reach a fraction f of K is ",{"type":40,"tag":55,"props":886,"children":887},{},[888],{"type":46,"value":889},"t(f) = t₀ + ln(f/(1−f))/r",{"type":46,"value":891},". For f = 0.90, t(0.90) = t₀ + ln(9)/r = t₀ + 2.197/r. For f = 0.99, t(0.99) = t₀ + ln(99)/r = t₀ + 4.595/r. Ask the AI to ",{"type":40,"tag":183,"props":893,"children":894},{},[895],{"type":46,"value":896},"\"compute the time to reach 90% and 99% of K from the fitted parameters\"",{"type":46,"value":874},{"type":40,"tag":49,"props":899,"children":900},{},[901,906,908,913,915,920],{"type":40,"tag":55,"props":902,"children":903},{},[904],{"type":46,"value":905},"My growth has multiple waves — how do I handle that?",{"type":46,"value":907},"\nFit each wave separately by subsetting the time range. Alternatively, use a ",{"type":40,"tag":55,"props":909,"children":910},{},[911],{"type":46,"value":912},"sum of logistics",{"type":46,"value":914}," model: P(t) = K₁/(1+exp(−r₁(t−t₁))) + K₂/(1+exp(−r₂(t−t₂))) + … — each term represents one wave. Ask the AI to ",{"type":40,"tag":183,"props":916,"children":917},{},[918],{"type":46,"value":919},"\"fit a double logistic (sum of two S-curves) to the data with two epidemic waves\"",{"type":46,"value":874},{"title":7,"searchDepth":922,"depth":922,"links":923},2,[924,925,926,927,928,929,930,931],{"id":43,"depth":922,"text":47},{"id":139,"depth":922,"text":142},{"id":217,"depth":922,"text":220},{"id":404,"depth":922,"text":407},{"id":560,"depth":922,"text":563},{"id":690,"depth":922,"text":693},{"id":757,"depth":922,"text":760},{"id":800,"depth":922,"text":803},"markdown","content:tools:047.logistic-curve-fit.md","content","tools/047.logistic-curve-fit.md","tools/047.logistic-curve-fit","md",{"loc":4},1775502471797]