Ho usato la prcomp()funzione per eseguire un PCA (analisi del componente principale) in R. Tuttavia, c'è un bug in quella funzione in modo che il na.actionparametro non funzioni. Ho chiesto aiuto su stackoverflow ; due utenti hanno offerto due modi diversi di trattare i NAvalori. Tuttavia, il problema con entrambe le soluzioni è che quando esiste un NAvalore, quella riga viene eliminata e non considerata nell'analisi PCA. Il mio set di dati reali è una matrice di 100 x 100 e non voglio perdere un'intera riga solo perché contiene un singolo NAvalore.
L'esempio seguente mostra che la prcomp()funzione non restituisce alcun componente principale per la riga 5 poiché contiene un NAvalore.
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10),
V3 = sample(1:100, 10))
result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x # $
d$V1[5] <- NA # $
result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
Mi chiedevo se posso impostare i NAvalori su un valore numerico specifico quando centere scalesono impostati in TRUEmodo che la prcomp()funzione funzioni e non rimuova le righe contenenti quelle NA, ma non influenzi anche il risultato dell'analisi PCA.
Ho pensato di sostituire i NAvalori con il valore mediano attraverso una singola colonna o con un valore molto vicino a 0. Tuttavia, non sono sicuro di come ciò influenzi l'analisi PCA.
Qualcuno può pensare a un buon modo per risolvere quel problema?
NAvalori : qual è la causa della "mancanza"?