TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How to Model Viral Growth: Retention and Virality Curves

46 pointsby rahulvohraabout 12 years ago

5 comments

idohabout 12 years ago
Definitely an interesting article and one worth reading. I work a lot on viral growth and I'd like to add a counterpoint that the growth of apps is so complicated that it is basically impossible to model in a useful way.<p>I've found that even if I make no changes to an app, the retention and virals fluctuate quite a bit for no apparent reason, and the fluctuations are big enough that it makes long term forecasting really more of guesswork than anything else.<p>Also, there are second order effects that are hard to model as well. For instance, improving virals can improve retention (user A invites friend B, user A stays for longer because their friend uses it).<p>I've gone through the process of modeling a couple apps, and it quickly gets to a point where the relationships become circular and small variations cause exponential differences down the line.<p>It is important to make informed decisions about virals and retention, but I don't think such a model is the way to do it. I think it is more important to think about optionality and decision making in opaque environments rather than trying to model the unmodelable.
adolgertabout 12 years ago
This multiplicative kind of model is happily amenable to time series analysis, so you can do stats to see what your numbers are and how well they fit. That's great. What's less great is the model quality, given that well-tested virality models can be found in other venues. Coffman looks at this, for instance, at <a href="http://datacommunitydc.org/blog/2013/01/better-science-of-viral-marketing/" rel="nofollow">http://datacommunitydc.org/blog/2013/01/better-science-of-vi...</a>. The difference in these two types of models is that symmetries in the statement of the problem permit, or exclude, classes of solutions. Those symmetries come from assumptions about the contact graph, the most basic (and testable) assumption.
richardjordanabout 12 years ago
This is great stuff. I see so many startups get so excited about features and growth yet fail in their analysis of retention. Maybe I'm a bit on the data-nerd side but I love to see folks sharing their own methods for tracking and calculating this stuff. Even with so many startups basing their model on recurring revenue, it's still easy to trip up on modeling this stuff going forward.
评论 #5481957 未加载
graycatabout 12 years ago
Here's a different approach:<p>We denote time by t with units, say, days.<p>The number of customers at time t is the (real valued function of a real variable) y(t).<p>We assume that at the present t = 0 and that we have y(0), that is, the current number of customers.<p>We let the number of customers who will ever try our business be b. That is, b is our intended 'market potential'.<p>Initially we assume that once we get a person as a customer, we do not ever lose them but keep them forever.<p>As usual, we let y'(t) = dy(t)/dt be the calculus first derivative of y(t). Then y'(t) is number of new customers per day, that is, the 'rate' at which we gain customers.<p>For 'virality' we notice that that is proportional to (1) the number of customers y(t) we have 'talking' about our business and (2) the number of people<p><pre><code> b - y(t) </code></pre> yet to be our our customers hearing the talking.<p>Then we have that for some constant of proportionality k<p><pre><code> y'(t) = k y(t) (b - y(t)) </code></pre> So we have an initial value problem (that is, we know y(0)) for a first order (we use only the first derivative) ordinary (no partial derivatives) differential equation.<p>Then from calculus,<p><pre><code> y(t) = y(0) b exp(bkt) / ( y(0)( exp(bkt) - 1) + b)) </code></pre> So this solution grows (1) initially slowly, (2) then more rapidly, (3) then more slowly and approaches b asymptotically from below.<p>In case we lose some customers forever at some rate r, then we get the same solution except k and b get adjusted.<p>Once there was a startup (now a major company) that was struggling and had as an investor a major company with a Board seat and at the startup two representatives, one in finance and the other in aeronautical engineering.<p>The two representatives had asked for some revenue growth projections.<p>People around the HQ considered what the startup hoped, intended, thought might happen, etc., but found nothing credible.<p>One guy who remembered calculus reluctantly got involved, formulated and solved the differential equation above, and showed the solution to a Senior VP of Planning (SVP) who reported to the founder, CEO, COB. The SVP was responsible for the projections. The SVP took the guy's calculus solution as the basis of the projections and on a Friday sat with the guy with a pocket calculator and some graph paper and graphed solutions to the differential equation for selected values of the constant k and picked one of the solutions as the official projection.<p>The next day, Saturday, at about noon, the guy was in his office working on some other math problems and got a call from a person asking if he knew about the projections for the Board and if he could come over to the HQ? Sure. When the guy arrived, the situation was grim: The two representatives of the major Board Member were standing in the hall with their bags packed with airline tickets back to Texas. The startup was about to die.<p>The SVP was traveling and out of town.<p>The person who had called got the graph of projections from the previous day and asked the guy to reproduce a point on the graph. Using the calculator, the solution above, and a few keystrokes, the point on the graph was reproduced. After several more points were reproduced, the area became happier; the two representatives on the Board stayed, and the startup was saved.<p>Later the person who had called explained that that Saturday was a Board meeting, the growth projection graph was shown, and the two representatives had asked how the projections were calculated. The rest of the company tried to reproduce the graph but could not. The Board meeting stopped. The two representatives lost patience with the startup, got airline tickets back to Texas, returned to their rented rooms, packed their bags, and as a last chance returned to the startup to see if there was an answer to how the projections were calculated.<p>Ah, one saved startup! One reason to take calculus seriously!
评论 #5490331 未加载
jacques_chesterabout 12 years ago
As others have pointed out, this can modelled with calc pretty handily.<p>I found agent-based modelling much more interesting. For example, mean-field models struggle with non-uniform spaces.<p>For the interest of persons here attending, I've uploaded my crappy code on this topic. It's 3 years old and not production suitable.<p><a href="https://github.com/jchester/ruby-epidemic-model" rel="nofollow">https://github.com/jchester/ruby-epidemic-model</a>