Tengo un $n\times p$ matriz, donde $p$ es el número de genes y $n$ es el número de pacientes. Cualquiera que haya trabajado con estos datos sabe que $p$ es siempre mayor que $n$ . Utilizando la selección de características he conseguido $p$ a un número más razonable, sin embargo $p$ sigue siendo mayor que $n$ .
Me gustaría calcular la similitud de los pacientes en función de sus perfiles genéticos; podría utilizar la distancia euclidiana, pero la distancia de Mahalanobis parece más apropiada porque tiene en cuenta la correlación entre las variables. El problema (como se indica en este Correo electrónico: ) es que la distancia de Mahalanobis, concretamente la matriz de covarianza, no funciona cuando $n < p$ . Cuando ejecuto la distancia de Mahalanobis en R, el error que obtengo es:
Error in solve.default(cov, ...) : system is computationally
singular: reciprocal condition number = 2.81408e-21
Hasta ahora para tratar de resolver esto, he usado PCA y en lugar de usar genes, uso componentes y esto parece permitirme calcular la distancia de Mahalanobis; 5 componentes representan cerca del 80% de la varianza, así que ahora $n > p$ .
Mis preguntas son: ¿Puedo utilizar el PCA para obtener de forma significativa la distancia de Mahalanobis entre los pacientes, o es inapropiado? ¿Existen métricas de distancia alternativas que funcionen cuando $n < p$ y también hay mucha correlación entre los $n$ ¿Variables?
0 votos
El
PCA
podría romper las correlaciones de las variables, a menos que se utilice algo como una rotación oblicua. Tampoco estoy seguro de cómo el reparto de la varianza enPCA
afectará a la distancia de Mahalanobis entre pacientes similares.0 votos
Si el ACP rompe las correlaciones de las variables, ¿podría utilizar alguna otra métrica de distancia (como la distancia de Pearson) en lugar de la distancia de Mahalanobis?
0 votos
No sé lo suficiente como para recomendar más. Esperaba que alguien más se metiera en la conversación :) Teniendo en cuenta cómo las técnicas de reducción de variables como
PCA
trabajo, tengo curiosidad por saber si se puede utilizar cualquier métrica de distancia en las salidas.0 votos
No soy un experto en la materia. Sólo quiero compartir, que tengo un problema similar al suyo, y he utilizado 'cov.shrink' de paquete corpcor .