前天介绍了这种简明因果判断方法的思路,借助olap的思想,区分因果维度,从度量在果维度上的分布比例差异来判断因果关系。
呃,虽然举了一些例子,但没图还是不容易理解,因此,这里再深入一下。稍稍形式化地表达,以期让这个方法看上去完整一些。再辅以图表,以期让他更易理解。
还得设想一个场景来说事,不过这次抛开太多的具体描述,都用符号来表示。于是问题是这样的:
在一个多维的视图中:(D1, D2,D3...Dn, M),其中D1是果维度,包含了若干维度值(V11..V1i),D2到Dn都是因维度,M是对观测数据的汇总值。
请问,在D2到Dn各维度的维度值中,哪些是对D1的取值是有影响的?
为了说明方便,假设D1的取值有三种情况,跟前面的例子一样,上升,平稳和下降。首先,我们可以得到所有观测在这三种情况的分布,可以这么表示:
(D1, %(M))
因此,这个分布可能是这样的:
D1, %(M)
上升,26.7%
平稳,43.5%
下降,29.9%
接着就是要看每个维度取值在D1三种情况的分布,并与总体分布进行对比,发现差异。如何表现这个差异呢?一开始,我尝试用这样一种方法,用"相对变化率"来表示,如图1(yinguo_1.jpg)所示:
No results found.
No results found.
针对D1的每个值,计算其他维度值的分布比例跟总体分布比例的差异,比如v21在上升情况的差异,就是(87.1%-26.7%)/26.7% = 2.3,这算一个很大的差异了。设定阈值,如果差异大于0.5,就是一个显著差异,红色标记。如果小于-0.5,也是一个显著差异,绿色标记。但我们首先观察的还不是每个具体差异值,而是要针对某个维度值的差异值进行绝对值相加,比如V21,最后的总体差异度就是3.9。
对总体差异度进行排序,就可以得出那些指标对D1的取值有显著影响,从上图看V21、Vni、是排在前头两个的。基本上是可以得出这种结论——"v21对上升有重要影响"。
而对于接下来的总体差异度均为2.2的,可以考虑一些细节,比如vn1的影响主要是导致下降情况,因为那里有个红色的1.0,而其他两个基本都有些对上升的促进作用。而对于0.8,1.2那两个,基本就可以忽略不计了,可以认为他们对上升或是下降没有影响。
如何定义显著差异的阈值呢?我现在还没有发现绝对的数值标准,也许正负0.5是可以的,但这个最好还是看排名情况,取差异值相对较大的应该更容易帮助解读。
另外还有个问题,在这个例子里面,总体分布里面,几种情况的分布比较适中,最少也是26.7%,但如果遇到一些极端的分布比例怎么办呢?比如一个80%,用这种相对变化率来表示,即便变化到从80%变化到20%,计算出来的差异值也很小。
想想,还不如直接简单一些,就用比例差值来表示差异,如图2(yinguo_2.jpg):
No results found.
某个因素的总体差异值,就是不同差异值的绝对值之和。这个值越大,就说明这个因素对结果影响最大。而判断具体差异值的大小和正负符号,还可以判断该因素究竟对哪一种结果有多大影响,而且影响是正向还是反向的。
这种方法也就是纯粹计算而已,没什么复杂的逻辑。如果普通的olap工具都具备这种分析功能就好了。