【R描述統計分析】多元數據的數據特徵與相關分析


在R中,計算多元數據的均值與方差採用數據框的結構輸入數據,計算比較方便。

二元數據的數據特徵及相關係數

例如對礦石中的兩種成分進行統計分析:
在這裏插入圖片描述

ore<-data.frame(
     x=c(67, 54, 72, 64, 39, 22, 58, 43, 46, 34),
     y=c(24, 15, 23, 19, 16, 11, 20, 16.1, 17, 13)
)
ore.m<-mean(ore); ore.m
ore.s<-cov(ore); ore.s
ore.r<-cor(ore); ore.r

attach(ore)
cor.test(x,y)

cor.test(x,y, method="spearman")

cor.test(x,y, method="kendall")

mean( ) 函數 計算均值
cov( ) 函數 計算協方差
cor( ) 函數 計算相關矩陣(相關係數)
cov.wt 計算加權協方差
cor.test 計算相關性檢驗
cov(ore) = var(ore)

二元數據的相關性檢驗

對於二元數據:
在這裏插入圖片描述
可以計算出樣本的相關係數r
且總體的相關係數爲:
在這裏插入圖片描述
當樣本的個數n充分大時,樣本的相關係數r可以作爲總體相關係數的估計,即樣本個數較大時,樣本相關,總體也相關。
問題是:當樣本個數n取到多少時,樣本相關才能得到總體相關?

Ruben置信區間的近似逼近公式

Ruben(魯賓)給出了總體相關係數的區間估計的近似逼近公式
設n是樣本個數,r是樣本相關係數,u是標準正態分佈的上α/2分位點,則計算
在這裏插入圖片描述
按照上述計算公式,編寫R程序:

ruben.test<-function(n, r, alpha=0.05){
   u<-qnorm(1-alpha/2)
   r_star<-r/sqrt(1-r^2)
   a<-2*n-3-u^2; b<-r_star*sqrt((2*n-3)*(2*n-5))
   c<-(2*n-5-u^2)*r_star^2-2*u^2
   y1<-(b-sqrt(b^2-a*c))/a
   y2<-(b+sqrt(b^2-a*c))/a
   data.frame(n=n, r=r, conf=1-alpha, 
      L=y1/sqrt(1+y1^2), U=y2/sqrt(1+y2^2))
}

將n,r調入已編好的ruben.test() 函數中
在這裏插入圖片描述
①n=6,r=0.8
置信區間爲(﹣0.095,0.97),其置信下界是負數,即使r=0.8,也不能說明總體是相關的
②n=25,r=0.7
置信區間爲(0.41,0.85),此時基本能說總體是相關的

關於置信區間的近似逼近方法還有David提出的圖表方法,Kendall和Stuart提出的Fisher逼近方法等。

Pearson相關性檢驗

確認總體是否相關最有效的方法是作總體(X,Y)^T 的相關性檢驗,可以證明
在這裏插入圖片描述
服從自由度爲n-2的t分佈
利用此分佈的性質,可以對數據X和Y的相關性進行檢驗,該方法稱爲Pearson相關性檢驗。
此外,還有Spearman秩檢驗和Kendall秩檢驗,R軟件中的cor.test()提供了這三種檢驗方法。

cor.test()使用方法

cor.test(x,y,
alternative = c("two.sided","less","spearman"),
method = c("pearson","kendall","spearman"),
exact = NULL, conf.level = 0.95,...)

在這裏插入圖片描述
另一種使用格式:

cor.test(formula, data, subset, na.action, ...)

多元數據的數字特徵及相關矩陣

關於相關性檢驗,R軟件沒有爲多元數據提供更多的函數,仍是cor.test()作兩兩分量的相關性檢驗
例:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
從計算結果可以看出,X1,X2,X3兩兩均是不相關的

多元數據的圖表示方法

輪廓圖

outline<-function(x, txt=TRUE){
   # x is a matrix or data frame of data
   if (is.data.frame(x)==TRUE)
      x<-as.matrix(x)
   m<-nrow(x); n<-ncol(x)
   plot(c(1,n), c(min(x),max(x)), type="n", 
        main="The outline graph of Data",
        xlab="Number", ylab="Value")
   for(i in 1:m){
      lines(x[i,], col=i)
      if (txt==TRUE){
         k<-dimnames(x)[[1]][i]
         text(1+(i-1)%%n, x[i,1+(i-1)%%n], k)
      }
   }
}

在這裏插入圖片描述

星圖

在這裏插入圖片描述
R軟件中給出了作星圖的函數stars()

stars(x)

在這裏插入圖片描述
調整stars中的參數:

stars(x, full=FALSE, draw.segments = TRUE, 
key.loc = c(5,0.5), mar = c(2,0,0,0) )

在這裏插入圖片描述

調和曲線圖

調和曲線圖是Andrews提出來的三角表示法,其思想是將多維空間中的一個點對應於二維平面的一條直線,對於p維數據,假設X_r是第r觀測值,即
在這裏插入圖片描述
則對應的調和曲線是
在這裏插入圖片描述
n次觀測數據對應n條曲線,在同一張紙上就是一張調和曲線圖,當各變量數據的數值相差太大時,先標準化再畫圖。
按照上述計算式,編寫調和曲線函數:

unison<-function(x){
   # x is a matrix or data frame of data
   if (is.data.frame(x)==TRUE)
      x<-as.matrix(x)
   t<-seq(-pi, pi, pi/30)
   m<-nrow(x); n<-ncol(x)
   f<-array(0, c(m,length(t)))
   for(i in 1:m){
      f[i,]<-x[i,1]/sqrt(2)
      for( j in 2:n){
          if (j%%2==0) 
             f[i,]<-f[i,]+x[i,j]*sin(j/2*t)
          else
             f[i,]<-f[i,]+x[i,j]*cos(j%/%2*t)
      } 
   }
   plot(c(-pi,pi), c(min(f),max(f)), type="n", 
        main="The Unison graph of Data",
        xlab="t", ylab="f(t)")
  for(i in 1:m) lines(t, f[i,] , col=i)
}

unison(x)得到圖像如下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章