Извлечение парных корреляций из корреляционной матрицы

У меня есть корреляционная матрица (скажем, 3x3), и я хотел бы извлечь попарные корреляции и поместить их в вектор. То есть я бы хотел перейти от корреляционной матрицы к:

corVec = c(rho_12, rho_13, rho_23)

Я хотел бы иметь возможность сделать это для корреляционных матриц любой размерности.

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

Спасибо!


person Community    schedule 17.03.2013    source источник
comment
Добро пожаловать на сайт. Поскольку речь идет о том, как что-то делать в R, я пометил его для перехода в StackOverflow.   -  person Peter Flom    schedule 17.03.2013


Ответы (2)


Если корреляционная матрица rho, вы можете извлечь парные корреляции с помощью:

rho[upper.tri(rho)]
person Orlando Mezquita    schedule 17.03.2013
comment
Большое спасибо, что помогло? Вы (или кто-то еще) знаете, в каком порядке мне нужны корреляции, чтобы передать их в функцию normalCopula (из пакета copula)? - person ; 17.03.2013

Предположим, у вас есть data.frame df1 с 3 столбцами.
rho=cor(df1) создаст матрицу 3x3.
Чтобы составить список парной корреляции (data.frame):

require(reshape2)
rho[!upper.tri(rho)]=NA
rho=na.omit(melt(rho,value.name = 'cor')) 
rho=rho[order(-rho$cor),]
person xm1    schedule 25.01.2021