0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何看懂R中的探索性數(shù)據(jù)分析(附R代碼)

電子工程師 ? 來源:未知 ? 作者:易水寒 ? 2018-11-25 10:52 ? 次閱讀

探索性數(shù)據(jù)分析(EDA)是數(shù)據(jù)項目的第一步。我們將創(chuàng)建一個代碼模板來實現(xiàn)這一功能。

簡介

EDA由單變量(1個變量)和雙變量(2個變量)分析組成。在這篇文章中,我們將回顧一些我們在案例分析中使用的功能:

第1步:取得并了解數(shù)據(jù);

第2步:分析分類變量;

第3步:分析數(shù)值變量;

第4步:同時分析數(shù)值和分類變量。

基本EDA中的一些關鍵點:

數(shù)據(jù)類型

異常值

缺失值

數(shù)值和分類變量的分布(數(shù)字和圖形的形式)

分析結果的類型

結果有兩種類型:信息型或操作型。

信息型:例如繪圖或任何長變量概要,我們無法從中過濾數(shù)據(jù),但它會立即為我們提供大量信息。大多數(shù)用于EDA階段。

操作型:這類結果可直接用于數(shù)據(jù)工作流(例如,選擇缺失比例低于20%的變量)。最常用于數(shù)據(jù)準備階段。

準備開始

如果您沒有這些擴展包,請刪除‘#’來導入:

# install.packages("tidyverse")

# install.packages("funModeling")

# install.packages("Hmisc")

funModeling已發(fā)布更新版本的Ago-1,請更新!

現(xiàn)在加載所需的程序包

library(funModeling)

library(tidyverse)

library(Hmisc)

tl; dr(代碼)

使用以下函數(shù)一鍵運行本文中的所有函數(shù):

basic_eda <- function(data)

{

glimpse(data)

df_status(data)

freq(data)

profiling_num(data)

plot_num(data)

describe(data)

}

替換data為您的數(shù)據(jù),然后就可以啦!

basic_eda(my_amazing_data)

創(chuàng)建示例數(shù)據(jù):

使用heart_disease數(shù)據(jù)(來自funModeling包)。為了使本文容易理解,我們只選取四個變量。

data=heart_disease %>% select(age, max_heart_rate, thal, has_heart_disease)

第一步:了解數(shù)據(jù)

統(tǒng)計第一個例子中觀測(行)和變量的數(shù)量,并使用head顯示數(shù)據(jù)的前幾行。

glimpse(data)

## Observations: 303

## Variables: 4

## $ age 63, 67, 67, 37, 41, 56, 62, 57, 63, 53, 57, ...

## $ max_heart_rate 150, 108, 129, 187, 172, 178, 160, 163, 147,...

## $ thal 6, 3, 7, 3, 3, 3, 3, 3, 7, 7, 6, 3, 6, 7, 7,...

## $ has_heart_disease no, yes, yes, no, no, no, yes, no, yes, yes,...

獲取有關數(shù)據(jù)類型,零值,無窮數(shù)和缺失值的統(tǒng)計信息:

df_status(data)

## variable q_zeros p_zeros q_na p_na q_inf p_inf type unique

## 1 age 0 0 0 0.00 0 0 integer 41

## 2 max_heart_rate 0 0 0 0.00 0 0 integer 91

## 3 thal 0 0 2 0.66 0 0 factor 3

## 4 has_heart_disease 0 0 0 0.00 0 0 factor 2

df_status會返回一個表格,因此很容易篩選出符合某些條件的變量,例如:

有至少80%的非空值(p_na < 20)

有少于50個唯一值(unique <= 50)

建議:

所有變量都是正確的數(shù)據(jù)類型嗎?

有含有很多零或空值的變量嗎?

有高基數(shù)變量嗎?

更多相關信息請瀏覽:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html

第二步:分析分類變量

freq函數(shù)自動統(tǒng)計數(shù)據(jù)集中所有因子或字符變量:

freq(data)

## thal frequency percentage cumulative_perc

## 1 3 166 54.79 55

## 2 7 117 38.61 93

## 3 6 18 5.94 99

## 4 2 0.66 100

## has_heart_disease frequency percentage cumulative_perc

## 1 no 164 54 54

## 2 yes 139 46 100

## [1] "Variables processed: thal, has_heart_disease"

建議:

如果freq用于一個變量-freq(data$variable),它會生成一個表格。這對于處理高基數(shù)變量(如郵政編碼)非常有用。

將圖表以jpeg格式保存到當前目錄中:

freq(data, path_out = ".")

分類變量的所有類別都有意義嗎?

有很多缺失值嗎?

經(jīng)常檢查絕對值和相對值。

第三步:分析數(shù)值變量

我們將看到:plot_num和profiling_num兩個函數(shù),它們都自動統(tǒng)計數(shù)據(jù)集中所有數(shù)值/整數(shù)變量:

1. 繪制圖表

plot_num(data)

將圖表導出為jpeg格式:

plot_num(data, path_out = ".")

建議:

試著找出極度偏態(tài)分布的變量。

作圖檢查任何有異常值的變量。

更多相關信息請瀏覽:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html

2. 定量分析

profiling_num自動統(tǒng)計所有數(shù)值型/整型變量:

data_prof = profiling_num(data)

## variable mean std_dev variation_coef p_01 p_05 p_25 p_50 p_75 p_95

## 1 age 54 9 0.17 35 40 48 56 61 68

## 2 max_heart_rate 150 23 0.15 95 108 134 153 166 182

## p_99 skewness kurtosis iqr range_98 range_80

## 1 71 -0.21 2.5 13 [35, 71] [42, 66]

## 2 192 -0.53 2.9 32 [95.02, 191.96] [116, 176.6]

建議:

嘗試根據(jù)其分布描述每個變量(對報告分析結果也很有用)。

注意標準差很大的變量。

選擇您最熟悉的統(tǒng)計指標:data_prof %>% select(variable, variation_coef, range_98):variation_coef得到較大值可能提示異常值。range_98顯示絕大部分數(shù)值的范圍。

第四步:同時分析數(shù)值和分類變量

使用Hmisc包的describe。

library(Hmisc)

describe(data)

## data

##

## 4 Variables 303 Observations

## ---------------------------------------------------------------------------

## age

## n missing distinct Info Mean Gmd .05 .10

## 303 0 41 0.999 54.44 10.3 40 42

## .25 .50 .75 .90 .95

## 48 56 61 66 68

##

## lowest : 29 34 35 37 38, highest: 70 71 74 76 77

## ---------------------------------------------------------------------------

## max_heart_rate

## n missing distinct Info Mean Gmd .05 .10

## 303 0 91 1 149.6 25.73 108.1 116.0

## .25 .50 .75 .90 .95

## 133.5 153.0 166.0 176.6 181.9

##

## lowest : 71 88 90 95 96, highest: 190 192 194 195 202

## ---------------------------------------------------------------------------

## thal

## n missing distinct

## 301 2 3

##

## Value 3 6 7

## Frequency 166 18 117

## Proportion 0.55 0.06 0.39

## ---------------------------------------------------------------------------

## has_heart_disease

## n missing distinct

## 303 0 2

##

## Value no yes

## Frequency 164 139

## Proportion 0.54 0.46

## ---------------------------------------------------------------------------

這對于快速了解所有變量非常有用。但是當我們想要使用統(tǒng)計結果來改變我們的數(shù)據(jù)工作流時,這個函數(shù)不如freq和profiling_num好用。

建議:

檢查最小值和最大值(異常值)。

檢查分布(與之前相同)。

更多相關信息請瀏覽:

https://livebook.datascienceheroes.com/exploratory-data-analysis.html

推薦閱讀

(點擊標題可跳轉閱讀)

數(shù)據(jù)科學家需要知道的 5 個基本統(tǒng)計學概念

2 種數(shù)據(jù)科學編程中的思維模式,了解一下

數(shù)據(jù)科學領域,你該選 Python 還是 R ?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • eda
    eda
    +關注

    關注

    71

    文章

    2685

    瀏覽量

    172733
  • 代碼
    +關注

    關注

    30

    文章

    4722

    瀏覽量

    68234
  • 數(shù)據(jù)分析

    關注

    2

    文章

    1410

    瀏覽量

    33987

原文標題:一文讀懂 R 中的探索性數(shù)據(jù)分析

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Mini案例(3)#R語言數(shù)據(jù)分析

    數(shù)據(jù)分析
    未來加油dz
    發(fā)布于 :2023年07月05日 00:28:21

    數(shù)據(jù)分析需要的技能

    將原始數(shù)據(jù)轉換成方便實用的格式,是數(shù)據(jù)分析師必備基礎能力,需要使用的工具有Excel、R語言以及python編程語言等;可視化報表是對創(chuàng)建和研究數(shù)據(jù)的視覺表現(xiàn),方便業(yè)務快速
    發(fā)表于 04-10 15:59

    怎么有效學習Python數(shù)據(jù)分析

    的過程。對于新手,如何學好python,這些很關鍵:Part1:能掌握好Python關鍵代碼以及Pandas、Numpy、Matplotlib、Seaborn這四個基本工具包,便能獨立完成一些簡單的數(shù)據(jù)分析
    發(fā)表于 06-28 15:18

    什么是探索性測試ET

    探索性測試ET(exploratory)是和ST(script based test)相比較而言的.籠統(tǒng)地說,ST就是有確定的步驟和預期目標的測試.探索性測試可以說是一種測試思維。它沒有很多實際
    發(fā)表于 07-05 06:38

    數(shù)據(jù)分析與挖掘實戰(zhàn)》總結及代碼---chap3數(shù)據(jù)探索

    數(shù)據(jù)分析與挖掘實戰(zhàn)》總結及代碼練習---chap3 數(shù)據(jù)探索
    發(fā)表于 05-25 13:25

    R語言)風電機組運行數(shù)據(jù)分析 精選資料分享

    風電機組運行數(shù)據(jù)分析基于R語言,對德國某風電場7臺850kw的風電機組運行數(shù)據(jù)進行分析。約5萬條數(shù)據(jù)。部分
    發(fā)表于 07-12 07:10

    數(shù)據(jù)探索數(shù)據(jù)預處理

    目錄1數(shù)據(jù)探索數(shù)據(jù)預處理21.1 賽題回顧21.2 數(shù)據(jù)探索性分析與異常值處理21.3 相關性
    發(fā)表于 07-12 08:37

    探索性數(shù)據(jù)分析(EDA)及其應用

    所謂探索性數(shù)據(jù)分析(EDA),是指對已有的數(shù)據(jù)(特別是調(diào)查或觀察得來的原始數(shù)據(jù))在盡量少的先驗假定下進行探索,通過作圖、制表、方程擬合、計算
    發(fā)表于 01-24 10:02 ?1496次閱讀
    <b class='flag-5'>探索性</b><b class='flag-5'>數(shù)據(jù)分析</b>(EDA)及其應用

    設計多網(wǎng)絡協(xié)議的Python網(wǎng)絡編程的探索性指南

    很高興看到本書出版了,我要感謝所有為本書的出版做出貢獻的人。本書是Python網(wǎng)絡編程方面的探索性指南,涉及了很多網(wǎng)絡協(xié)議
    發(fā)表于 09-14 10:47 ?5次下載

    探索性數(shù)據(jù)分析系統(tǒng)對基因組醫(yī)學研究的幫助

    基于高性能計算集群這樣的新一代測序器和快速演化分析平臺,基因研究領域已經(jīng)被海量數(shù)據(jù)淹沒。眾多基因、癌癥、醫(yī)學研究機構和制藥公司不斷產(chǎn)生的海量數(shù)據(jù),已不再能被及時的處理并恰當?shù)拇鎯?,甚至通過常規(guī)通訊
    發(fā)表于 10-11 09:46 ?0次下載
    <b class='flag-5'>探索性</b>大<b class='flag-5'>數(shù)據(jù)分析</b>系統(tǒng)對基因組醫(yī)學研究的幫助

    EDA實際應用的典型小案例

    所謂探索性數(shù)據(jù)分析,是指對已有的數(shù)據(jù)(特別是調(diào)查或觀察得來的原始數(shù)據(jù))在盡量少的先驗假定下進行探索,通過作圖、制表、方程擬合、計算特征量等手
    發(fā)表于 04-13 18:38 ?4315次閱讀
    EDA實際應用的典型小案例

    細分模型探索性數(shù)據(jù)分析和預處理

    交流學習!文章較長,建議收藏~ 客戶細分模型是將整體會員劃分為不同的細分群體或類別,然后基于細分群體做管理、營銷和關懷。客戶細分模型常用于整體會員的宏觀性分析以及探索性分析,通過細分建立初步認知,為下一步的
    的頭像 發(fā)表于 11-08 16:05 ?1528次閱讀
    細分模型<b class='flag-5'>探索性</b><b class='flag-5'>數(shù)據(jù)分析</b>和預處理

    磐石測控:PS-2205ST-R旋鈕扭力測試儀的數(shù)據(jù)分析?

    磐石測控:PS-2205ST-R旋鈕扭力測試儀的數(shù)據(jù)分析?
    的頭像 發(fā)表于 02-23 15:57 ?476次閱讀
    磐石測控:PS-2205ST-<b class='flag-5'>R</b>旋鈕扭力測試儀的<b class='flag-5'>數(shù)據(jù)分析</b>?

    Sweetviz讓你三行代碼實現(xiàn)探索性數(shù)據(jù)分析

    Sweetviz是一個開源Python庫,它只需三行代碼就可以生成漂亮的高精度可視化效果來啟動EDA(探索性數(shù)據(jù)分析)。輸出一個HTML。 如上圖所示,它不僅能根據(jù)性別、年齡等不同欄目縱向分析
    的頭像 發(fā)表于 10-17 10:59 ?426次閱讀
    Sweetviz讓你三行<b class='flag-5'>代碼</b>實現(xiàn)<b class='flag-5'>探索性</b><b class='flag-5'>數(shù)據(jù)分析</b>

    Sweetviz: 讓你三行代碼實現(xiàn)探索性數(shù)據(jù)分析

    Sweetviz是一個開源Python庫,它只需三行代碼就可以生成漂亮的高精度可視化效果來啟動EDA(探索性數(shù)據(jù)分析)。輸出一個HTML。 它不僅能根據(jù)性別、年齡等不同欄目縱向分析
    的頭像 發(fā)表于 10-31 10:28 ?902次閱讀
    Sweetviz: 讓你三行<b class='flag-5'>代碼</b>實現(xiàn)<b class='flag-5'>探索性</b><b class='flag-5'>數(shù)據(jù)分析</b>