4 votos

Comprender la distancia de Cook

Estoy intentando utilizar la distancia de Cook para detectar valores atípicos en conjuntos de datos de alta dimensión.

Sin embargo, he encontrado algunos problemas para hacer tal cosa. Por lo general, una vez que he construido el modelo lineal y calcular la distancia de Cook, todo lo que obtengo es un vector lleno de NaN valores.

He creado un ejemplo ficticio para mostrar mi problema.

set.seed(100)

data <- as.data.frame(cbind(Class=sample(c(1,2),100,replace=T),matrix(runif(10000,min=-10,max=100),nrow=100)))

Con este conjunto de datos, he calculado la distancia de Cook con dos subconjuntos diferentes de marcadores:

# Full of NaN values
mod <- lm(formula=Class ~ ., data=data)
cooksd <- cooks.distance(mod)
print(cooksd)

y

# Values different from NaN
mod <- lm(formula=Class ~ ., data=data[,c(1:51)])
cooksd <- cooks.distance(mod)
print(cooksd)

Así que, no sé si:

  1. La distancia de Cook no es adecuada para este tipo de escenarios
  2. Un vector lleno de valores NaN significa que no hay influencia entre los puntos
  3. La distancia de Cook es sensible al alto número de características

5voto

Pere Puntos 658

El problema aquí no es sólo que la distancia de Cook no sea adecuada para este tipo de escenario: ni siquiera la regresión lineal clásica es adecuada. Aquí tenemos más de 100 predictores pero sólo 10 observaciones. Por lo tanto, los mínimos cuadrados ordinarios no dan una solución única y no se pueden estimar las varianzas de los parámetros y los residuos. Puede ver que para los datos de su ejemplo no se puede estimar ni siquiera un parámetro:

> summary(mod)

Call:
lm(formula = Class ~ ., data = data)

Residuals:
ALL 100 residuals are 0: no residual degrees of freedom!

Coefficients: (1 not defined because of singularities)
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)  2.951e+00         NA      NA       NA
V2          -8.333e-03         NA      NA       NA
V3          -2.042e-02         NA      NA       NA
V4          -8.088e-03         NA      NA       NA
V5           2.487e-03         NA      NA       NA
V6          -2.148e-04         NA      NA       NA

(90 lines omitted to keep the post readable)

V97         -1.468e-02         NA      NA       NA
V98          1.155e-02         NA      NA       NA
V99          8.612e-03         NA      NA       NA
V100        -1.547e-04         NA      NA       NA
V101                NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:    NaN 
F-statistic:   NaN on 99 and 0 DF,  p-value: NA

Por la misma razón, no se puede calcular la distancia de Cook. Una definición de la distancia de Cook es:

$$D_i = \frac{e_{i}^{2}}{s^{2} p}\left[\frac{h_{i}}{(1-h_{i})^2}\right]$$

donde $$s^{2} \equiv \left( n - p \right)^{-1} \mathbf{e}^{\top} \mathbf{e}$$ es el error cuadrático medio del modelo de regresión. Por lo tanto, si el error cuadrático medio del modelo de regresión no puede ser calculado o se estima que es cero, la distancia de Cook no puede ser calculada y R sólo da NaN.

Sugiero utilizar un método diferente para ajustar su modelo, como Lasso o mínimos cuadrados parciales, a menos que pueda obtener más observaciones que parámetros.

0 votos

Muchas gracias. ¿Qué técnica sugeriría además para identificar los valores atípicos?

1 votos

No estoy seguro de ello, pero me temo que no hay un proceso tan estándar como la distancia de Cook para las altas dimensiones. Sin embargo, yo intentaría ajustar un modelo, calcular los residuos y medir los más grandes. Una forma más directa de comprobar la influencia podría ser eliminar un punto (o cada punto) y ver cuánto cambia el ajuste, aunque como los métodos de ajuste para altas dimensiones realizan tanto el ajuste como algún tipo de selección de variables, los cambios podrían ser difíciles de medir. Tal vez alguien pueda dar una mejor respuesta a este punto - o incluso vale la pena hacer otra pregunta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X