Skip to contents

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).

Usage

compare_iqa(
  df,
  methods = c("CETESB", "IGAM"),
  id_cols = NULL,
  details = FALSE,
  missing_policy = c("paired"),
  ...
)

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. Se NULL, 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 iqa para todos os metodos (ex.: altitude_m, censor_policy). allow_partial, classification, method, details e pesos nao 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 em motivo_<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 com phosphorus_basis explicito, e cloreto. Informe esses argumentos em ...; eles valem para ambos os metodos (o CETESB ignora nitrate_unit).

  • Metodo indisponivel em iqa_methods nao 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 = TRUE anexa 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
#>