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:
- La distancia de Cook no es adecuada para este tipo de escenarios
- Un vector lleno de valores NaN significa que no hay influencia entre los puntos
- La distancia de Cook es sensible al alto número de características