随机抽样了100万个uid,试图估算"新浪微博还有多少活人?"
微博uid
新浪微博的uid为10位数字,最小为1000000000
,最大为78xxxxxxxx
(本文只统计截止到7800000000
的账号,也就是2022年11月前注册的账号)。
没有任何现存的uid属于[4000000000-4999999999]
区间。也就是说,没有以数字4开头的uid。
早期新浪微博(从1000000000
到5100000000
)的uid生成机制不明,既不是按照注册顺序递增,也没有使用常见的分布式uid生成算法。
因此,uid小的账号不一定注册更早,相邻的uid也可能注册时间相差甚大。
例子1:
uid-1080000183: 2011-03-01 22:49:56
uid-1080000184: 2014-03-07 14:04:57
例子2:
uid-1080000201: 2011-12-18 09:20:33
uid-1080000202: 2013-08-14 19:11:52
例子3:
uid-1130001151: 2014-03-01 13:49:02
uid-1130001152: 2013-02-22 21:49:16
例子4:
uid-1130001401: 2014-03-01 13:49:21
uid-1130001402: 2013-09-10 21:13:45
uid-1130001403: 2014-03-02 07:47:22
用户个人说明API
本次抽样调查使用到以下API端点:
个人信息API
https://weibo.com/ajax/profile/info
- 正常返回值
- 当账号为正常状态时,该endpoint返回用户基本信息。
- 非正常返回值
- 有两类结果,一种返回用户不存在
{'ok': 0, 'msg': '该用户不存在(20003)', 'error_type': 'toast'}
- 另一种则返回错误,错误类型与错误信息根据账号情况各有不同。
{'ok': 0, 'url': 嵌入错误信息的链接, 'error_type': 'link'}
- 有两类结果,一种返回用户不存在
总结各种非正常账号状态如下:
- 封禁
- 错误类型:
link
- 链接信息变体1:
该账号因被投诉违反《微博社区公约》的相关规定,现已无法查看
- 链接信息变体2:
该账号因被投诉违反法律法规和《微博社区公约》的相关规定,现已无法查看
- 微博用户说"炸号",一般指封禁
- 错误类型:
- 异常
- 错误类型:
link
- 链接信息变体1:
该账号内容存在风险,用户验证之前暂时不能查看
- 链接信息变体2:
该账号行为异常,存在安全风险,用户验证之前暂时不能查看
- 链接信息变体3:
该账号当前处于异常状态,用户验证之前暂时不能查看
- 错误类型:
- toast
- 自行关闭
- 错误类型:
link
- 链接信息:
该账号因用户自行申请关闭,现已无法查看
- 错误类型:
个人详情API
https://weibo.com/ajax/profile/detail
- 正常返回值
- 当账号为个人信息API返回的正常状态时,返回用户细节,包含账号创建时间,IP属地等(如果用户在IP地址显示政策出台后没有发过言,则IP属地一栏为空)。
- 异常返回值
- 当账号为个人信息API返回的任何一种非正常状态时,返回
toast
。
- 当账号为个人信息API返回的任何一种非正常状态时,返回
禁言状态API
https://weibo.com/ajax/profile/getMuteuser
- 账号存在/存在过
- 禁言状态
- 永久禁言: 因违反社区公约,该用户处于永久禁言状态
- 暂时禁言: 因违反社区公约,该用户目前处于禁言状态
- 非禁言状态
data
字段的值为空列表
- 禁言状态
- 账号从未存在
data
字段不存在
随机抽样
按每一亿个uid号码分段,进行随机抽样,根据用户信息API返回结果,统计各种状态的账号的数量。
对状态正常的账号,检查个人详情API返回结果是否包含IP属地信息,如果包含,则视为近期活跃。(未列入表格)
完整流程如图:
是否包含data字段?} B -->|是| C{info返回值
是否包含data字段?} B ----->|否| D[uid从未分配] C -->|是| E{detail返回值的IP属地
是否为空字符串?} C -->|否| F{错误类型?} F --->|toast| G[账号曾存在,
因各种原因目前显示用户不存在] F -->|link| H{链接信息是什么?} H --> |"该账号因被投诉"| I[封号] H --> |"用户验证之前暂时不能查看"| J[异常] H --> |"用户自行申请关闭"| K[自行关闭] E --->|是| L[账号状态正常,
2022年4月以来没有发帖] E --->|否| M[账号状态正常,
2022年4月之后发过贴]
抽样结果
详细结果表格
- ks检验: 对抽样进行均匀分布ks检验的p值。
- 样本量: 该号码段抽中的账号数量。
- 正常计数: 样本中状态正常的账号数量。
- 正常: 状态为正常的账号的比例的99%置信区间。
- 异常: 状态为异常的账号的比例的99%置信区间。
- 封禁: 状态为封禁的账号的比例的99%置信区间。
- 自行关闭: 状态为自行关闭的账号的比例的99%置信区间。
- 号码未分配: 从未分配过的uid的比例的99%置信区间。
- 原因不明toast: 样本中曾经存在过但目前显示账号不存在的账号的数量。
- 发过贴: 状态数非0的账号的比例。
uid号码段 ks检验 样本量 正常计数 正常 异常 封禁 自行关闭 号码未分配 原因不明toast 发过贴 1000000000_1100000000 0.7057 14425 3250 22.53±0.90% 1.11±0.22% 0.31±0.12% 0.00±0.00‱ 76.04±0.92% 1 12.95% 1100000000_1200000000 0.6545 14729 2328 15.81±0.77% 1.15±0.23% 0.31±0.12% 0.00±0.00‱ 82.73±0.80% 0 16.45% 1200000000_1300000000 0.7706 14438 1344 9.31±0.62% 1.50±0.26% 0.57±0.16% 0.00±0.00‱ 88.61±0.68% 2 27.83% 1300000000_1400000000 0.1794 16799 941 5.60±0.46% 1.06±0.20% 0.55±0.15% 0.60±1.53‱ 92.77±0.51% 1 26.99% 1400000000_1500000000 0.8231 14399 397 2.76±0.35% 0.74±0.18% 0.31±0.12% 0.00±0.00‱ 96.19±0.41% 0 68.26% 1500000000_1600000000 0.1572 14764 578 3.91±0.41% 1.40±0.25% 0.59±0.16% 0.00±0.00‱ 94.08±0.50% 3 45.85% 1600000000_1700000000 0.3857 16622 1729 10.40±0.61% 2.44±0.31% 1.14±0.21% 0.00±0.00‱ 85.99±0.69% 3 50.32% 1700000000_1800000000 0.4309 14682 2936 20.00±0.85% 4.00±0.42% 2.49±0.33% 0.00±0.00‱ 73.47±0.94% 5 51.50% 1800000000_1900000000 0.8611 17704 4731 26.72±0.86% 6.96±0.49% 6.69±0.48% 0.00±0.00‱ 59.51±0.95% 19 50.54% 1900000000_2000000000 0.8760 18515 5207 28.12±0.85% 6.11±0.45% 10.24±0.57% 0.00±0.00‱ 55.43±0.94% 19 52.16% 2000000000_2100000000 0.5298 18535 3794 20.47±0.76% 6.46±0.47% 9.66±0.56% 0.00±0.00‱ 63.33±0.91% 14 46.39% 2100000000_2200000000 0.9489 18590 4118 22.15±0.78% 9.56±0.56% 13.86±0.65% 0.00±0.00‱ 54.34±0.94% 18 50.58% 2200000000_2300000000 0.8980 19187 3423 17.84±0.71% 8.25±0.51% 16.68±0.69% 0.00±0.00‱ 57.17±0.92% 12 54.72% 2300000000_2400000000 0.7925 19045 4026 21.14±0.76% 13.55±0.64% 14.17±0.65% 1.05±1.91‱ 51.08±0.93% 10 52.06% 2400000000_2500000000 0.1741 19519 4228 21.66±0.76% 16.11±0.68% 8.92±0.53% 0.00±0.00‱ 53.24±0.92% 14 52.79% 2500000000_2600000000 0.5004 19089 3458 18.12±0.72% 14.49±0.66% 6.57±0.46% 0.00±0.00‱ 60.75±0.91% 15 50.52% 2600000000_2700000000 0.4881 17343 4522 26.07±0.86% 11.85±0.63% 4.77±0.42% 0.00±0.00‱ 57.20±0.97% 17 55.40% 2700000000_2800000000 0.3060 16929 4030 23.81±0.84% 12.72±0.66% 4.80±0.42% 1.77±2.64‱ 58.54±0.98% 19 50.60% 2800000000_2900000000 0.2142 19400 3735 19.25±0.73% 16.20±0.68% 6.36±0.45% 0.00±0.00‱ 58.08±0.91% 22 53.20% 2900000000_3000000000 0.2650 17998 4045 22.47±0.80% 20.86±0.78% 3.07±0.33% 0.00±0.00‱ 53.53±0.96% 10 51.37% 3000000000_3100000000 0.2361 14499 2339 16.13±0.79% 24.88±0.92% 2.85±0.36% 0.00±0.00‱ 56.08±1.06% 8 56.18% 3100000000_3200000000 0.3506 15068 3073 20.39±0.85% 28.31±0.95% 2.52±0.33% 0.00±0.00‱ 48.66±1.05% 19 57.63% 3200000000_3300000000 0.8891 14559 3341 22.95±0.90% 26.31±0.94% 3.54±0.39% 0.00±0.00‱ 47.11±1.07% 13 55.43% 3300000000_3400000000 0.7065 15502 1716 11.07±0.65% 21.22±0.85% 2.01±0.29% 0.00±0.00‱ 65.65±0.98% 7 46.10% 3400000000_3500000000 0.8862 15472 1279 8.27±0.57% 24.23±0.89% 1.42±0.25% 0.00±0.00‱ 66.04±0.98% 7 47.07% 3500000000_3600000000 0.3419 17576 2278 12.96±0.65% 23.99±0.83% 1.72±0.25% 0.00±0.00‱ 61.29±0.95% 6 44.56% 3600000000_3700000000 0.4001 17968 2276 12.67±0.64% 18.98±0.75% 0.78±0.17% 0.00±0.00‱ 67.53±0.90% 8 42.88% 3700000000_3800000000 0.9928 14170 2133 15.05±0.77% 17.31±0.82% 1.15±0.23% 0.00±0.00‱ 66.46±1.02% 3 40.27% 3800000000_3900000000 0.5531 14410 3156 21.90±0.89% 25.37±0.93% 1.71±0.28% 0.00±0.00‱ 50.94±1.07% 11 45.31% 3900000000_4000000000 0.7974 15726 4703 29.91±0.94% 33.21±0.97% 3.17±0.36% 0.00±0.00‱ 33.64±0.97% 13 39.83% 5000000000_5100000000 0.6762 14717 4050 27.52±0.95% 38.38±1.03% 3.76±0.40% 0.00±0.00‱ 30.20±0.97% 20 42.00% 5100000000_5200000000 0.9196 18939 5682 30.00±0.86% 37.35±0.91% 9.64±0.55% 0.00±0.00‱ 22.87±0.79% 27 45.58% 5200000000_5300000000 0.8817 17905 5573 31.13±0.89% 21.85±0.80% 6.85±0.49% 0.00±0.00‱ 40.01±0.94% 30 47.35% 5300000000_5400000000 0.7259 17327 6182 35.68±0.94% 32.83±0.92% 5.71±0.45% 0.00±0.00‱ 25.54±0.85% 42 39.24% 5400000000_5500000000 0.7345 19422 4980 25.64±0.81% 38.09±0.90% 11.35±0.59% 0.51±1.33‱ 24.79±0.80% 24 41.61% 5500000000_5600000000 0.5183 19349 9440 48.79±0.93% 25.97±0.81% 18.96±0.73% 0.00±0.00‱ 5.97±0.44% 62 38.63% 5600000000_5700000000 0.1518 24000 10793 44.97±0.83% 13.12±0.56% 26.16±0.73% 0.42±1.07‱ 15.38±0.60% 86 50.05% 5700000000_5800000000 0.1661 20177 6281 31.13±0.84% 19.34±0.72% 23.48±0.77% 0.50±1.28‱ 25.81±0.79% 48 52.30% 5800000000_5900000000 0.6016 18506 7480 40.42±0.93% 12.42±0.62% 8.87±0.54% 0.54±1.39‱ 37.93±0.92% 66 52.26% 5900000000_6000000000 0.6615 18755 6524 34.79±0.90% 14.89±0.67% 13.06±0.63% 0.00±0.00‱ 37.00±0.91% 50 50.55% 6000000000_6100000000 0.4173 18354 9377 51.09±0.95% 23.56±0.81% 9.33±0.55% 1.09±1.98‱ 15.55±0.69% 84 50.31% 6100000000_6200000000 0.7955 18546 10933 58.95±0.93% 13.66±0.65% 8.97±0.54% 0.00±0.00‱ 18.01±0.73% 75 32.29% 6200000000_6300000000 0.7272 20368 12312 60.45±0.88% 15.49±0.65% 17.26±0.68% 0.00±0.00‱ 6.44±0.44% 75 25.52% 6300000000_6400000000 0.8990 18936 11290 59.62±0.92% 21.01±0.76% 9.04±0.54% 0.53±1.36‱ 9.79±0.56% 101 35.48% 6400000000_6500000000 0.2952 28881 17882 61.92±0.74% 21.35±0.62% 9.71±0.45% 0.35±0.89‱ 6.60±0.38% 122 35.77% 6500000000_6600000000 0.8896 15858 8068 50.88±1.02% 36.74±0.99% 3.56±0.38% 0.00±0.00‱ 8.34±0.57% 78 46.73% 6600000000_6700000000 0.9096 14066 5287 37.59±1.05% 31.61±1.01% 2.79±0.36% 0.71±1.83‱ 27.74±0.97% 37 46.49% 6700000000_6800000000 0.2000 17041 8175 47.97±0.99% 34.02±0.93% 4.91±0.43% 0.00±0.00‱ 12.94±0.66% 27 31.12% 6800000000_6900000000 0.4533 14295 6894 48.23±1.08% 31.24±1.00% 3.36±0.39% 0.70±1.80‱ 16.86±0.81% 44 37.79% 6900000000_7000000000 0.5817 14042 5234 37.27±1.05% 24.78±0.94% 3.11±0.38% 0.00±0.00‱ 34.62±1.03% 29 38.57% 7000000000_7100000000 0.8152 16878 7972 47.23±0.99% 46.53±0.99% 4.53±0.41% 1.18±2.16‱ 1.37±0.23% 54 28.95% 7100000000_7200000000 0.6633 17127 9003 52.57±0.98% 37.63±0.95% 3.93±0.38% 0.00±0.00‱ 5.68±0.46% 34 20.75% 7200000000_7300000000 0.3627 17137 12160 70.96±0.89% 18.80±0.77% 6.91±0.50% 0.00±0.00‱ 2.94±0.33% 68 18.17% 7300000000_7400000000 0.6622 16211 12204 75.28±0.87% 14.38±0.71% 6.85±0.51% 0.00±0.00‱ 2.63±0.32% 139 31.94% 7400000000_7500000000 0.2601 16032 12512 78.04±0.84% 13.40±0.69% 3.63±0.38% 0.00±0.00‱ 3.94±0.40% 157 28.61% 7500000000_7600000000 0.1711 17444 11884 68.13±0.91% 21.45±0.80% 5.28±0.44% 2.87±3.30‱ 3.87±0.38% 218 24.29% 7600000000_7700000000 0.1484 16877 8074 47.84±0.99% 31.88±0.92% 4.50±0.41% 2.37±3.05‱ 11.56±0.63% 709 17.33% 7700000000_7800000000 0.5162 16643 13013 78.19±0.82% 13.32±0.68% 3.98±0.39% 4.81±4.38‱ 2.22±0.29% 374 27.57%
总样本量 | 1001495 |
(估算)分配过的uid数量 | 3407919172 |
(估算)状态正常账号数量 | 1911705522 |
(估算)状态异常账号数量 | 1105453587 |
(估算)被封禁账号数量 | 372398833 |
(估算)发过贴账号数量 | 732428299 |
(估算)仍活跃账号数量 | 70060425 |
估算说明: \begin{align} \hat n_{allocated} & = \sum_{i} (1-p_{i}^{\textit{never_existed}}) \cdot 100000000 \\ \hat n_{normal} & = \sum_{i} p_{i}^{normal} \cdot 100000000 \\ \hat n_{abnormal} & = \sum_{i} p_{i}^{abnormal} \cdot 100000000 \\ \hat n_{banned} & = \sum_{i} p_{i}^{banned} \cdot 100000000 \\ \hat n_{spoken} & = \sum_{i} p_{i}^{normal} \cdot p_{i}(spoken|normal) \cdot 100000000 \\ \hat n_{active} & = \sum_{i} p_{i}^{normal} \cdot p_{i}(active|normal) \cdot 100000000 \\ \end{align}
观察
- 不同号码段的账号,状态比例有极大差别。
- 即使不考虑状态为
该用户不存在
的账号(因为无法区分是炸号销号后,还是号码从未分配),许多号码段,状态正常的账号没有状态为异常和封禁的账号加起来多。 - 估算的被封禁账号数量少于实际被封禁账号数量, 因为部分被封禁账号可能已经变成了
该用户不存在
状态。由于无法得知曾经存在过但目前状态为该用户不存在
的账号状态变化的原因,没有把这部分账号(数量较少比例较低)计入被封禁账号中。 - 申请自行关闭且返回自行关闭账号状态的账号极少。在许多号码段,目前的抽样数量不足以捕捉到这样的账号。
- 近期号码段虽然状态为正常的账号比例相对较高,但发帖数大于0的用户比例反而更低。
- 早期号码段绝大部分
该用户不存在
状态账号的uid都从未分配过。但是近期该用户不存在
状态的账号uid曾经分配过的比例大幅上升。 - 目前新浪微博对外宣称的月活数字为6亿左右,可见这个数字有极大水分。所谓的活跃用户大部分连帖子都不发。
结论
目前新浪微博上的活人账号(标准是显示IP属地后发过贴)数量大约有7000万。
活人用户数量应该更低,因为一个用户可以拥有多于1个账号。
(以上包括营销号,水军,奉旨发帖)