-
-
Save WesleyAC/9da367c54aa3a49039adc1dd66bf3b92 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
activity_curve = [ | |
# This first part of the activity curve comes from the average values | |
# from 2005-2021 This is the average of the non 2000-2004 values in [1]. | |
# See the MetaTalk thread [2] for more details. | |
# | |
# [1]: https://hack.wesleyac.com/mefi_percent_users_active_by_join_year_normalized.png | |
# [2]: https://metatalk.metafilter.com/26137/MetaFilter-Usage-Statistics#1406552 | |
1.0000, 0.7942, 0.7185, 0.6773, 0.6419, 0.6161, 0.5868, 0.5625, 0.5440, 0.5194, 0.5039, 0.4876, 0.4758, 0.4671, 0.4539, 0.4404, 0.4210, 0.3977, | |
# The scound part is a linear extrapolation, losing 1.735% of users per | |
# year, which is the average of the last four differences in the | |
# previous line. A linear extrapolation isn't great, but it does not | |
# make a large difference to the fundamental point behind this | |
# analysis. | |
0.3803, 0.3630, 0.3456, 0.3283, 0.3109, 0.2936, 0.2762, 0.2589, 0.2415, 0.2242, 0.2068, 0.1895, 0.1721, 0.1548, 0.1374, 0.1201, 0.1027, 0.0854, 0.0680, 0.0507, 0.0333, 0.0160 | |
] | |
def steady_state_users(joins, first_year_rate, activity_curve): | |
t = 0 | |
for remaining_percent in activity_curve: | |
remaining_percent = remaining_percent - (1 - first_year_rate) | |
if remaining_percent > 0: | |
t += joins * remaining_percent | |
return t | |
# This is a simulation with the numbers from 2021 | |
print(steady_state_users(587, 0.55, activity_curve)) # == 1349.513 | |
# And with some hypothetical improvements in first-year activity rate or new user signups | |
print(steady_state_users(587, 0.65, activity_curve)) # == 2378.1718 | |
print(steady_state_users(1340, 0.51, activity_curve)) # == 2377.964 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment