Calcula o IQA da mesma tabela com cada motor independente (method de
iqa), mantendo a identidade de cada linha, e resume as
diferencas apenas nas linhas validas para todos os metodos
(amostras pareadas).
Arguments
- df
Data frame com as observacoes (nao e modificado).
- methods
Vetor com dois ou mais metodos distintos entre
"CETESB"e"IGAM". O primeiro e a referencia das diferencas.- id_cols
Nomes de colunas que identificam cada linha (ex.:
c("ponto", "data")). Devem ser unicas em conjunto. SeNULL, usa o numero da linha (.row).- details
Logico; anexa os componentes de cada metodo.
- missing_policy
Politica para linhas incompletas. Apenas
"paired"(estatisticas so com linhas validas em todos os metodos).- ...
Argumentos repassados a
iqapara todos os metodos (ex.:altitude_m,censor_policy).allow_partial,classification,method,detailsepesosnao sao aceitos.
Value
Data frame com uma linha por observacao: identificadores,
IQA_<metodo>, classe_<metodo>, elegivel_<metodo>,
motivo_<metodo>, par_valido e, para cada metodo alem do
primeiro, delta_<metodo>_minus_<referencia> e
abs_delta_<metodo>_minus_<referencia>. Atributos:
"summary" (contagens e estatisticas pareadas), "class_transitions",
"methods", "missing_policy" e, se pedido, "components".
Details
Cada metodo usa a sua propria regra oficial de completude (
allow_partial = FALSE); linhas que um metodo nao calcula ficam inelegiveis, com o motivo emmotivo_<metodo>.Os metodos usam entradas diferentes: o CETESB usa nitrogenio total e fosforo total; o IGAM usa nitrato (com
nitrate_unit), fosfato total ou fosforo total comphosphorus_basisexplicito, e cloreto. Informe esses argumentos em...; eles valem para ambos os metodos (o CETESB ignoranitrate_unit).Metodo indisponivel em
iqa_methodsnao gera erro: todas as linhas ficam inelegiveis para ele, com o motivo.As escalas de classe CETESB e IGAM tem rotulos e cortes diferentes. A funcao nao calcula "percentual de concordancia" comparando rotulos; em vez disso devolve a tabela de transicoes de classe (atributo
"class_transitions") e as diferencas numericas.As diferencas usam o IQA nao arredondado. Correlacoes so sao calculadas com pelo menos 3 pares; abaixo disso ficam
NA.details = TRUEanexa os componentes (qi, pesos efetivos) de cada metodo no atributo"components". A funcao nao atribui causa as diferencas.ANA nao e incluida (nao ha motor ANA distinto; ver
system.file("audit", "ANA_VS_CETESB.md", package = "tikatuwq")), nem as rotas legadas/NSF, que sao aproximacoes nao validadas.
Examples
# Dados ilustrativos (nao sao medicoes reais) com as entradas dos dois
# metodos; P4 nao tem cloreto e fica inelegivel para o IGAM.
d <- data.frame(
ponto = c("P1", "P2", "P3", "P4"),
od = c(7, 5, 3, 6), temperatura = 24, cloreto = c(10, 30, 60, NA),
coliformes = c(100, 2000, 20000, 500), ph = c(7.2, 7.5, 7, 7.4),
dbo = c(2, 5, 15, 3), nt_total = c(1, 3, 8, 2), nitrato = c(0.5, 1, 2, 0.8),
p_total = c(0.05, 0.2, 0.8, 0.1), turbidez = c(5, 20, 60, 10),
solidos_totais = c(100, 200, 400, 150)
)
cmp <- compare_iqa(d, id_cols = "ponto", phosphorus_basis = "P",
nitrate_unit = "N", altitude_m = 800)
cmp[, c("ponto", "IQA_CETESB", "IQA_IGAM", "par_valido", "motivo_IGAM")]
#> ponto IQA_CETESB IQA_IGAM par_valido
#> 1 P1 79.06 78.4 TRUE
#> 2 P2 57.22 57.0 TRUE
#> 3 P3 31.18 30.4 TRUE
#> 4 P4 69.21 NA FALSE
#> motivo_IGAM
#> 1 <NA>
#> 2 <NA>
#> 3 <NA>
#> 4 parametros ausentes ou invalidos: cloreto ausente (saturacao de OD)
attr(cmp, "summary")
#> comparacao n_total n_referencia n_metodo n_paired prop_paired
#> 1 IGAM_minus_CETESB 4 4 3 3 0.75
#> mean_diff median_diff sd_diff mae rmse min_diff max_diff
#> 1 -0.5587136 -0.6992367 0.2878892 0.5587136 0.6061471 -0.7493546 -0.2275494
#> cor_pearson cor_spearman
#> 1 0.9999295 1
attr(cmp, "class_transitions")
#> $IGAM_minus_CETESB
#> classe_CETESB classe_IGAM n
#> 2 Otima Bom 1
#> 4 Boa Medio 1
#> 9 Ruim Ruim 1
#>