怎么用python或者r绘制cusum控制图,或者有什么其他快速的办法绘制
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
CUSUM(Cumulative Sum)控制图是一种用于实时监测过程均值变化的统计工具。在Python中,我们可以使用
scipy.stats
库中的累积和函数,然后配合matplotlib进行绘图。这里是一个简单的例子,展示了如何使用Python绘制CUSUM控制图。首先确保安装了必要的库:
pip install numpy scipy matplotlib pandas
接下来是详细的步骤:
- 导入所需的库:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.stats import cumsum
- 创建一个示例数据集,这个数据集可以代表你的过程测量值。在这个例子中,我们将创建一个正态分布的数据集,其中均值在某个点发生改变。
np.random.seed(42) # 设置随机种子以便于复现结果 # 假设初始过程稳定,均值为50,标准差为10 stable_mean = 50 stable_std = 10 n_stable_points = 100 stable_data = stable_mean + stable_std * np.random.randn(n_stable_points) # 均值在第100个点后变为60 shifted_mean = 60 shifted_data = shifted_mean + stable_std * np.random.randn(len(stable_data)) process_data = np.concatenate((stable_data, shifted_data))
- 计算CUSUM值:
def calculate_cusum(data, target): diff = data - target cusum_values = np.cumsum(diff) return cusum_values target_value = process_data.mean() # 假设我们不知道过程均值发生了变化,所以使用原始数据的均值作为目标值 cusum_values = calculate_cusum(process_data, target_value)
- 绘制CUSUM控制图:
plt.figure(figsize=(12, 6)) plt.plot(process_data, label='Process Data') plt.plot(cusum_values, color='red', linestyle='-', linewidth=2, label='CUSUM') # 添加控制限 upper_control_limit = 3 * np.std(cusum_values) lower_control_limit = - upper_control_limit plt.axhline(linewidth=1, color='black', y=upper_control_limit, ls='--', label='UCL') plt.axhline(linewidth=1, color='black', y=lower_control_limit, ls='--', label='LCL') # 添加垂直线表示均值变化点 plt.vlines(n_stable_points, min(process_data), max(process_data), colors='blue', linestyles='dashed', label='Shift Point') plt.xlabel('Sample Number') plt.ylabel('Value / CUSUM Value') plt.legend() plt.title('CUSUM Control Chart for Process Mean Change Detection') plt.grid(True) plt.show()
这段代码将创建一个包含过程数据和CUSUM值的图表。当过程均值从50变为60时,CUSUM值会显著增加,这表明可能发生了过程变化。
如果你有实际的数据并且想要分析,请替换
process_data
变量为你自己的数据,同时根据实际情况调整控制限。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 基础的图像处理问题求解答
- ¥50 全国两定智慧医保接口开发相关业务文档,以及技术实现流程文档
- ¥15 idea做图书管理系统,要求如下
- ¥15 最短路径分配法——多路径分配
- ¥15 SQL server 2022安装程序(英语)无法卸载
- ¥15 关于#c++#的问题:把一个三位数的素数写在另一个三位数素数的后面
- ¥15 求一个nao机器人跳舞的程序
- ¥15 anaconda下载后spyder内无法正常运行
- ¥20 统计PDF文件指定词语的出现的页码
- ¥50 分析一个亿级消息接收处理策略的问题?