Python 计算期望值并显示列联表,预期的缺陷产出是一个组合概率。下面将计算轮换缺陷与缺陷类型概率的乘积,为此需要计算轮换和缺陷类型组合的所有12种概率。可以对观测到的数字进行加权,并计算缺陷的详细预期。
计算期望值的代码如下所示:
我们会创建一个与defectsCounter
对象相似的字典。该字典会有一个带有键值的二元组序列,其中键是轮换和缺陷类型的二元组。字典是通过一个生成器表达式构建而来的,它显式枚举了P_shift
和P_type
字典中所有键的组合。
字典expected
的值如下所示:
映射的每一项都以轮换和缺陷类型作为键,且它与一个Fraction
值相关联,这个值基于轮换次数的缺陷概率,以及缺陷类型乘以总缺陷次数的缺陷概率。一些分数约分了,例如值6624/309可以简化为2208/103。
大的数不适合用分数表示,将其呈现为float
值通常更容易。小数值(如概率)有时用分数表示则更易于理解。
然后将成对输出观测到的次数和预期的次数,这有助于可视化数据。我们将创建如下内容来汇总观测到的值和预期的值:
这里显示了12个单元格。每个单元格的值都包含观测到的缺陷数量和预期的缺陷数量。每一行的最后是轮换总数,每一列的最下面是缺陷总数。
在某些情况下,可以将这种数据导出为CSV格式并构建一个电子表格。在其他一些情况下,可以构建一个HTML版本的列联表,并将布局细节留给浏览器去处理。这里显示的是纯文本版本。
以下代码包含的一系列语句用于创建如前所示的列联表:
这样会将缺陷类型展开成一行。前面已经编写了足够多的obsexp
列标题来涵盖所有缺陷类型。对于每个轮换,会生成一行观测值和实际值的配对,并在后面加上总的轮换数。底部将生成一行包含缺陷类型总数和总计数量的脚注。
这样的列联表有助于可视化对观测值和期望值的比较。可以计算这两组值的卡方值,以便于我们确定数据是随机的或是值得进一步研究。