在多要素所構(gòu)成的系統(tǒng)中,當(dāng)研究某一個要素對另一個要素的影響或相關(guān)程度時蜈出,把其他要素的影響視作常數(shù)(保持不變)秩伞,即暫時不考慮其他要素影響,單獨研究兩個要素之間的相互關(guān)系的密切程度饮睬,所得數(shù)值結(jié)果為偏相關(guān)系數(shù)租谈。也就是我們在論文中看到的control variables(Age, educateion, gender)等與實驗無關(guān)的變量Z,但是又影響因變量Y。
在多元回歸分析中割去,在消除其他變量影響的條件下窟却,所計算的某兩變量之間的相關(guān)系數(shù)。在多元相關(guān)分析中呻逆,簡單相關(guān)系數(shù)可能不能夠真實的反映出變量X和Y之間的相關(guān)性夸赫,因為變量之間的關(guān)系很復(fù)雜,它們可能受到不止一個變量的影響咖城。這個時候偏相關(guān)系數(shù)是一個更好的選擇茬腿。
假設(shè)我們需要計算X和Y之間的相關(guān)性,Z代表其他所有的變量宜雀,X和Y的偏相關(guān)系數(shù)可以認(rèn)為是X和Z線性回歸得到的殘差Rx與Y和Z線性回歸得到的殘差Ry之間的簡單相關(guān)系數(shù)切平,即pearson相關(guān)系數(shù)。
得到便相關(guān)系數(shù)partial correlation coefficient辐董。?x,y是想要分析相關(guān)的變量悴品,z是想要control的變量。
R简烘,Matlab 和spss上實現(xiàn):
R method 1:借助工具包“dplyr"里面的函數(shù)pcor.test
library(dplyr)
stats2 <- pcor.test(X,Y,Z,method="pearson")
methods:"pearson", "spearman"苔严,"kendall"
Results:
R method 2:用定義,借助工具包“stats"里面的cor.test,lm夸研,residuals函數(shù)
library(stats)
r1 <- residuals(lm(formula=X~Z))
r2 <- residuals(lm(formula=Y~Z))
stats3 <- cor.test(r1,r2,method="pearson")
這樣寫lm 函數(shù)邦蜜,線性回歸擬合的方程為:X=B1*Z+B01; Y= B2*Z+B02, 默認(rèn)線性回歸的函數(shù)是有截距的。
Results:
Matlab:利用partialcorr 函數(shù)
[rho,p_value] = partialcorr(X,Y,Z,'type','Pearson');
Results:
Matlab method 2:用回歸誤差相關(guān)的思路來求偏相關(guān)系數(shù)(錯誤代碼示例)
[B1,BINT1,R1,RINT1] = regress(X,Z);?
[B2,BINT2,R2,RINT2] = regress(Y,Z);?
[rho,p_value] = corr(R1,R2,'type','Pearson');
這樣寫regress 函數(shù)亥至,線性回歸擬合的方程為:X=B1*Z; Y= B2*Z悼沈,默認(rèn)回歸函數(shù)沒有截距。
Results:
注意:結(jié)果不一樣姐扮,貌似做了同樣的事情絮供,得不到相同的結(jié)果。其實是因為Matlab regress函數(shù)的特殊用法茶敏,需要一個全一向量來占位b0
?正確代碼示例
[B1,BINT1,R1,RINT1] = regress(X,[ones(size(Z,1),1),Z]);?
[B2,BINT2,R2,RINT2] = regress(Y,[ones(size(Z,1),1),Z]);?
[rho,p_value] = corr(R1,R2,'type','Pearson');
這樣寫regress 函數(shù)壤靶,線性回歸擬合的方程為:X=B1(1,1)*1+B1(1惊搏,2)*Z; Y= B2(1贮乳,1)*1+B2(1,2)*Z. 由于regress默認(rèn)回歸函數(shù)沒有截距恬惯,所以要自己添加一個全1的向量向拆,回歸結(jié)果中這個時候B1(1,2)(B2(1酪耳,2))才是變量Z的系數(shù)浓恳,B1(1,1)(B1(1,2))是截距.
Results:結(jié)果與上面一致了
SPSS:
Results: