Tableau中为休哈特控制图固定每个窗格数据点样本量求助
我完全懂你现在的困境——休哈特控制图的控制限准确性全靠一致的样本量撑着,没固定好这个确实没法往下走。你想的用随机数+筛选前N条的思路完全可行,我给你一步步拆解具体操作:
1. 给数据添加随机排序字段
首先得给每一行数据生成一个随机值,用来做后续的随机抽样依据。在Tableau里新建一个计算字段,命名为随机排序值,输入公式:
RAND()
这个函数会给每一行生成0到1之间的随机数,每次刷新数据都会重新生成,刚好满足随机抽选的需求。
2. 给每个窗格分配随机行号
接下来要让每个窗格(也就是你用来分组的维度,比如批次、时间周期)内的行,按照刚才的随机值排序并分配唯一行号。再新建一个计算字段组内随机行号,公式用:
RANK_UNIQUE([随机排序值])
用RANK_UNIQUE是为了避免出现随机值重复导致行号冲突的情况,确保每个窗格里的每一行都有唯一的排序位置。
3. 筛选固定样本量的行
现在就可以设置筛选器,只保留每个窗格里前10-30行的数据了:
- 把
组内随机行号拖到【筛选器】面板 - 选择“范围”选项,设置最小值为1,最大值为你想要的样本量(比如30)
- 确认筛选器应用到所有相关视图,这样每个窗格就只会保留随机抽选的N条数据
4. 计算休哈特控制图的核心统计量
基于筛选后的固定样本量数据,你就可以计算控制图需要的统计量了:
- 组内均值:新建计算字段,公式为
WINDOW_AVG([你的度量字段]) - 组内标准差:新建计算字段,公式为
WINDOW_STDEV([你的度量字段]) - 上控制限(UCL):
[组内均值] + 3 * [组内标准差] - 下控制限(LCL):
[组内均值] - 3 * [组内标准差]
额外提示
- 如果你希望抽样结果固定(不想每次刷新视图都重新抽选),可以在数据源层面预先生成随机数(比如用SQL的
RAND()函数把随机值保存到数据表中),而不是在Tableau里用动态的RAND()。 - 确保你的分组维度(比如批次、时间)已经放到视图的行/列或者【详细信息】栏里,这样窗口函数和行号计算才会基于正确的分组范围。
内容的提问来源于stack exchange,提问作者Andrew S
相关产品推荐
相关产品推荐

