R'deki matrisler arasındaki korelasyon


9

cor()Ve cor.test()işlevlerini kullanmada sorun yaşıyorum .

Ben sadece iki matris (sadece sayısal değerler ve aynı satır ve sütun sayısı) var ve ben korelasyon numarası ve karşılık gelen p-değeri istiyorum.

Kullandığımda cor(matrix1, matrix2)tüm hücreler için korelasyon katsayılarını elde ediyorum. Kor sonucu sadece tek bir sayı istiyorum.

Buna ek olarak cor.test(matrix1, matrix2), aşağıdaki hatayı alıyorum

Error in cor.test.default(matrix1, matrix2) : 'x' must be a numeric vector

Matrisler için p-değerlerini nasıl alabilirim?

Burada ilişkilendirmek istediğim basit tabloları burada bulabilirsiniz:

http://dl.dropbox.com/u/3288659/table_exp1_offline_MEANS.csv

http://dl.dropbox.com/u/3288659/table_exp2_offline_MEANS.csv


4
Ne istediğini biraz belirsiz. Cor (matrix1, matrix2) için sadece bir sonuç istediğinizi söylediğinizde, (matrix1'deki tüm sayılar) ile (matrix2'deki tüm sayılar) ilişkilendirmeye mi çalışıyorsunuz? Bu durumda, cor (as.vector (matrix1), as.vector (matrix2)) olarak deneyebilirsiniz
Marius

Tam olarak göstermesi beklenen p değeri nedir? (yani, hangi hipotezi test ediyorsunuz?)
chl

Hayır, ne kadar benzer olduklarını bilmek için sadece iki matrisi ilişkilendirmek istiyorum. Hücre ile bir karşılaştırma hücresi istemiyorum. Sonuç olarak, her bir pearson korelasyonunun girişte iki vektör kullanarak yaptığı gibi, 0'dan 1'e kadar tek bir sayı istiyorum. Herhangi bir öneri? Beklediğim p değeri bana korelasyonun önemini anlatmalı.
L_T

1
Şunu mu demek istediniz cor(as.vector(matrix1), as.vector(matrix2))?
whuber

Yanıtlar:


13

Matris yapısını yok sayarak iki değer kümesi arasındaki korelasyonu hesaplamak istiyorsanız, matrisleri kullanarak vektörlere dönüştürebilirsiniz c(). Sonra korelasyonunuz tarafından hesaplanır cor(c(matrix1), c(matrix2)).


İşlevinizi kullanarak şu hatayı alıyorum: "cor (c (matrix1), c (matrix2)) hatası: 'x' sayısal olmalı". Ancak tablolarıma hızlı bir şekilde bakarsanız, sadece sayı içerdiklerini fark edersiniz ... Anlamıyorum
L_T

3
Bir R sorunu şu: read.csvmuhtemelen kullandığınız, data.framea olmayan bir döndürür matrix. Bu yüzden uzun bir vektör yapmadan ve sonuçları vermeden önce onu bir matrixile dönüştürmeniz gerekir . İşte bir satırda:as.matrixc()corcor(c(as.matrix(matrix1)), c(as.matrix(matrix2)))
konjugateprior

6

Verilerinizin gerçekte ne olduğu hakkında hiçbir şey söylemediniz. Yine ...

Matrislerinizin iki (farklı) değişken kümesini temsil eden sütunlara ve vakaları temsil eden (aynı sayıda) satıra sahip olduğunu varsayalım .

Kanonik Korelasyon Analizi

Bu durumda, potansiyel olarak ilginç, daha yapılandırılmış bir korelasyon analizi, kanonik korelasyonları bulmaktır . Bu, iki değişken kümesi arasındaki ilişkiyi, matrix1sütunların doğrusal kombinasyonları ile doğrusal kombinasyonları arasındaki korelasyon açısından özetlemek istediğinizi varsayar .matrix2sütunlar. Ve bunu, mevcut değişken tanımlı koordinat sistemlerinde gerçekleştirilmelerinin gizlediği vakalar arasında altta yatan bir korelasyon yapısını ortaya çıkaracak küçük bir boyutsallık, belki de 1 olduğundan şüpheleniyorsanız yapmak istersiniz. Sonuç olarak, bu (kanonik) korelasyonun değeri, bir anlamda, iki matris arasındaki çok değişkenli doğrusal bir ilişkiyi özetleyecektir. Aslında, CCA farklı sayıda değişkene sahip matrisler için çalışırken, her bir 'matris' sadece tek bir sütun olduğunda Pearson korelasyonuna indirgenir.

uygulama

Kanonik korelasyon analizi, çok değişkenli analiz metinlerinin çoğunda açıklanır; bu, özanalize kadar matris cebirinden memnunsanız belki de en yararlıdır. cancorTemel R'de olduğu gibi ve burada açıklanan CCA paketinde de uygulanır .


Merhaba teşekkürler. Verilerim aynı değişkenleri içeren basit iki matris. İki matrisin yapısı aynıdır. Her bir hücredeki değerler, bu değişkenlerin 9 puanlık bir Likert ölçeğinde değerlendirildiği ve katılımcıların ortalamasının alındığı bir deneyin sonucudur. İki matris arasında korelasyon olduğunu bulmak için en iyi strateji hangisidir? R'de bir örnek verebilir misiniz?
L_T

1
R tabanı ile sadece cancor(matrix1, matrix2).
konjugateprior

Ama belki biraz açıklığa kavuşturabilirsiniz. Aramakmatrix1 A. O zaman nedirAij? Bu mui- kişinin tepkisi jLikert eşyası? Kesinlikle hayır. Peki katılımcılar üzerindeki ortalamalar nereden geliyor?
konjugateprior

Merhaba 10 katılımcı vardı, çift uyaranlar arasındaki "tutarlılık derecesini" ifade etmek zorundaydılar (bunun bir benzerlik derecelendirme deneyi olmadığını unutmayın). 2 deney yaptım. sonuçları 2 expdrimental koşulda karşılaştırmak istiyorum. Her hücre, her bir uyaran çifti için katılımcıların değerlendirmelerinin ortalamasıdır. O zaman hala kanor kullanmalı mıyım?
L_T

Kanor kullandım, ancak korelasyonu ifade eden tek bir katsayı değeri veya önemini ifade eden bir p değeri almıyorum. Lütfen yardım et!
L_T

3

Korelasyonu ortalama benzerlik için gevşek bir şekilde yorumluyorsanız, iç ürüne dayanan bir tanım kullanabilirsiniz, örneğin:

cAB=A,BA||Bburada veA,Btr(ABT)x||x,x1/2

Verilerinizle bu 0,996672 verir.

Alternatif, eğer matris yapısı önemli değilse, matrisleri vektörlere basitleştirmek ve seçtiğiniz korelasyon ölçüsünü kullanmaktır. Verilerinizin dağılımını bilmediğim için 0.976 elde etmek için nokta ürünü kullandım.

Eithe3r yolu, verilerinizin yüksek derecede ilişkili olduğu görülüyor.


Bu OP'nin sorduğu rv katsayısı gibi görünüyor : her iki matrisin ne kadar benzer olduğunu söyleyen 0 ile 1 arasında bir değer.
llrs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.