site banner

Small-Scale Question Sunday for March 12, 2023

Do you have a dumb question that you're kind of embarrassed to ask in the main thread? Is there something you're just not sure about?

This is your opportunity to ask questions. No question too simple or too silly.

Culture war topics are accepted, and proposals for a better intro post are appreciated.

6
Jump in the discussion.

No email address required.

How often do new members go on to be productive posters? Do you know (including older people) roughly how many people regularly post or vote on things?

I admit I haven't attempted to quantify that. It's an interesting question, and I'd like an answer except I do not have time to do the work required to create an appropriate database query >_<

The following will get you, segmented by month,

  • Number of signups in that month

  • Number of those signups who have ever commented

  • Average number of comments by those signups (total and per day)

  • Average number of comment words written by those signups (total and per day)

  • Average number of upvotes on comments by those signups (total and per day)

  • Average number of downvotes on comments by those signups (total and per day)

  • Average score (up - down) on comments by those signups (total and per day)


with user_comment_stats as (

    select

        u.id as user_id,

        min(to_timestamp(u.created_utc)::date) as signup_date,

        count(c.id) as n_comments,

        sum(array_length(regexp_split_to_array(trim(c.body), E'\\W+'), 1)) as total_words_written,

        sum(c.upvotes) as total_upvotes,

        sum(c.downvotes) as total_downvotes,

        sum(c.upvotes - c.downvotes) as total_score,

        min(now()::date - to_timestamp(u.created_utc)::date) as days_since_signup

    from users u

        left join comments c on c.author_id = u.id

    group by user_id

)
select

    left(signup_date::text, 7) as signup_month,

    count(distinct user_id) as n_users,

    sum((n_comments > 0)::int) as n_commented,

    avg(n_comments) as avg_comments_per_user,

    avg(total_words_written) as avg_commentwords_per_user,

    avg(total_upvotes) as avg_upvotes_per_user,

    avg(total_downvotes) as avg_downvotes_per_user,

    avg(total_score) as avg_score_per_user,

    avg(n_comments / days_since_signup) as avg_daily_comments_per_user,

    avg(total_words_written / days_since_signup) as avg_daily_commentwords_per_user,

    avg(total_upvotes / days_since_signup) as avg_daily_upvotes_per_user,

    avg(total_downvotes / days_since_signup) as avg_daily_downvotes_per_user,

    avg(total_score / days_since_signup) as avg_daily_score_per_user

from user_comment_stats

group by signup_month

You can do a similar thing with votes and posts if you care about such things.

Though honestly there are fewer than 2500 users and 100000 comments on the motte -- fancy analytics approaches are unlikely to tell you anything you don't already know from regularly reading the motte.

Sheesh, you're better at that than I am :V

So the tl;dr is that unsurprisingly the vast bulk of posting users (about 1000) signed up on the first two months. I'm not sure how meaningful this is, of course, because the site was new and obviously most people would sign up then, and we probably had a good number of people who saw comments about it, signed up, made a comment, and never came back. It looks like we're picking up consistently somewhere around 50 users per month since then.

Ignoring the first-month users, "average daily comments per user" is extremely chaotic but hangs out in general around 0.01 - 0.08, and yes, that range covers almost an entire order of magnitude.

This does make me think I need to return to focusing on getting new users (which has unfortunately gotten harder, I was thinking about setting up a Twitter bot to post quality contributions and obviously that ain't happening).

I'd mentioned elsewhere that advertising on suitable communities or with suitable disclaimers on reddit might be a good idea, what with the current goings-on, so you could do that. Presumably after the blackout but before the end of the month would be best.