Добавьте p-значения в corrplot матрицу

Я рассчитал корреляцию Спирмена между двумя матрицами и нарисовал значения r, используя corrplot. Как я могу построить только значимые корреляции (то есть только те корреляции, имеющие значение p ниже 0,00, и удалить те, которые имеют более высокое значение p, даже если это сильные корреляции - высокое значение r). Я сгенерировал корреляционную матрицу, используя corr.test в пакете psych, поэтому у меня уже есть значения p в cor.matrix$p.

Это код, который я использую:

library(corrplot)
library(psych)
corr.test(mydata_t1, mydata_t2, method="spearman")
M <- corrplot(cor.matrix$r, method="square",type="lower",col=col1(100),is.corr=T,mar=c(1,1,1,1),tl.cex=0.5)

Как я могу изменить его, чтобы отображать только значимые корреляции?


person Francesca de Filippis    schedule 15.01.2014    source источник
comment
Что вы хотите сделать с ячейками, где корреляции больше нуля?   -  person Sven Hohenstein    schedule 16.01.2014
comment
Может быть, я плохо объяснил... Я хочу построить положительную и отрицательную корреляции со значением p ‹ 0,05. Если p>0,05, я хочу белую клетку...   -  person Francesca de Filippis    schedule 16.01.2014


Ответы (3)


Взгляните на примеры corpplot. сделать ?corrplot. У него есть варианты делать то, что вы хотите. Вы можете нанести p-значения на сам график, что, я думаю, лучше, чем ставить звезды, поскольку людям, не знакомым с этой терминологией, есть еще кое-что, на что нужно обратить внимание. чтобы поместить p-значения на график, сделайте это corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "p-value"), где cor.matrix - это объект, содержащий результат cor.test. Опция insig может содержать:

  • p-значения (как показано выше)
  • убрать незначительные корреляции с помощью corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "blank")`
  • Вычеркнуть (поставить крестик) несущественные корреляции) с опцией corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "pch") (ПО УМОЛЧАНИЮ)
  • Ничего не делать с сюжетом, с corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "n")

Если вам нужны звезды, p-значение на графике матрицы корреляции - взгляните на этот поток Correlation Corrplot Configuration

Хотя я должен сказать, что мне очень нравится элегантное решение @sven hohenstein.

person infominer    schedule 15.01.2014

Создайте копию cor.mat и замените соответствующие коэффициенты корреляции на ноль:

cor.matrix2 <- cor.matrix

# find cells with p-values > 0.05 and replace corresponding
# correlations coefficients with zero
cor.matrix2$r[cor.matrix2$p > 0.05] <- 0

# use this matrix for corrplot
M <- corrplot(cor.matrix2$r, method="square",type="lower",col=col1(100),
              is.corr=T,mar=c(1,1,1,1),tl.cex=0.5)

Замененные значения будут отображаться в виде белой ячейки.

person Sven Hohenstein    schedule 15.01.2014
comment
А если я хочу построить все корреляции, но добавить звездочку в ячейки со значимой корреляцией? - person Francesca de Filippis; 16.01.2014
comment
@FrancescadeFilippis Это еще одна проблема. Вы должны задать новый вопрос. - person Sven Hohenstein; 16.01.2014