Skip to contents

Busca pares ordenados determinante -> dependiente. El cumplimiento es la proporción de filas que coincide con el valor modal del dependiente para cada valor del determinante; por eso una dependencia aproximada señala directamente las filas minoritarias que pueden ser errores de carga.

Usage

detectar_dependencias(
  datos,
  umbral = 0.995,
  muestra = 1e+05,
  max_columnas = 100L,
  umbral_casi_constante = 0.95,
  umbral_casi_clave = 0.8,
  incluir_claves = FALSE,
  min_observaciones = 10L,
  max_ejemplos = 5L,
  max_comparaciones = 200000L,
  max_trabajo = 1e+08
)

Arguments

datos

Tabla que se desea examinar.

umbral

Cumplimiento mínimo en [0, 1].

muestra

Máximo de filas; Inf desactiva el muestreo.

max_columnas

Máximo de columnas analizadas.

umbral_casi_constante

Proporción modal a partir de la cual un determinante se descarta por casi constante.

umbral_casi_clave

Tasa de valores distintos a partir de la cual un determinante se descarta por casi clave, salvo que incluir_claves sea verdadero.

incluir_claves

Si se incluyen determinantes únicos, que satisfacen dependencias de forma trivial.

min_observaciones

Mínimo de pares presentes para informar una dependencia.

max_ejemplos

Máximo de contradicciones concretas en evidencia.

max_comparaciones

Máximo de pares determinante-dependiente que se comparan. Inf desactiva el presupuesto.

max_trabajo

Máximo de unidades fila-par estimadas. Inf desactiva el presupuesto que escala con las filas; se combina con max_comparaciones y se aplica el límite más restrictivo.

Value

Data frame de clase dependencias_funcionales, ordenado por cumplimiento y soporte. Los atributos muestreado, filas_analizadas, columnas_analizadas, columnas_omitidas, columnas_descartadas y truncado documentan el alcance efectivo. n_pares_posibles, n_pares_comparados, n_pares_sin_comparar y max_comparaciones documentan el presupuesto de comparaciones. trabajo_estimado, trabajo_comparado, trabajo_sin_comparar, unidad_trabajo y max_trabajo documentan el presupuesto por filas. columnas_descartadas es un data frame que explica por qué una columna no se usó como determinante. Una columna cuyo nombre se repite en la tabla no entra en ninguna dependencia, de ningún lado, y se descarta con el motivo nombre_repetido: la fila diría k -> k sin decir cuál columna es cuál.

Details

Para evitar resultados vacíos o triviales, se omiten por defecto las claves únicas, los determinantes cuya tasa de valores distintos alcanza umbral_casi_clave, los determinantes cuya moda alcanza umbral_casi_constante y los dependientes constantes. El valor predeterminado de umbral = 0.995 exige que como máximo 5 de cada 1.000 filas contradigan la relación. Los ausentes de cualquiera de las dos columnas no integran el cálculo. El descarte ocurre antes de construir agrupaciones. El valor predeterminado umbral_casi_clave = 0.8 excluye determinantes con menos de 1,25 filas por valor distinto en promedio: aun si cumplen, suelen describir una casi-clave y no una regla reutilizable. Las columnas compuestas —matrices o arreglos de más de una dimensión— no se toman como determinantes ni dependientes: no son valores escalares por fila.

El costo crece aproximadamente como columnas^2 * filas. max_columnas conserva las primeras columnas analizables, max_comparaciones limita el número de pares columna a columna y muestra aplica una única muestra sistemática a toda la tabla, de modo que las relaciones entre filas no se rompen. max_trabajo acota el producto entre pares posibles y filas analizadas. Es un presupuesto estimado, no una medición de segundos: permite que el tope efectivo de pares baje cuando la tabla tiene muchas filas. Los atributos del resultado declaran todos los recortes.

Una muestra conserva cada fila entera, pero no la cantidad de filas por valor: sobre datos agrupados en filas consecutivas, la muestra sistemática toma una fila de cada grupo y el determinante parece una clave. Por eso los descartes por casi-clave y casi-constante se verifican sobre la columna completa; si sólo la muestra los produjo, el motivo es casi_clave_solo_en_muestra o casi_constante_solo_en_muestra, la columna sigue fuera —evaluarla sobre esa muestra daría dependencias exactas sin evidencia— y perfilar() lo declara en cobertura_diagnosticos.

Examples

datos <- data.frame(
  codigo = rep(1:3, each = 4),
  descripcion = rep(c("A", "B", "C"), each = 4),
  valor = seq_len(12)
)
detectar_dependencias(datos, min_observaciones = 4)
#>   determinante dependiente cumplimiento n_evaluados n_grupos n_violaciones
#> 1       codigo descripcion            1          12        3             0
#> 2  descripcion      codigo            1          12        3             0
#>   exacta evidencia
#> 1   TRUE          
#> 2   TRUE