R提高篇(五): 描述性統計分析


 數據作為信息的載體,要分析數據中包含的主要信息,即要分析數據的主要特征(即數據的數字特征), 對於數據的數字特征, 包含數據的集中位置、分散程度和數據分布,常用統計項目如下:

  • 集中趨勢統計量:  均值(Mean)、中位數(Median)、眾數(Mode)、百分位數
  • 離散趨勢統計量:標准差(sd)、方差(var)、極差(range)、變異系數(CV)、標准誤、樣本校正平方和(CSS)、樣本未校正平方和(USS)
  • 分布情況統計量:偏度、峰度
  • 示例函數

 集中趨勢


  • 均值(mean):描述數據取值的平均位置,指一組數據的平均數,R 函數語法: mean(x, trim = 0, na.rm = FALSE, ...),計算公式為:
  • 中位數(Median): 定義為數據排序位於中間位置的值, R函數語法:median(x, na.rm = FALSE),計算公式:
  • 眾數(Mode): 就是一組數據中占比例最多的那個數, R中未提供直接調用的函數,R算法: names(table(x))[which.max(table(x))]
  • 百分位數(percentile): 是中位數的推廣.將數據按從小到大的排列后,對於0≤p<1,它的p分位點定義, R函數語法:quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,names = TRUE, type = 7, ...),計算公式為:
      • 要計算的點到起始點的距離/終點到起始點的距離=要計算的比例
      • 實際計算中:0.75分位數與0.25分位數(第75百分位數與第25百分位數)比較重要,它們分別稱為上、下四分位數,並分別記為Q3=m0.75,Q1=m0.25
  • 如果一只腳放在攝氏1度的水里,另一只腳放在攝氏79度的水里,平均水溫40度,你感覺舒服? 說明只了解數據的集中趨勢是不夠的,還需要看數據的離散程序

離散趨勢


  • 方差(Variance): 是描述數據取值分散性的一個度量.樣本方差(sample variance)是樣本相對於均值的偏差平方和的平均,記為s2,R函數語法:var(x, y = NULL, na.rm = FALSE, use),計算公式為:
      • 其中x是樣本的均值
  • 標准差(Standard Deviation): 也稱均方差(mean square error),是方差的算術平方根,R函數語法:sd(x, na.rm = FALSE),計算公式為:
  • 極差(Range): 描述樣本分散性的數字特征.當數據越分散,其極差越大,R函數語法: range(..., na.rm = FALSE),計算公式為:
  • 變異系數(CV): 又稱離散系數,是刻划數據相對分散性的一種度量,它是一個無量鋼的量,用百分數表示,R無對應函數,計算公式為:
  • 樣本校正平方和(CSS):無R函數,計算公式:
  • 樣本未校正平方和(USS): 無R函數,計算公式:
  • 四分位差(quartile deviation):也稱為內距或四分間距(inter-quartile range),它是上四分位數(QL)與下四分位數(QU)之差,通常用Qd表示。計算公式為:
  • 標准誤:均值標准誤差就是樣本均值的標准差,是描述樣本均值和總體均值平均偏差程度的統計量,計算公式為:

 分布情況統計


  • 偏度系數:是刻划數據的對稱性指標.關於均值對稱的數據其偏度系數為0,右側更分散的數據偏度系數為正,左側更分散的數據偏度系數為負,偏度系統計算公式:
  • 峰度系數:當數據的總體分布為正態分布時,峰度系數近似為0;當分布較正態分布的尾部更分散時,峰度系數為正;否則為負.當峰度系數為正時,兩側極端數據較多;當峰度系數為負時,兩側極端數據較少。峰度系數計算公式:

 示例函數


  • 計算各種描述性統計量函數腳本如下:
    setwd("E:\\R") myDescriptStat <- function(x){ n <- length(x)                    #樣本數據個數
      m <- mean(x)                      #均值
      me <- median(x)                   #中位數
      mo <- names(table(x))[which.max(table(x))]  #眾數
      sd <- sd(x)                       #標准差
      v <- var(x)                       #方差
      r <- max(x) - min(x)              #極差
      cv <- 100 * sd/m                  #變異系數
      css <- sum(x - m)^2               #樣本校正平方和
      uss <- sum(x^2)                   #樣本未校正平方和
      R1 <- quantile(x,0.75) - quantile(x,0.25)     #四分位差
      sm <- sd/sqrt(n)                              #標准誤
      g1 <- n/((n-1)*(n-2)*sd^3)*sum((x-m)^3)/sd^3  #偏度系數
      g2 <- ((n*(n+1))/((n-1)*(n-2)*(n-3))*sum((x-m)^4)/sd^4 -(3*(n-1)^2)/((n-2)*(n-3))) #峰度系數
      data.frame(N=n,Mean=m,Median=me,Mode=mo, Std_dev=sd,Variance=v,Range=r, CV=cv,CSS=css,USS=uss, R1=R1,SM=sm,Skewness=g1,Kurtosis=g2, row.names=1) }
  •   示例結果如下:

    > setwd("E:\\R") > source("myDescriptStat.R") > w<-c(75.0,64.0,47.4,66.9,62.2,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)  #學生體重
    > myDescriptStat(w) N Mean Median Mode Std_dev Variance Range CV CSS USS R1 SM 1 15 62.36   63.5 62.2 7.514823 56.47257  27.6 12.05071 2.019484e-28 59122.16 8.9 1.940319 Skewness Kurtosis 1 -0.001013136 0.09653947
  • 繪學生的體重的直方圖和核密度估計圖,並與正態分布的概率密度函數作對照圖,代碼及示例:

    hist(w,freq=FALSE)
    lines(density(w),col="blue")
    x<-44:76
    lines(x,dnorm(x,mean(w),sd(w)),col="red")
  • 示例圖形:
  • 結論:可以通過密度估計曲線與正態分布的概率密度曲線之間差別的大小來判斷數據是否來自正態總體.從上圖看,基本上可以認為學生的體重來自正態總體

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM