质量控制p控制图校准数据呈直线的原因及解读求助
P控制图呈现直线异常的排查与解决
问题背景
使用R语言qcc包绘制p控制图时,Phase 1校准数据的图表呈现直线,但数据库包含数千条非均匀分布的定性变量数据,该表现与RStudio自带的orangejuice示例不符,需排查原因。
重现代码
library(qcc) ## Control Charts #Phase 1 View(Amostra_Procon) require(qcc) attach(Amostra_Procon) windows() qcc(Amostra_Procon$NaoAtendidas[Trial], sizes=Size[Trial], type="p") qcc(Amostra_Procon$NaoAtendidas[Trial], sizes=Size[Trial], type="p", newdata=NaoAtendidas[!Trial], newsizes=Size[!Trial]) #Phase2 qcc(Amostra_Procon$NaoAtendidas[Trial], sizes=Size[Trial], type="p", newdata=NaoAtendidas[!Trial], newsizes=Size[!Trial])
异常原因排查
Trial向量取值异常:若Trial是全为TRUE或FALSE的逻辑向量,会导致Phase 1仅选取单一类型的样本;或Trial索引错误,仅筛选出了不合格率完全一致的样本组,最终图表呈现直线。可通过table(Trial)查看分组分布。- 变量类型与对应关系错误:
NaoAtendidas应为每个样本组的不合格数(整数型),Size为对应样本组的总量(整数型)。若两者的比例NaoAtendidas/Size在所有Phase 1样本中完全相等,会直接生成直线;或变量被误转换为比例值而非计数,导致计算异常。 attach()导致变量混淆:使用attach(Amostra_Procon)后,全局环境中若存在同名变量,会导致NaoAtendidas[Trial]与Amostra_Procon$NaoAtendidas[Trial]取到不同数据,进而出现错误图表。- 样本分组逻辑错误:若所有数据被当作单个样本组处理,或分组后每组的不合格率完全一致,也会呈现直线。需确认数据是否按正确的批次/组划分。
解决建议
验证
Trial分组有效性
运行以下代码确认Phase 1的样本数量与分布:table(Amostra_Procon$Trial)确保
TRUE对应的样本是多个不同的组。检查Phase 1的不合格率分布
计算并查看不合格率的统计特征,确认是否存在异常:p_phase1 <- Amostra_Procon$NaoAtendidas[Amostra_Procon$Trial] / Amostra_Procon$Size[Amostra_Procon$Trial] summary(p_phase1) table(p_phase1)若所有
p_phase1值相同,需检查数据采集或预处理是否出错;若存在差异,再排查绘图代码。移除
attach(),使用完整数据框索引
避免变量混淆,修改代码为:library(qcc) # 查看数据结构,确认变量类型 str(Amostra_Procon) # 绘制Phase 1控制图 qcc(Amostra_Procon$NaoAtendidas[Amostra_Procon$Trial], sizes = Amostra_Procon$Size[Amostra_Procon$Trial], type = "p")确认
qcc包版本
运行packageVersion("qcc")检查版本,若版本较旧,使用update.packages("qcc")更新后重试。
内容的提问来源于stack exchange,提问作者Flora Rodrigues
相关产品推荐
相关产品推荐

