1. Introdução

A intenção desse trabalho é analisar a prática de calibração a cada 5 anos e checagem a cada 2,5 anos de de balões volumétricos e se ela fornece dados para prever a distribuição da ocorrencia de falhas e o alargamento das frequências para os valores recomendados pela ASTM E 542.

Os dados foram retirados dos certificados de calibração. Todos os cálculos e gráficos foram feitos em Rstudio versão 1.3.959 e R base 3.6.3.

2. Dos dados iniciais

Os dados dos certificados de calibração de 150 balões volumétricos de vidro (borossilicato) foram manualmente coletadas de planilhas Excel e em seguidas exportados para o arquivo BV.csv. 8 Os termos “Verificação” e “Checagem” serão usados com o mesmo significado apesar da versão mais atual da ISO IEC 17025 se referir apenas a “Checagem” como o precedimento de confirmação metrológico.

 

setwd("/mnt/DADOS/Data Science/BV")
library(knitr)
library(readr)
BV <- read_csv("BV.csv", col_types = cols(data = col_date(format = "%d/%m/%Y"),
                                          Erro = col_number(),  
    Tipo = col_factor(levels = c("Calibração", 
        "Verificação"))), locale = locale(decimal_mark = ",", 
    grouping_mark = ""))
BV$data = format(as.Date(BV$data,format="%d/%m/%Y"),"%Y")
BV$data = as.numeric(BV$data)

Tabela 1: Cabeçalho dos dados referentes aos 150 Balões e 10 anos de dados. Obs: o valor do “ErroP” se refere ao percentual de erro em relação ao ponto calibrado (volume), ou seja, um balão de 100mL com erro de 0,1mL e um outro de 50mL e erro de 0,05mL, possuem erros de 0,1%.

 n

library(knitr)
kable(summary(BV))
Volume ID data Erro ErroP Tipo
Min. : 5.00 Length:455 Min. :2008 Min. :-0.330000 Min. :0.0000 Calibração :288
1st Qu.: 25.00 Class :character 1st Qu.:2013 1st Qu.:-0.021550 1st Qu.:0.0340 Verificação:167
Median : 50.00 Mode :character Median :2015 Median : 0.006000 Median :0.0695 NA
Mean : 81.36 NA Mean :2014 Mean : 0.005793 Mean :0.1003 NA
3rd Qu.: 50.00 NA 3rd Qu.:2018 3rd Qu.: 0.030100 3rd Qu.:0.1284 NA
Max. :1000.00 NA Max. :2018 Max. : 0.532900 Max. :1.5280 NA

3. Análise exploratória dos dados

Foi realizado então uma plotagem para vizualização da distribuição total dos erros em mL conforme a ocorrência:

 

library(ggplot2)
library(ggthemes)
qplot(Erro, data=BV , geom ="histogram" , fill=Tipo, binwidth=0.02)

Figura 1. Os erros flutuam em torno da média, apesar das diferentes volumes de balões, não há tendência visível.

library(ggplot2)
g= qplot(ErroP, data=BV , geom ="histogram", fill = Tipo, binwidth=0.05 )
g + facet_wrap(~ Tipo, levels(c("Calibração", "Verificação" )))

Figura 2. lado a lado para comparação, dados de calibração e checagem, com valores de erros absolutos e relativos ao volume ensaiado:

4. Distribuição dos erros conforme volume calibrado

Porém sabemos que os erros variam muito conforme a faixa de uso de cada balão. Podemos confirmar isso plotando o erro médio de cada volume ao longo da faixa de uso de cada balão

 

library(ggplot2)
g = invisible(ggplot(BV, aes(x=Volume, y=ErroP))+ stat_summary())
g + xlab("Volume ml em log10") + scale_x_continuous(trans="log10")

Figura 3. Distribuição de % de erros conforme volume do balão. Escala em Log10 para melhor visualização.

Vamos voltar aos valores totais e investigar se os dois principais grupos de dados, “Calibração” e “Verificação” apresentam a mesma média:

 

mean(subset(BV$ErroP, BV$Tipo == "Verificação"))
## [1] 0.09712635
mean(subset(BV$ErroP, BV$Tipo == "Calibração"))
## [1] 0.1021709

Confirmado.

Verifcando agora se os desvios padrão são os mesmos:

 

sd(subset(BV$ErroP, BV$Tipo == "Verificação"))
## [1] 0.1120128
sd(subset(BV$ErroP, BV$Tipo == "Calibração"))
## [1] 0.1266104

  Também equivalentes. Testamos agora com um teste t. Porém antes devemos usar para o campo ErroP nos dados de calibração o mesmo número de medições disponíveis na verificação (167), já que se trata de um teste “pareado” ou seja, a população é a mesma.

 

Verif <- subset(BV,BV$Tipo=="Verificação")
Calib <- subset(BV,BV$Tipo=="Calibração")
Calib2 <- Calib[c(1:167),c(1:6)]  
t.test(Calib2$ErroP,Verif$ErroP,paired = TRUE)
## 
##  Paired t-test
## 
## data:  Calib2$ErroP and Verif$ErroP
## t = 1.1478, df = 166, p-value = 0.2527
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.01181627  0.04463208
## sample estimates:
## mean of the differences 
##               0.0164079

Com um valor-p de 0,25 consideramos que as duas médias são equivalentes.

Visualizamos agora um gráfico boxplot com a plotagem dos quartils:

 

library(ggplot2)
library(ggthemes)
g = ggplot(BV, aes(x=Tipo, y= ErroP)) + scale_x_discrete(name ="Tipo de dado") 
g + geom_boxplot() + ylim(c(-0.1,2))

Figura 4. Boxplot da distribuição de erros % conforme o tipo de dado. Nota-se que acima de um erro de 0,25% há muito poucos outliers. O máximo do eixo y é o valor usado como critério de aceitaão no LCM (2% de erro sobre o valor nominal do balão). Cada caixa engloba 50% dos dados e as linhas verticais acima e abaixo os outros 50%. O restante é considerado outlier.

5. Estabilidade e tendencia dos erros

Resta agora saber se os valores se encotram estávei ao longo do tempo. Vamos visualizar o comportamento desses erros ao longo de 10 anos, traçando uma linha para cada balão volumétrico.

 

cols = rainbow(456, s=.6, v=.9)[sample(1:455,455)]
ggplot(BV, aes(data, ErroP,color=ID))+geom_line(show.legend = FALSE)+ scale_y_log10()+
      ylim(c(-0.1,2))

Figura 5. Série histórica com os dados de ErroP para cada balão. Linhas aparentemente paralelas ao longo do período, variando entre os dados de calibração e verificação.

Investigamos agora se os grupos de “Verificação” e “Calibração” mostram, separadamente, tendências ao longo desses 10 anos. Usaremos uma regressão linear junto a cada grupo:

 

g <- ggplot(BV, aes(data,ErroP)) + geom_point(alpha=1/5)
g +geom_smooth(method=lm, color = 'red')  +  facet_wrap(~ Tipo, levels(c("Calibração", "Verificação" ))) +ylim(c(0,2))

Figura 6. Serie histórica dos erros com separação conforme o tipo de dado, regressão linear como a linha em vermelho.

Separamos agora os balões por volume para verificar tendências individualmente:

 

g1 <- ggplot(BV, aes(data,ErroP, color=Tipo)) + geom_point() +geom_smooth(method=lm, color = 'red') 
g1 + facet_wrap(~Volume)+ylim(c(0,2))

Figura 7. Serie histórica dos erros com separação conforme o volume do balão, regressão linear como a linha em vermelho. Exceto o balão volumétrico de 5ml, todos os volumes apresentam estabilidade nos valores dos erros nos ultimos 10 anos. Para volumes abaixo de 200ml, ha pelo menos 3 mediões durante o período.

Criamos agora dois modelos com os dados de verificação e calibração, v1 e c1 respectivamente. O modelo executa uma regressão usando ErroP como resposta com base na data.

 

v1 = lm(Verif$ErroP ~Verif$data)
c1 = lm(Calib$ErroP ~Calib$data)
v1
## 
## Call:
## lm(formula = Verif$ErroP ~ Verif$data)
## 
## Coefficients:
## (Intercept)   Verif$data  
##  -16.937164     0.008465
c1
## 
## Call:
## lm(formula = Calib$ErroP ~ Calib$data)
## 
## Coefficients:
## (Intercept)   Calib$data  
##   -2.874107     0.001477

Podemos notar pelas inclinações que os valores são realmente muito baixos, A Verificação tem uma tendência positiva de 0,01% de aumento no Erro por ano, já a calibração somente 0,002%.

6. Conclusão:

1- As verificações intermediárias efetuadas no laboratório são estatisticamente equivalentes aos valores de calibração.

2- A maior parte dos balões apresentam estabilidade nas calibrações e verificações, com baixa ou nenhuma tendência de alteração de volume.

3- De 455 medições apenas 6 (figuras 4 e 6) tiveram um erro acima de 0,5% sendo 3 balões de 5 mL (1 reincidente na calibração de 2013 e 2018), 1 de 25mL e 1 de 50mL. Isso suporta uma redução do erro aceitavel para 0,5% com mínimo descarte de ativos.

4- Estes dados confirmam que um emprego da faixa ASTM de 10 anos para calibração e 5 para verificação não trará nenhum impacto analítico ou metrológico aos ensaios acreditados do LCM

7. Referencias:

[1] R Core Team (2020). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.

[2] H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.

[3] ISO/IEC 17025:2017, General requirements for the competence of testing and calibration laboratories.

[4] ASTM (2012) E 542 – 01. Standard Practice for Calibration of Laboratory Volumetric Apparatus.