什么是标准差?
标准差(Standard Deviation)是衡量一组数值分散程度的统计量,表示数据与平均数之间的偏差。标准差是方差的平方根,它能够反映数据集内部的变异性或离散程度。
- 计算方法:标准差的计算涉及到每一个数据点与平均值的差值,这些差值被平方后加总,然后除以数据点的个数(对于样本标准差是除以个数减一)得到方差,最后取方差的平方根即为标准差。
- 意义解释:一个较小的标准差意味着数据点接近平均值,而较大的标准差则意味着数据点分散得比较开。
- 应用范畴:标准差在多个领域都有广泛应用,如在投资领域用于评估风险,在制造业中用于质量控制等。
此外,标准差还与正态分布的概率有关,例如在一个正态分布的数据集中,大约68%的数据值落在距离平均数一个标准差的范围内,约95%的数据落在两个标准差内,而约99%的数据落在三个标准差内。
综上所述,了解标准差有助于我们更好地理解数据的波动性和可靠性。
Qlik Sense 计算标准差的最佳实践
在Qlik Sense中,可以使用以下步骤来计算标准差:
-
加载数据:确保您的数据已经加载到Qlik Sense中,并且已经进行了适当的数据处理和关联。
-
创建度量:在Qlik Sense中,您可以创建一个度量来定义标准差的计算方式。通常,标准差的计算公式为:
其中,��Xi 是各个数据点,�μ 是数据的平均值,N) 是数据点的总数。在样本标准差的计算中,除以的是 \(N-1(样本大小减去1),而在总体标准差的计算中,除以的是 �N。
-
使用聚合函数:在Qlik Sense的图表中,您可以使用聚合函数来应用这个度量。例如,如果您想计算某个字段的标准差,可以在图表的表达式中使用
StdDev()
函数。 -
应用表达式:在需要计算标准差的字段上应用上述创建的度量或直接使用
StdDev()
函数。例如,如果您有一个名为Sales
的字段,您可能想要计算其标准差,可以这样写:StdDev({<Field>}, Sales)
,其中<Field>
是您要基于其计算标准差的条件字段。 -
查看结果:完成上述步骤后,您就可以在图表中看到计算出的标准差值了。
Stdev函数实战
Stdev() 用于返回迭代于 group by 子句定义的大量记录的表达式中的标准偏差值。(标准差)
语法:
Stdev([distinct] expr)
返回数据类型: 数字
参数:
参数 | 说明 |
---|---|
expr | 表达式或字段包含要度量的数据。 |
distinct | 如果在表达式前面出现单词 distinct,则将忽略所有重复值。 |
Sample 1 Stdev脚本函数
Table1:
Crosstable (Type, Value)
Load recno() as ID, * inline [
Observation|Comparison
35|2
40|27
12|38
15|31
21|1
14|19
46|1
10|34
28|3
48|1
16|2
30|3
32|2
48|1
31|2
22|1
12|3
39|29
19|37
25|2 ] (delimiter is '|');
Stdev1:
LOAD Type,
Stdev(Value) as MyStdev
Resident Table1 Group By Type;
Stdev() 计算的结果是:
- Type 是 MyStdev
- Comparison 是 14.61245
- Observation 是 12.507997
Sample 2 Measure调用脚本函数
Material | Jan | Feb | Mrch | Avg | Std |
a | 0 | 1 | 1 | 0,66666667 | 0,471404521 |
b | 1 | 5 | 11 | 5,66666667 | 4,109609335 |
b | 0 | 1 | 0 | 0,33333333 | 0,471404521 |
Try with RangeAvg function
T:
LOAD
*,
Sqrt(RangeSum(Pow((Jan - Average),2), Pow((Feb - Average),2), Pow((Mrch - Average),2)) / 3)
;
LOAD Material,
Jan,
Feb,
Mrch,
Avg,
Std,
RangeAvg(Jan, Feb, Mrch) as Average
FROM [lib://WebQlikCommunity]
(html, utf8, embedded labels, table is @1);
With a pivot
And user Measures
if(SecondaryDimensionality()=0, null(), sum(Value))
if(SecondaryDimensionality()=0, avg(TOTAL <Material> Value))
if(SecondaryDimensionality()=0, StDev(TOTAL <Material> Value))
Sample 3 两倍/N倍标准差
TestData:
LOAD
floor(NormInv(Rand(),0,1)*100) as F1
AutoGenerate 1000
;
Threshold:
LOAD
Avg(F1) + (StDev(F1)* 2) as Threshold
Resident TestData
;
Let vThreshold = Peek('Threshold');
Counts:
LOAD
Count(F1) as Counted
Resident TestData
Where F1 > $(vThreshold)
;