本節書摘來自華章計算機《r語言資料挖掘:實用項目解析》一書中的第2章,第2.1節,作者[印度]普拉迪帕塔·米什拉(pradeepta mishra),譯 黃芸,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
探索性資料分析是資料挖掘中不可或缺的一環。它包括資料集中變量的數值描述和圖形化表示,這将使資料集變得易于了解并有助于使用者快速得出結論。對資料集有一個初步的了解很重要,比如該選擇什麼樣的變量進行分析、不同變量之間的關聯等。建立交叉二維表有助于了解分類變量之間的關系,并對資料集實施經典統計檢驗來驗證對可測試資料的種種假設。
通過本章的學習,讀者應了解以下知識點:
如何使用基本統計獲悉單個和多個變量的屬性。
如何計算兩個或多個變量之間的相關性和關聯性。
執行多中繼資料分析。
任意資料集的各種機率函數的統計特性。
對資料進行統計檢驗,進而做出假設。
對比兩個或多個樣本。
要實作一個資料集的一進制統計,我們需要按照兩類方法進行:一種是針對連續型變量的方法;另一種是針對離散或分類變量的方法。對連續型變量的一進制統計包括數值測度,例如平均數(平均值)、方差、标準差、分位數、中位數等。平均值代表資料集中的每一個點,方差表示單個資料點與平均值(即分布中心)之間的波動/偏離。分位數也稱作百分位數,即将分布切分為100等分。第10個百分位數等同于第一個十分位數,第25個百分位數等同于第1個四分位數,第75個百分位數等同于第3個四分位數。
此外還有集中趨勢測度,用以了解一個資料集的一進制特性。中位數和衆數描述的是位置,但仍可以用衆數來檢查一個連續型變量是否是一個雙峰值序列。若是雙峰值序列,計算分布中心會很困難。計算有序資料或等級資料的平均值時,将其表示出來是個好主意,建議用中位數或者衆數來表示一進制統計結果。通過比較平均值、中位數、衆數與偏度、峰度以及标準差,将得到一個關于資料分布形狀的清晰描繪。所有這些關于集中趨勢測度和離中趨勢測量都可以通過單行指令算得,也可以用如下多行獨立的代碼。
這裡,我們将用到diamonds.csv和cars93.csv兩個資料集。它們都是r中的内置庫,作示範之用。
讓我們在r中加入幾行代碼,以便更好地了解這兩個資料集:

cars93.csv資料集包含之前提到的變量名,它有27個變量和93條觀測記錄。變量類型可用str()函數輸出:
一些連續型變量(price、mpg.city和mpg.highway)和離散型變量(type、airbags和man.trans.avail)的一進制統計計算在這裡顯示。你可以練習餘下的變量,以便全面了解這個資料集。
mean()函數用于計算算數平均值,median()函數用于計算中位數,range()函數用于計算由min()和max()組成的向量。var()函數用于計算樣本方差,cor()函數用于計算兩個向量之間的相關性。rank()函數用于計算得到一個由向量中值的排位組成的向量。quantile()函數用于算得一個向量,該向量包括原向量的最小值、下四分位數、中位數、上四分位數及其最大值。
對單變量使用summary()函數的代碼如下:
現在我們來看在資料框上使用summary函數所得到的輸出結果。如果是一個連續型變量,計算的是集中趨勢測度;如果是一個分類變量,則計算的是分類頻數。代碼如下:
對于rpm、horsepower等的連續型變量,summary指令輸出的是最小值、第1個四分位數、平均值、中位數、第3個四分位數和最大值。單變量統計分類變量,如car type、airbags、manual transmission availability等,輸出的是頻數表。頻數最高的類被稱作衆數類。
有fivenum()和describe()函數也可産生類似的概括統計,它們比summary函數提供了更多的輸出資訊:
hmisc庫中的describe()函數可用于加深對資料描述的了解:
apply()函數也可用于進行一進制概括統計。一進制統計描繪了分布的形狀:
為了了解一個變量分布的形狀,我們可以利用偏度和盒狀圖,也可以在庫(e1071)中調用skewness函數:
我們可以建立自定義函數,再結合apply()函數來測量偏度:
偏度是就對稱分布的一種測度,其值展現了一個分布是正偏斜還是負偏斜。若偏度值為0或接近0,則表明分布是對稱的,且平均值、中位數和衆數完全相等;若偏度值小于0,則表明平均值小于衆數,因為正态分布的極端值都偏向了負數;若偏度值大于0,則表明平均值大于衆數,因為正态分布的極端值集中在右邊部分。因為離群點的識别與移除都非常重要,是以測量偏度将對此有益,但這不是鑒别離群點的唯一方法。其他方法還有盒狀圖以及自定義的異常監測公式。如果觀察之前那三個變量,可以發現price、mpg.city和mpg.highway的偏度都大于0,這表示離群點可能在價格正态分布曲線的正數側。為了驗證離群點的存在,我們可以畫出盒狀圖并輸出離群點。