O pacote validate destina-se a fazer a verificação de seus dados de foma fácil e reprodutível. O pacote permite testar seus dados contra regras predefinidas de forma direta ou através de conjuntos de regras importadas de arquivos estruturados ou de formato livre Desta forma, permite-se ao auditori investigar e visualizar os resultados de uma etapa de validação de dados.
Existem alguns substantivos relacionados à infra-estrutura oferecida pelo validar:
Existe um verbo denominado:
confront: avalia a validação das regras no contexto de um ou mais conjunto de dados
Aqui está um exemplo demonstrando o fluxo de trabalho típico
In [14]:
data(women)
summary(women)
In [15]:
head(women)
O processo de validação de dados visa verificar se um conjunto de dados reúne presunções ou expectativas coincidem com os dados analisados. Através do pacote validate isso fica mais rápido e fácil de verificar. Vejamos:
In [10]:
install.packages("validate", repos="https://cloud.r-project.org")
In [11]:
library(validate)
In [ ]:
Vamos construir uma regra de validação para ser aplicada no data frame women:
In [13]:
cf <- check_that(women, height > 0, weight > 0, height/weight > 0.5)
summary(cf)
O check_that retorna um objeto que contém todos os tipos de informações sobre os resultados da validação.A maneira mais fácil para verificar os resultados é através da função summary que irá retornar um data frame com as seguintes informações:
Quantos dados itens foram verificados contra cada regra Quantos itens passaram, falharam ou resultaram em NA Se a seleção resultou em um erro (não pôde ser executada) ou deu um erro A expressão que na verdade foi avaliada para executar a verificação.
Esta mesma informação pode ser vista graficamente
In [16]:
barplot(cf,main="Controles sobre o conjunto de dados - Women")
São usados para armazenar, investigar e manipular o conjunto de regras
In [18]:
v <- validator(height > 0, weight > 0, height/weight > 0)
v
O objeto de validação armazena a regra e a associa nomes a ela para futura referência. Para verificar isso, basta que confrontemos os dados com as regras de validação que definimos:
In [19]:
cf <- confront(women,v)
cf
O objeto cf contém os resultado do dado verificado em women contra o que se definiu em v. O fato de não se ter nem avisos(warnings) nem erros indica que cada regra pôde ser avaliada com sucesso.
Agora, suponha que esperamos que o IMC (peso dividido pela altura ao quadrado) de cada item deve ser inferior a 23. Precisamos expressar o peso em quilogramas e a altura em metros, o IMC será:
$ \begin{equation} IMC = \frac{peso\times0.45359}{(altura\times0.0254)^2} \end{equation} $
Além disso, suponha que nós suspeitamos que o IMC médio está entre 22 e 22,5. Vamos criar outro objeto validador que primeiro calcula o IMC e depois testar se a valores de IMC de acordo com nossa suspeita.
In [20]:
v <- validator(
IMC := (weight*0.45359)/(height*0.0254)^2
, height > 0
, weight > 0
, IMC < 23
, mean(IMC) > 22 & mean(IMC) < 22.5
)
v
A verificação fica fácil agora:
In [21]:
cf <- confront(women,v)
summary(cf)
O resultado do confrontamento de um objeto de validação com um conjunto de dados é um objeto de classe confrontation
Por padrão os agregados são produzidos pela regra.
In [23]:
cf <- check_that(women, height>0, weight>0,height/weight < 0.5)
aggregate(cf)
Para agregar por registro use by="record"
In [24]:
head(aggregate(cf,by='record'))
Os resultados agregados podem ser classificados automaticamente. Os registros com mais violações ou regras que mais violaram são ordenadas pelos maiores valores.
In [25]:
sort(cf)
Os objetos de confrontamento podem ser filtrados com um único [], como os vetores, a fim de obter um sub-objeto somente referente a regra selecionada.
In [27]:
summary(cf[c(1,3)])
Por padrão, todos os erros e avisos são detectados quando as regras de validação são confrontadas com dados. Este pode ser desligado, definindo a opção raise para "errors" ou "all".
In [31]:
v <- validator(heite > 0, weight>0)
summary(confront(women, v))
Enquanto aqui ele é gerado imediatamente
In [32]:
confront(women, v, raise='all')
Ele armazenam um conjunto de regras, opcionalmente com alguns metadados por regra. Atualmente, as funções a seguir podem ser usadas para obter ou definir metadados:
Os nomes das regras podem ser definidos via linha de comando, ao definir um objeto do validador.
In [34]:
v <- validator(rat = height/weight > 0.5, htest=height>0, wtest=weight > 0)
names(v)
Tente também:
In [35]:
names(v)[1] <- "ratio"
v
Algumas informações gerais são obtidas com: summary
In [36]:
summary(v)
O número de regras pode ser obtido via length
In [37]:
length(v)
Com variables é posssível obter as variáveis que ocorrem por regra, ou sobre todas as regras.
In [38]:
variables(v)
In [39]:
variables(v,as="matrix")
O validador de objetos pode ser obtido via:
In [40]:
v[c(1,3)]
In [41]:
v['ratio','wtest']
Ou para retornar um único valor
In [42]:
v[[1]]
In [ ]: