Corrplot Machine $ double.eps пропущенное значение

Я хочу нарисовать график корреляций.

features = features[,-2]
features<- scale(features[2:ncol(features)],center=TRUE,scale=TRUE);
correlationmatrix <- cor(features)
corrplot(correlationmatrix, order = "hclust")

До 3-й строчки все работает нормально. При запуске corrplot() я получаю:

Ошибка в if (min (corr) ‹-1 - .Machine $ double.eps || max (corr)> 1 + .Machine $ double.eps) {: отсутствует значение, где требуется TRUE / FALSE


person tesgoe    schedule 24.02.2014    source источник
comment
Приведите образец ваших данных, чтобы создать воспроизводимый пример .   -  person tonytonov    schedule 27.02.2014


Ответы (1)


Скорее всего, это происходит из-за того, что вы пытаетесь построить корреляционную матрицу с пропущенными значениями (NA).

К сожалению, corrplot не справляется с ними должным образом ...

Вы можете сами построить график значений с помощью другой техники.

Однако вместо этого я нашел простой способ обойти это. Я бы не советовал вам его использовать, по моим данным, он работал нормально. Вы также потеряете возможность отображать важные тесты с помощью corrplot.

M=cor(values,use="pairwise.complete.obs")
p = M
p[is.na(M)]=0.2 
p[is.na(M)==F]=0
M[is.na(M)]=0
corrplot(M, method="circle", is.corr=T, p.mat=p, sig.level=0.1, order = "FPC")

К сожалению, я не могу опубликовать получившееся изображение, поскольку я только что присоединился, и мне не хватает этой «репутации stackoverflow».

введите описание изображения здесь

Надеюсь, это поможет вам или другому человеку с той же проблемой.

person ManuelLevi    schedule 03.11.2014