案例 · 政府数据分析
CBS Intelligence从零搭建的监管数据分析
我在南澳的消费者与商业监管机构为预防组搭建了第一套数据分析能力,把 ABS、SA Health、ACCC 和 Data SA 的数据整合成仪表板、报告和地图,供高级管理层和部长办公室使用。
ASO4 情报与协调官,2025 年 1 月至 2026 年 3 月
试试概念演示 ↓这是我个人的项目回顾,内容只限于我公开履历里已经写过的部分,不涉及任何内部数据、报告或简报材料。下方的演示是一个使用合成数据的概念示意,既不是我参与的系统,也不是 CBS 的数据。
要解决的问题
消费者与商业服务局(CBS)是南澳的消费者与商业监管机构,管辖范围包括烟草与电子烟、建筑施工、产品安全和消费者法。2025 年 1 月,我加入合规与执法处的预防组,这是我的第一份全职工作。当时团队还没有属于自己的数据分析能力。
监管机构不可能同时检查所有地方,只能有所取舍。烟草与电子烟检查排期里有 1,500 多个持牌场所,需要在立法、资源、战略和政治几方面的优先级之间权衡。当高级管理层或部长办公室问起时,这些理由还得站得住,而且常常要在 24 到 72 小时内给出。
我做了什么
这份工作慢慢形成了四个部分,每一部分都让下一部分更值得信赖。
1
基于风险的检查排期
我为《烟草与电子烟产品法》合规设计了检查排期框架,覆盖 1,500 多个持牌场所,并与高级管理团队一起权衡其中的取舍。
2
对得上的数据
我在 6 个以上的数据源之间搭建了数据提取和校验流程,包括 ABS、SA Health、ACCC 和 Data SA。其中一项 Python 校验把 3,000 多份原始文件与 Salesforce 记录逐一核对。
3
看得懂的分析
我用时间序列、聚类和多元统计方法分析了 400 多次检查,撰写季度合规与执法报告,并为高级管理层制作 Power BI 仪表板和 GIS 地图。
4
按时给出的答案
我在 24 至 72 小时内完成了 24 项以上部长简报和内阁的紧急数据请求,并编写了标准作业程序(SOP),让每种方法都能重复使用。
带来的改变
2026 年 3 月我离开时,这些方法都已经写成了 SOP,团队可以继续用同样的方法得出同样的数字。下面的数字来自我的履历。
- 个持牌场所纳入烟草与电子烟检查排期
- 1,500+
- 次合规检查完成分析
- 400+
- 份原始文件用 Python 与 Salesforce 记录核对
- 3,000+
- 项部长与内阁请求在 24 至 72 小时内完成
- 24+
- 与 SAPOL、非法烟草与电子烟专员及联邦监管机构建立数据共享谅解备忘录(MOU),在团队内尚属首次。
- 高级管理层和部长办公室用于汇报的仪表板和 GIS 地图。
- 与同事共同开发的一项情报产品,通过文件元数据和申请人关系网络识别伪造的执照申请。
怎么做的
- 职位
- ASO4 情报与协调官
- 团队
- 合规与执法处 预防组
- 时间
- 2025 年 1 月至 2026 年 3 月
- 使用者
- 高级管理层和部长办公室
- Power BI
- DAX
- Power Query
- Python
- SQL Server
- ArcGIS
- Time series
- Regression
- Clustering
- ABS API
- Data SA
前期的工作大多是在铺管道。图表要可信,同一个场所在每个数据源里就得指同一个对象,所以我先写好数据提取和校验步骤,再把数量和记录系统逐一核对。
分析本身用的是朴素、讲得清楚的方法:用时间序列看趋势,用聚类把相似的场所归到一起,需要量化某种关系时再用回归。仪表板用 Power BI 和 DAX,地图用 ArcGIS。
我把这些方法写成了 SOP,下一次紧急请求不管由谁接手,都能用同样的方法回答。
概念演示:缩小版的监管地图
这是使用合成数据的概念示意。下面 24 个区域的人口、IRSD 分数和各项数量都由你的浏览器按固定种子生成,不是真实的地方政府区域,不是 CBS 的数据,也不是我在 CBS 参与的系统。
如果用公开数据来做,这个想法会把各地方政府区域的 ABS SEIFA 分数和成年人口,与公开发布的持牌博彩场所数和博彩机数合在一起。SEIFA 中的 IRSD 是一个指数,分数越低代表越弱势。演示用虚构的区域走一遍同样的步骤:先看原始数量,再换成每万名成年人的比率,最后看每个区域离趋势线有多远。
合成数据 · 种子 2025
小区域的比率波动很大,多一家或少一家场所都会让数字明显变化。
每个方格代表一个区域,不论人口多少都画成一样大,布局只是示意,并非真实地图。可用方向键在区域之间移动。
0 … 24
红色边框和 ▲:比趋势线高出 1.5 个标准差以上
所选区域
E1东区 1
- 成年人口
- 24,100
- IRSD 分数
- 913
- 场所
- 12
- 博彩机
- 236
- 每万名成年人的场所数
- 5.0
- 趋势线预测
- 3.0
- 偏离趋势
- +2.2 个标准差
高于其 IRSD 分数的预测值。值得进一步查看,但不构成结论。
比率与弱势程度
每万名成年人的场所数
IRSD 分数(越低越弱势)
- 纳入拟合的区域
- 24
- IRSD 每降 100 分
- +1.1
- R²
- 0.33
- 高于趋势
- 2
在这组样本里,IRSD 每下降 100 分,每万名成年人的场所数平均多 1.1(95% 区间 0.4 至 1.8)。这条线解释了区域之间 33% 的差异。
趋势线只说明相关,不代表因果。弱势程度、场所数量和人口往往一起变化,真正的分析在任何人据此行动之前,都会先检验其他解释。
同一份数据,三个问题
数量最多
比率最高
高于趋势最多
数量主要跟着人口走。比率和偏离趋势可能指向别的区域,所以问什么问题决定了得到什么答案。点选任一区域,即可在地图上选中它。
查看合成数据表
| 区域 | 成年人口 | IRSD | 数量 | 每万人 | 趋势预测 | 偏差(标准差) |
|---|---|---|---|---|---|---|
| R1 · 乡郊 1 | 12,000 | 1016 | 1 | 0.8 | 1.8 | −1.1 |
| N1 · 北区 1 | 52,800 | 994 | 14 | 2.7 | 2.1 | +0.6 |
| N2 · 北区 2 | 19,900 | 1032 | 3 | 1.5 | 1.6 | −0.1 |
| R2 · 乡郊 2 | 15,600 | 989 | 3 | 1.9 | 2.1 | −0.2 |
| W1 · 西区 1 | 29,800 | 1021 | 8 | 2.7 | 1.8 | +1.0 |
| N3 · 北区 3 | 102,600 | 1040 | 16 | 1.6 | 1.6 | +0.0 |
| N4 · 北区 4 | 90,000 | 1052 | 21 | 2.3 | 1.4 | +1.0 |
| N5 · 北区 5 | 64,900 | 900 | 13 | 2.0 | 3.1 | −1.2 |
| W2 · 西区 2 | 86,900 | 1065 | 14 | 1.6 | 1.3 | +0.4 |
| C1 · 中区 1 | 66,600 | 897 | 24 | 3.6 | 3.2 | +0.5 |
| C2 · 中区 2 | 93,200 | 999 | 17 | 1.8 | 2.0 | −0.2 |
| E1 · 东区 1 | 24,100 | 913 | 12 | 5.0 | 3.0 | +2.2 |
| W3 · 西区 3 | 76,000 | 969 | 15 | 2.0 | 2.3 | −0.4 |
| C3 · 中区 3 | 55,700 | 910 | 18 | 3.2 | 3.0 | +0.2 |
| C4 · 中区 4 | 112,000 | 1041 | 12 | 1.1 | 1.5 | −0.5 |
| E2 · 东区 2 | 72,400 | 920 | 21 | 2.9 | 2.9 | +0.0 |
| E3 · 东区 3 | 45,400 | 923 | 6 | 1.3 | 2.9 | −1.7 |
| S1 · 南区 1 | 50,700 | 975 | 11 | 2.2 | 2.3 | −0.1 |
| S2 · 南区 2 | 116,800 | 1059 | 19 | 1.6 | 1.3 | +0.3 |
| E4 · 东区 4 | 66,100 | 1038 | 6 | 0.9 | 1.6 | −0.7 |
| R3 · 乡郊 3 | 15,900 | 942 | 3 | 1.9 | 2.7 | −0.8 |
| S3 · 南区 3 | 41,900 | 990 | 17 | 4.1 | 2.1 | +2.1 |
| S4 · 南区 4 | 30,700 | 1025 | 6 | 2.0 | 1.7 | +0.3 |
| R4 · 乡郊 4 | 3,700 | 1058 | 0 | 0.0 | 1.3 | −1.5 |
如果博彩正在影响你或你身边的人,可拨打免费且保密的全国博彩求助热线 1800 858 858。
我的收获
分析本身很少是最慢的环节。真正花时间的是就一个数字的含义达成一致、核对两个系统是否在数同一样东西,再把方法写下来。每当有请求要求 24 小时内答复时,这些功夫都会得到回报。
我还学会了把分母摆出来。原始数量通常跟着人口走,所以一张数量地图主要显示的是人住在哪里。换成比率,再看与预期的差距,才开始说明风险在哪里。上面的演示就是这个道理的缩小版。