4-Plot
4-plot 是 4 种不同的图形探索性数据分析 (EDA) 工具的集合,其主要动机是测试作为大多数测量过程基础的假设。
4-plot 包括以下内容:
- 运行图:运行序列图用于测试固定位置和变化。它具有以下轴:
- 纵轴:Y i
- 水平轴: i
- 滞后图:滞后图是一种散点图,其中一个变量滞后于另一个变量。在这里,滞后是指经过一段固定时间后变量的值。对数图可用于测试过程的随机性,并可提供有关过程分布的重要信息。
- 纵轴:Y i
- 横轴:Y ik
- 直方图:直方图是数据值与其在数据集中的频率的关系图。直方图用于了解过程的分布,即是否均匀、正态等。
- 纵轴:计数/频率/概率。
- 横轴:Y
- 正态概率:正态概率图用于了解过程分布与正态分布的接近程度。
- 纵轴:有序 Y i
- 横轴:正态分布 N(0,1)的理论值。
4-plot可以回答以下问题:
- 过程是否可控、稳定和可预测?
- 过程是否相对于位置漂移?
- 过程是否随变异而漂移?
- 数据是随机的吗?
- 观察是否与相邻观察相关?
- 如果分布不是随机的,那么分布是什么?
- 样本均值是否是该过程的一个很好的估计量,如果不是,什么是一个好的估计量?
可以用 4-plot 验证的一些假设是:
- 随机生成。
- 固定分布。
- 具有固定位置的分布
- 随时间有固定变化的分布。
有一些基本假设遵循 4-plot 的必要性:
- 如果固定位置假设成立,那么运行序列图将是平坦且无漂移的。
- 如果固定变异假设成立,那么运行序列图中的垂直分布在整个水平轴上将大致相同。
- 如果随机性假设成立,那么滞后图将不会形成任何类型的结构。
- 如果正态分布假设成立,则直方图将是钟形图。
如果上述所有假设都成立,则过程处于控制之中。
执行:
- 在这个实现中,我们还将使用statsmodels库以及一些常见的数据科学包(Numpy、Pandas 和 Seaborn)。所有这些库都预装在 Colab 中,可以使用pip install安装在本地环境中。
- 对于此代码,我们将使用热流计数据集。数据集可以从这里下载。
Python3
# code
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
%matplotlib inline
heat_flow = pd.read_csv('heat_flow.txt', header = None)
heat_flow.head()
sns.set_style('darkgrid')
# plot different components of 4 plot
fig, ax = plt.subplots(2,2)
sns.lineplot(x = pd.Series(heat_flow.index),y = heat_flow[0],ax = ax[0,0])
ax[0,0].set_title('Run Sequence Plot')
pd.plotting.lag_plot(heat_flow[0],ax = ax[0,1])
ax[0,1].set_title('Lag Plot with k=1')
sns.histplot(heat_flow[0],kde = True,ax = ax[1,0])
ax[1,0].set_title('Histogram')
sm.ProbPlot(heat_flow[0]).qqplot(line ='s', ax = ax[1,1],color = 'blue');
ax[1,1].set_title('Normal Probability Plot')
plt.show()
0
0 9.206343
1 9.299992
2 9.277895
3 9.305795
4 9.275351
- 我们可以从上面的 4-plot 推断:
- 在这里,运行序列图非常平坦且无漂移。因此,固定位置假设成立。
- 运行序列图也有一个非常相似的垂直分布。因此,固定变差假设成立。
- 在这里,滞后图不会生成任何非随机模式。因此,我们可以假设分布是随机的。
- 在这里,直方图生成非常对称的钟形曲线分布。因此,该过程是正态分布的。
- 实际上,可以通过正态概率图生成与正态分布非常相似的散点来确认上述观点。
参考:
- NIST手册