1. 程式人生 > 其它 >檢視變數詳情(分佈指標(偏度和峰度)、稀疏性、缺失形、相關性)

檢視變數詳情(分佈指標(偏度和峰度)、稀疏性、缺失形、相關性)

1.1 變數概況

(1)可以通過attributes()函式給出資料集的屬性列表,其中包括變數名稱($names),資料集格式($class)一級列名($row.names)三個部分,由此可以對資料集結構有一個整體的把握。

library("MASS")

attributes(Insurance)

(2)函式str()可以進一步檢視資料集的內部結構,可以看到觀測樣本數,變數數,各變數的型別及取值情況。

str(Insurance)

(3)函式summary()可以更進一步檢視變數情況,對於定性變數,會給出其頻數,對於定性變數會給出最小值(Min),一分位點(1st Qu),中位數(Median

),均值(Mean),三分位點(3st Qu),最大值(Max)這6個指標。若均值比中位數高很多,則表明該變數可能存在極大的異常值。

1.2 變數詳情

1)若想獲得更細節的變數情況,則可以考慮使用Hmisc包中的describe()函式來獲得,給出樣本總個數(n),缺失樣本數(missing),水平個數(unique),並列出每一個水平的取值,頻數,頻率。

library(Hmisc)

describe(Insurance[,1:3])

結果分析:District變數共有64條取值,無缺失值,且含有4個水平,分別為1234,各水平的頻數都是16,頻率為25%

2)服務於金融的軟體包,其中包含一些基礎的統計、引數估計、假設檢驗等相關函式,

basicStata()是一個用於計算時間序列資料基礎統計指標的函式,也可以用於一般資料集。

Holders變數為例,輸出的指標包括觀測樣本數(nobs)、缺失值(NAs)、最大值、最值、1分位數、3分位數、均值、中位數、和、標準誤差均值(SE Mean)、95%的置信水平下均值的置信下限(LCL Mean/置信上限(UCL Mean)、方差(Variance)、標準誤差(Stdev)、兩個分佈指標----偏度(Skewnes)、峰度(Kurtosis)。

library(fBasics)

basicStats(Insurance$Holders)

結果分析:資料集共23359位,約2.3

=萬投保人資訊,且在具體的區域District、發動機排量Group、年齡段Age情況下,平均有365位投保人,對於該變數均值的真實值位於區間[209521](置信下/上限)中,有95%的可信度。

1.2.1分佈指標

分佈指標的偏度和峰值也可以使用timeDate軟體包中的skewness()kurtosis()兩個函式分別計算得到,也是一個服務於金融工程領域的軟體包。

偏度是用於衡量資料的偏倚程度,也就是資料的對稱程度,若以一個正太分佈為基準的指標,即正太分佈為完全對稱分佈,其偏度為0;當該指標取值在[-11]區間,則說明資料分佈的對稱性較強,即不存在明顯的左偏或者右偏情況;當該指標絕對值大於1,即超出該區間,則認為資料存在顯著偏倚。且為正值時表示該資料的總體取值大於均值,即有右偏的趨勢。反之,負值表示左偏趨勢。峰度經常與偏度共同使用,用於衡量資料分佈形態的陡緩程度,也可以說時集中與分散程度,若以一個正太分佈為基準的指標,當其值為0,說明其集散程度與正太分佈相同,又稱為標準峰度,當峰度大於0則表示該資料分佈與正太分佈相比較為陡峭,為尖頂峰度,當峰度小於0表示其與正太分佈相比較為平坦,為平頂峰度。峰度的絕對值數值越大表示其分佈形態的陡緩程度與正太分佈的差異程度越大。

library(timeDate)

skewness(Insurance[,4:5])

kurtosis(Insurance[,4:5])

1.2.2稀疏性

資料的稀疏性時對高維資料而言,我們使用Matrix軟體包進行研究,現在嘗試使用Matrix這種的sparseMatirx()函式生成稀疏資料集

library(Matrix)#載入包

i=sample(1:10,10,replace = F)#110中無放回的抽取10個數

j=sample(1:10,10,replace = F)#110中無放回的抽取10個數

(A=sparseMatrix(i,j,x=1))#對第ij列的元素取值為1,其他元素為空

local<-which(A==1,arr.ind = T) #local變數記錄非空元素位置

plot(local,pch=22)#對如上local變數值繪製散點圖,模擬稀疏矩陣散點圖

1.2.3 缺失值

資料中的缺失值很常見,我們可以使用mice軟體包中的md.pattern()函式來獲取其中的缺失值分佈情況,軟體包mice專注與多重查補技術(Multiple Imputation),即對缺失值等資料不足情況的處理技術。

在上述describe()的輸出結果中,我們知道資料集Insurance中各變數不含有缺失值,因此在64*5個取值中,隨機選出10個,將其轉變為缺失值NA,再使用md.pattern()函式來獲取這10個缺失值的分佈情況。

library("mice")

for(i in 1:10){

row=sample(1:64,1) #164中隨機選出一個數,作為第i個缺失值所在行的序號

col=sample(1:5,1) #15中隨機選出一個數,作為第i個缺失值所在列的序號

Insurance[row,col]=NA #Insurance資料集的第row行,第col列設定為缺失值NA

}

md.pattern(Insurance) #顯示資料集中缺失值的分佈情況

結果分許:由圖可知,第54行有0個缺失值,第5行有1個變數的缺失值,且缺失值變數為District,其他依次類推,表中輸出結果的最後一行統計出了各變數有缺失值的樣本個數,其和為缺失值個數10

1.2.4 相關性

使用函式cor()來衡量變數之間的相關性,其取值在-11之間,其絕對值大小表示兩變數相關性的大小,越接近1相關性越大,其符號的正負表示兩個變數之間時正向還是負向關係。

一般來說,當相關係數的絕對值高於0.75,我們就認為相關度比較高,具體需要根據其他變數間的先慣性高低來判斷所考察變數間的相關程度。

使用rattle軟體包匯包中的weather資料集來說明:

library(rattle)

data("weather")

head(weather[,12:21]) #以第1221列這10各連續變數

var<-c(12:21)#設定1221列標量的列號向量var

cor_matrix<-cor(weather[var],use="pairwise")#10個變數兩兩計算相關係數

cor_matrix

使用Ellipse軟體包中的plotcorr()函式來繪製相關圖:

install.packages("ellipse")

library(ellipse)

library("ellipse")

plotcorr(cor_matrix,col=rep(c("white","black"),5))#對相關係數矩陣繪製相關圖

結果分析:圓形的寬窄表示相關性的高低,兩個變數對應的圓形越窄,表明其相關性越高,做對角線10個圓形已經窄成10條線段,因為它們自己的相關度為1,為完全相關,圓形傾斜的方向表示相關性的正負,向右傾斜表示正相關,向左傾斜表示負相關。

上圖相關係數矩陣是對稱的,可以新增type引數選擇僅輸出上半部分或者下半部分:

plotcorr(cor_matrix,diag=T,type="lower",col=rep(c("white","black"),5))

本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/15243402.html