學習資源分享專題-數據分析與R語言

數據分析概念導入R基礎及數據可視化統計推斷、相關及回歸分類聚類主成分分析因子分析

本周會有很多乾貨推薦,而今天的主題是」數據分析與R語言「課程,這個課程有課件和視頻,可於公眾號聊天窗口回復」數據分析與R語言「免費獲取。

本文會對本課程的系列課件做一個簡單的框架,並對其中基礎的R入門知識做一個簡單的概況總結。

系列課件共有12個,本文會將課件的內容重新整合。

數據分析概念導入

內容見於課件1前半部分

數據分析就是使用統計方法,有目的地對收集到的數據進行分析處理,並且解讀分析結果。

數據分析有一個多層模型,代表著數據分析的全部流程:

Data sources->Data warehouses->Data exploration->Data mining->Data presentations->Marking decisions

Data sources就是源數據,也就是位於文章、信息提供者、功能資料庫上的數據。

Data warehouse:數據倉儲,經過初步整理存儲的結構化信息。

Data exploration、Data Mining及Data presentations分別是數據探索、挖掘及可視化,也就是真正在R完成的工作。

Marking decisions:根據數據得出最終的判斷。

R基礎及數據可視化

內容見於課件1後半部分及課件2

R語言是一種尤其擅長統計分析和可視化的一種編程語言,免費開源,功能強大,且有大量的功能「包」可以直接使用。

R的基本數據結構

R的基本數據結構有向量、因子、數組、矩陣、數據框及列表。

  • 向量

    創建:使用函數c()創建,如x1<>

    重要的創建向量的函數seq(), rep()及letters():

    seq函數可以產生一個等差數列(默認公差1),例如seq(1,5)代表1,2,3,4,5。還可以指定等差數列的公差或長度,如seq(1,100,by=2)代表1-100之間,公差為2的等差數列1,3,5...,99,而seq(1:100,length=1000),則會生成一個1-100之間含有1000個元素的等差數列。

    rep函數可以產生特定長度的相同元素的向量,例如rep(1,5)代表1,1,1,1,1,共有5個元素,每個元素均是1。

    letters是一個內建的字母列表向量,例如如果需要字母表中前十個字母,只需要letters[1:10]即可。

    基本統計函數:mean(),sum(),min(),max(),var(),sd(),prod(),如圖:

    找索引函數which():尋找滿足特定條件的元素的位置。

    倒序和排序函數:rev(), sort()

    尋求幫助:在R中對任何函數不清楚,都可以把它傳給help函數,如help("c")、help("seq")、help("rep")即可打開幫助文檔(雙引號可不加)。

  • 矩陣

    創建:使用matrix()函數創建,如matrix(c(1:12),nrow=3,ncol=4),即可創建一個3行4列的矩陣,其內的元素為按列依次排列的1,2,3...12。

    矩陣轉置及加減運算:t()及『+』與『-』運算符。

    矩陣相乘及對角矩陣函數diag():兩個矩陣的乘法使用%*%運算符,diag()有三個功能,傳入一個矩陣則取出它的對角線元素;傳入一個向量,則生成一個以這個向量為對角線的矩陣;傳入一個數字,則生成一個以此數字為大小的單位矩陣。

    矩陣求逆solve()函數及矩陣特徵值及特徵矩陣eigen():更詳細可以傳入help()函數。

  • 數據框

    數據框是一種非常有用的數據公格式,它可以包含多種數據類型,矩陣只能有一種數據類型。

    創建:使用data.frame()創建,傳入多個向量即可創建一個數據框,如data.frame(seq(16),rep(1,16)),即可創建一個數據框,它的第一列是1-16的自然數,第二列是16個1。

    從文件或剪切板讀入數據創建數數據框:read.table()函數,如read.table("abc.txt")讀取文檔數據,read.table("clipboard",header=T)讀取剪切板數據。

  • 循環語句

    R中的循環語句可以使用for循環或while循環:

    for循環:for (i in 1:60) {xVector[i] = i*2+1},執行後,剛才創建的xVector向量就會變為3,5,7,9...121,共60個元素。

    while循環:i<-1;><-1; zvector[1]="3;" while=""><121) {i="i+1;" zvector[i]="">

    可視化

    先創建一個模擬學生成績的數據框,包含學生的ID及3科成績,如圖。

  • 求每位同學的平均分,每科成績平均分,每位同學的總分,找出總分最高的同學的ID,如圖。


    apply()函數可以對一個數據框的行或列使用一個函數,共有3個參數,第一個參數是數據框,本例中只取第2-4列(第一列為學生ID),第二個參數是行或列的標識,1對每行數據使用函數,2對每列數據使用函數,第三個參數代表要使用的函數。

  • 直方圖、散點圖、列聯表及柱狀圖、餅圖、箱線圖、QQ圖、折線圖、密度圖,結果如圖。

  • 統計推斷、相關及回歸

    內容見於課件3、4、5、6

    統計推斷

    正態檢驗:判斷一組數據是否是滿足正態性可以使用shapiro.test();

    單樣本及雙樣本t檢驗:t.test();

    檢驗樣本間的相關性的卡方檢驗chisq.test(),如圖所示。

    可以看到,由於科目x1是服從均勻分布,科目x2是服從正態分布的,因此x1的正態性檢驗shapiro.test的p值極顯著,而科目x2的p值不顯著。

    t檢驗中,科目x1的均值在90.44,單樣本「均值=80」的檢驗p值顯著,拒絕均值相等假設。雙樣本t檢驗中,如圖,雙樣本t檢驗顯著,因此拒絕均值相等假設(x1均值期望是90,x2均值期望80,所以肯定是拒絕零假設)。

    卡方檢驗有兩種方法,可以直接調用chisq.test(),也可以將列聯表table()結果傳入summary()。卡方檢驗是用於判斷兩個變數的相關性,在本例中是代表一個學生在科目上x1和x2的成績是否有相關性,如是否同時都是高分數、低分數,或當x1高分時x2低分等。

    相關

  • 求相關係數cor(),如cor(student$x1)

  • 相關係數的假設檢驗cor.test(),如cor.test(student$x1)

  • 求協方差矩陣cov(),如cov(student[c(「x1","x2","x3")])

  • 回歸

    回歸有多種:一元線性回歸、多元線性回歸、廣義線性模型及非線性回歸等。

    以下只以一元線性回歸為例,

    使用lm()線性擬合,如要擬合studnet數據框中x1,x2的線性關係,以x2預測x1,則可以使用stuLm <->

    從擬合結果來看,擬合公式為x2=0.09 * x1 + 83.27

    不過呢,方差分析結果表明,這個模型總體不顯著,因此沒有實際意義,其中x2的係數也不顯著。

  • 多元線性回歸

  • 多元線性回歸也是使用lm函數,只是預測變數增多了,如使用x2和x3來聯合預測x1:stuLm <- lm(x1~x2+x3,student)="">

  • 廣義線性模型

  • 廣義線性模型是為了解決預測變數或響應變數是非連續變數的問題,如是與否、對與錯等變數是無法直接使用線性回歸擬合。這時需要將相應的非連續變數轉化一個連續的變數,一般是由一個關聯函數來轉換的。

  • 非線性模型

  • 非線性回歸常見的包括多項式回歸、對數法、指數法和冪函數法等。

    網格方法

    網格方法是一種有別於傳統的線性或非線性回歸的方法,它不考慮特定的線性或非線性模型也可以很好的處理非連續的離散數據。

    網格方法具有一般性,即無論數據是怎樣分布的,也不限於特定的關聯函數類型,此判斷方法都是有效。

    分類

    內容見於課件7、8、課件9前半部分

    什麼是分類?

    分類簡單來說,就是根據文本的特徵或屬性,劃分到已有的類別中。也就是說,這些類別是已知的,通過對已知分類的數據進行訓練和學習,找到這些不同類的特徵,再對未分類的數據進行分類。

    比如天氣預報,可以測定大量的雲層厚度、形狀、風力大小、季節、經緯度數據與此時此地的天氣情況,根據分類演算法,最終找到這些因素與天氣的關係,那麼根據這個對應關係就可以帶入相關信息去預測不同地方不同時間的天氣情況(因素是瞎編的,體會意思就好)。

    分類演算法有很多,如:

  • 線性判別法

  • 聚類判別法

  • 貝葉斯分類器

  • 決策樹

  • 支持向量機

  • 人工神經網路

  • 聚類

    內容見於課件9後半部分及課件10

    什麼是聚類,它與分類有什麼區別?

    聚類不同於分類,它只給出一堆數據,不會有大量的數據供分類演算法去擬合出一個分類程式,只能依靠數據各自的距離特徵,將相近的數據點聚成一起,最後聚成不同的群體。

    所以聚類就是你壓根不知道數據會分為幾類,通過聚類分析將數據聚成多個群體,或者按照用戶要求聚合成幾個群體,聚類不需要對數據進行訓練和學習。

    因此聚類很要求距離參數,有多種距離方法求解:

  • 絕對值距離

  • 歐氏距離

  • 閔可夫斯基距離

  • 切比雪夫距離

  • 馬氏距離

  • Lance和Williams距離

  • 離散變數的距離

  • 主成分分析

    內容見於課件11

    主成分分析不同於回歸或分類,它是一種降維方法,簡單來說,就是它會對擬合中的多個預測變數進行重新的整合,最後提取出不同的主成分,主成分之間顯出最大的個別差異 。每個主成分是多個原始變數進行線性組合之後的結果。

    通過析取主成分顯出最大的個別差異,也用來削減回歸分析和聚類分析中變數的數目。如果能用不超過3-5個成分就能解釋變異的80%,就算是成功的主成分分析。

    以分類中的天氣預報為例,分類演算法會使用雲層厚度、形狀、風力大小、季節、經緯度數據去預測天氣情況,而使用主成分分析,那麼這5個變數可能就會被整合成2個主成分,通過這兩個主成分來對數據分析,降維方法尤其在預測變數過多時,如幾十個變數的情況下很有幫助(這裡的天氣預報只用5個變數預測,並不算多,可以不使用主成分分析)。

    因子分析

    內容見於課件12

    什麼是因子分析,它與主成分分析有什麼區別?

    因子分析是降維的一種方法,是主成分分析的推廣和發展。它是通過對變數間相關關係的探測,將原始變數分組,即將相關性高的變數分為一組,用共性因子來代替該變數。

    因子分析組合的是相關性較強的原始變數,目的是找到在背後起作用的少量關鍵因子。因此不同於主成分分析往往很難用業務場景的角度解釋主成分,因子分析的結果往往更容易用業務知識去加以解釋。


    還有更多文章,請移步公眾號閱讀


    推薦閱讀:

    在excel中多條件匯總數據
    數據銀行的建設思路
    從H1B中籤數據看什麼專業好留在美國(下)
    李德毅:讓雲計算、大數據助推並成就人工智慧 | 李德毅 | 數據觀 | 中國大數據產業觀察
    今日數據行業日報(2017.03.22)

    TAG:學習 | 語言 | 數據分析 | 分享 | 數據 | 資源 | 資源分享 | 專題 | 分析 |