Tenho problemas ao usar as funções cor()
e cor.test()
.
Eu só tenho duas matrizes (apenas valores numéricos e o mesmo número de linhas e colunas) e quero ter o número de correlação e o valor p correspondente.
Quando uso cor(matrix1, matrix2)
, obtenho os coeficientes de correlação para todas as células. Eu só quero um número único como resultado de cor.
Além disso, quando cor.test(matrix1, matrix2)
eu recebo o seguinte erro
Error in cor.test.default(matrix1, matrix2) : 'x' must be a numeric vector
Como posso obter valores p para matrizes?
Você encontra as tabelas simples que quero correlacionar aqui:
http://dl.dropbox.com/u/3288659/table_exp1_offline_MEANS.csv
http://dl.dropbox.com/u/3288659/table_exp2_offline_MEANS.csv
r
correlation
L_T
fonte
fonte
cor(as.vector(matrix1), as.vector(matrix2))
?Respostas:
Se você simplesmente deseja calcular a correlação entre os dois conjuntos de valores, ignorando a estrutura da matriz, pode converter as matrizes em vetores usando
c()
. Então sua correlação é calculada porcor(c(matrix1), c(matrix2))
.fonte
read.csv
que você provavelmente usou, retorna adata.frame
que não é amatrix
. Portanto, você precisa convertê-lo em ummatrix
comas.matrix
antes de torná-lo um vetor longoc()
e fornecer os resultadoscor
. Aqui está uma linha:cor(c(as.matrix(matrix1)), c(as.matrix(matrix2)))
Você não disse nada sobre o que seus dados realmente são. Mesmo assim...
Suponha que suas matrizes tenham colunas representando dois conjuntos de variáveis (diferentes) e (o mesmo número de) linhas representando casos.
Análise de correlação canônica
Nesta situação, uma análise de correlação mais estruturada potencialmente interessante é encontrar as correlações canônicas . Isso pressupõe que você deseja resumir o relacionamento entre os dois conjuntos de variáveis em termos de correlação (ões) entre combinações lineares de
matrix1
colunas e combinações lineares dematrix2
colunas. E você desejaria fazer isso se suspeitasse que havia um espaço de pequena dimensionalidade, talvez até 1, que revelasse uma estrutura de correlação subjacente entre os casos, obscurecida por sua realização nos atuais sistemas de coordenadas definidas por variáveis. Consequentemente, o valor dessa correlação (canônica) resumiria, em certo sentido, uma relação linear multivariada entre as duas matrizes. De fato, enquanto o CCA trabalha para matrizes com diferentes números de variáveis, ele se reduz à correlação de Pearson quando cada 'matriz' é apenas uma única coluna.Implementação
A análise de correlação canônica é descrita na maioria dos textos de análise multivariada, o que talvez seja mais útil se você estiver satisfeito com a álgebra matricial até a análise própria. É implementado como
cancor
na base R e também no pacote CCA , que é descrito aqui .fonte
cancor(matrix1, matrix2)
.matrix1
Se você interpretar livremente a correlação para significar similaridade, poderá usar uma definição baseada no produto interno, como:
Com seus dados, isso rende 0,996672.
A alternativa, se a estrutura da matriz não for importante, é simplesmente achatar as matrizes em vetores e usar a medida de correlação de sua escolha. Como não conheço a distribuição dos seus dados, usei o produto escalar, para obter 0,976.
De qualquer maneira, parece que seus dados estão altamente correlacionados.
fonte