熱線電話:13121318867

登錄
首頁精彩閱讀R語言典型相關分析
R語言典型相關分析
2017-07-18
收藏

R語言典型相關分析

1 關鍵點:典型相關分析

典型相關分析是用于分析兩組隨機變量之間的相關程度的一種統計方法,它能夠有效地揭示兩組隨機變量之間的相互(線性依賴)關系

例如 研究生入學考試成績與本科階段一些主要課程成績的相關性

將研究兩組變量的相關性問題轉化為研究兩個變量的相關性問題 此類相關為典型相關#

2 分類:

總體典型相關

樣本典型相關

3 R語言提供的計算函數:

典型相關計算 cancor(x,y,xcenter=TRUE,ycenter=TRUE)

x,y是相應的數據矩陣 xcenter,ycenter是邏輯變量 TRUE是將數據中心化 FALSE是不中心化

4 分析結果含義
cor是典型相關系數
xcoef是對應于數據x的系數 又稱關于數據x的典型載荷即樣本典型變量U系數矩陣A的轉置
xcenter是數據X的中心 即數據X的樣本均值
y是對應于數據x的系數 又稱關于數據y的典型載荷即樣本典型變量V系數矩陣B的轉置
ycenter是數據Y的中心 即數據Y的樣本均值

5 分析步驟
(1.)載入原始數據 data.frame
(2.)原始數據標準化 scale
(3.)典型相關分析 cancor
(4.)相關系數顯著性檢驗 corcoef.test.R

I.典型相關分析的計算

現對20名中年人測得三個生理指標:體重(X1) 腰圍(X2) 脈搏(X3);三個訓練指標:引體向上(Y1) 起座次數(Y2) 跳躍次數(Y3) 試分析這組數據的相關性
#用數據框的形式輸入數據矩陣
test<-data.frame(
  X1=c(191, 193, 189, 211, 176, 169, 154, 193, 176, 156,
       189, 162, 182, 167, 154, 166, 247, 202, 157, 138),
  X2=c(36, 38, 35, 38, 31, 34, 34, 36, 37, 33,
       37, 35, 36, 34, 33, 33, 46, 37, 32, 33),
  X3=c(50, 58, 46, 56, 74, 50, 64, 46, 54, 54,
       52, 62, 56, 60, 56, 52, 50, 62, 52, 68),
  Y1=c( 5, 12, 13,  8, 15, 17, 14,  6,  4, 15,
        2, 12,  4,  6, 17, 13,  1, 12, 11,  2),
  Y2=c(162, 101, 155, 101, 200, 120, 215,  70,  60, 225,
       110, 105, 101, 125, 251, 210,  50, 210, 230, 110),
  Y3=c(60, 101, 58, 38, 40, 38, 105, 31, 25, 73,
       60, 37, 42, 40, 250, 115, 50, 120, 80, 43)
)
#為了消除數量級的影響 將數據標準化處理 調用scale函數
test<-scale(test)
#對標準化的數據做典型相關分析
ca<-cancor(test[,1:3],test[,4:6])
#查看分析結果
ca

結果說明:

1) cor給出了典型相關系數;xcoef是對應于數據X的系數, 即為關于數據X的典型載荷; ycoef為關于數據Y的典型載荷;xcenter與$ycenter是數據X與Y的中心, 即樣本均值;

2) 對于該問題, 第一對典型變量的表達式為

U1 = -0.17788841x1 + 0.36232695x2 - 0.01356309x3

U2 = -0.43230348x1 + 0.27085764x2 - 0.05301954x3

U3 = -0.04381432x1 + 0.11608883x2 + 0.24106633x3

V1 = -0.08018009y1 - 0.24180670y2 + 0.16435956y3

V2 = -0.08615561y1 + 0.02833066y2 + 0.24367781y3

V3 = -0.29745900y1 + 0.28373986y2 - 0.09608099y3

相應的相關系數為:p(U1,V1)=0.79560815 ,p(U2,V2)=0.20055604 ,p(U3,V3)=0.07257029

可以進行典型相關系數的顯著性檢驗, 經檢驗也只有第一組典型變量.

下面計算樣本數據在典型變量下的得分:
#計算數據在典型變量下的得分 U=AX  V=BY
U<-as.matrix(test[, 1:3])%*% ca$xcoef ; U
V<-as.matrix(test[, 4:6])%*% ca$ycoef ; V
#調整圖形
opar <- par(mfrow = c(1, 1),mar = c(5,4,1,1))
#畫出以相關變量U1、V1和U3、V3為坐標的數據散點圖
plot(U[,1], V[,1], xlab="U1", ylab="V1")
plot(U[,3], V[,3], xlab="U3", ylab="V3")
#調整圖形
par(opar)

散點圖可知 第一典型相關變量分布在一條直線附近;第三典型相關變量數據很分散。因為第一典型變量其相關系數為0.79560815,接近1,所以在一直線附近;第三典型變量的相關系數是0.07257029,接近于0,所以很分散。
II.典型相關系數的顯著性檢驗

作為相關分析的目的 就是選擇多少對典型變量?因此需要做典型相關系數的顯著性檢驗。若認為相關系數k為0 就沒有必要考慮第k對典型變量了
#相關系數檢驗R程序
corcoef.test<-function(r, n, p, q, alpha=0.1){
   #r為相關系數 n為樣本個數 且n>p+q
   m<-length(r); Q<-rep(0, m); lambda <- 1
   for (k in m:1){
     #檢驗統計量
     lambda<-lambda*(1-r[k]^2);
      #檢驗統計量取對數
     Q[k]<- -log(lambda)  
   }
   s<-0; i<-m
   for (k in 1:m){
     #統計量  
     Q[k]<- (n-k+1-1/2*(p+q+3)+s)*Q[k]
      chi<-1-pchisq(Q[k], (p-k+1)*(q-k+1))
      if (chi>alpha){
         i<-k-1; break
      }
      s<-s+1/r[k]^2
   }
  #顯示輸出結果 選用第幾對典型變量
    i
}
source("corcoef.test.R")
#輸入相關系數r,樣本個數n,兩個隨機向量的維數p和q,置信水平a(缺省值為0.1)
corcoef.test(r=ca$cor,n=20,p=3,q=3)
#程序輸出值為典型變量的對數

最終程序運行結果顯示選擇第一對典型相關變量。我們只利用第一典型變量分析問題,達到降維的目的。

write.csv(test,"test_test.csv")

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢