У меня есть корреляционная матрица в excel следующим образом:
dfA <- read.table(text=
"beta1 beta2 beta3 beta4 beta5 beta6 X X2 X3
beta1 1.0000 -0.2515 -0.2157 0.7209 -0.7205 0.4679 0.1025 -0.3606 -0.0356
beta2 -0.2515 1.0000 0.9831 0.1629 -0.1654 -0.5595 -0.0316 0.0946 0.0829
beta3 -0.2157 0.9831 1.0000 0.1529 -0.1559 -0.4976 -0.0266 0.0383 0.0738
beta4 0.7209 0.1629 0.1529 1.0000 -1.0000 -0.2753 0.0837 -0.1445 0.0080
beta5 0.4679 -0.5595 -0.4976 -0.2753 1.0000 0.2757 0.0354 -0.3149 -0.0596
beta6 -0.7205 -0.1654 -0.1559 -1.0000 0.2757 1.0000 -0.0837 0.1451 -0.0081
X 0.1025 -0.0316 -0.0266 0.0837 -0.0837 0.0354 1.0000 0.0278 -0.0875
X2 -0.3606 0.0946 0.0383 -0.1445 0.1451 -0.3149 0.0278 1.0000 0.2047
X3 -0.0356 0.0829 0.0738 0.0080 -0.0081 -0.0596 -0.0875 0.2047 1.0000",
header=TRUE)
У меня есть только матрица корреляции, а не исходные данные, из которых формируется матрица, поэтому я попытался прочитать эту матрицу в матрицу в R с помощью этого кода:
B <- as.matrix(dfA)
Но когда я пытаюсь сформировать матрицу диаграммы рассеяния со следующим кодом:
library(corrplot)
corrplot(B, method="circle")
я получаю сообщение об ошибке
Error in corrplot(B, method = "circle") : The matrix is not in [-1, 1]!
Пожалуйста, помогите мне с этой проблемой.
corrplot
, но ошибка, которую вы получаете, заключается в том, что значения в вашей матрице не находятся в интервале [-1, 1]. может случиться так, что есть проблема с числовой точностью. Глядя на значения матрицы, вероятными нарушителями являются единицы. Они, вероятно, на самом деле 1.000000001 или что-то в этом роде. Внимательно посмотрите на значения, возможно, вам потребуется выполнить небольшую манипуляцию. Перед этим, как говорит BGA, вы должны дважды проверить, какой тип объекта ищетcorrplot
. прочитайте?corrplot
и убедитесь, что его первый аргумент является корреляционной матрицей. - person lmo   schedule 30.04.2016corrplot
. Если я скопирую и вставлю ваш код, он сработает, поэтому, как говорит Имо, он должен быть точным. Попробуйтеcorrplot(round(B, 4), method="circle")
- person user20650   schedule 30.04.2016print(B, digits=15)
посмотреть? (ps. было здорово, что вы добавили свои данные, но иногда нужны более мелкие детали — добавление результатовdput(dfA)
— хороший способ добавить данные) - person user20650   schedule 30.04.2016